EnableWindow() problem

Tech Tip: Click here to run a free scan for Windows Errors and optimize PC performance



Hello,

I have trouble with AfxGetMainWnd()->EnableWindow() at least on Windows XP. Not tested this . My main application needs to run another GUI program and while this program run should not be accessible for user input. In order to do this I call AfxGetMainWnd()->EnableWindow(FALSE); Start the GUI program Then use a bit of code to wait for the GUI to finish. See snippet below:
HANDLE aHandles[2];
aHandles[0] = GetCurrentProcess();
aHandles[1] = hGUI;
do
{
DWORD dwResult = ::MsgWaitForMultipleObjects(2, aHandles,
FALSE, INFINITE, QS_ALLEVENTS);
if ( !prcGUI.IsRunning() )
break;
} while ( AfxGetThread()->PumpMessage() );

However, when the GUI program stops my main application won't get the focus automatically again after I call AfxGetMainWnd()->EnableWindow(TRUE); The application behaves as being minimized and I have to explicitly click on the program icon in the desktop bar to bring it back up.
I tried different combinations of SetActiveWindow(), SetForegroundWindow(), BringWindowToTop() and SetFocus() but nothing happens.
If I don't use EnableWindow() this problem does not occur.
So in short how to force my application back to the foreground?

Any help appreciated,
Theo
.


Quantcast