i have an application which shows dialogbox on top of all
application . I am using the following code sequence..
BOOL BringWindowOnTop(HWND hWnd)
{
#ifdef _VISTA
// TODO:
// following code for non vista is hanging in vista when used,
// need to figure out the reason and fix it
return TRUE;
#else
HWND hwndForeground = GetForegroundWindow();
// gets the current top most window on the screen.
DWORD dwFGProcessId = 0;
DWORD dwFGThreadId = GetWindowThreadProcessId(hwndForeground,
&dwFGProcessId);
DWORD dwThisThreadId = GetCurrentThreadId();
// attaches the current thread to window on top
AttachThreadInput(dwThisThreadId, dwFGThreadId, TRUE);
::ShowWindow(hWnd, SW_RESTORE);
// Now the window on top is also in the set of windows we are
intersted,
// so bring window on top will put us on top of all windows
BringWindowToTop(hWnd);
SetFocus(hWnd);
// detach from the previously attached thread
AttachThreadInput(dwThisThreadId, dwFGThreadId, FALSE);
return 0;
#endif
}
This api is called from dialogbox in Oninitdialog method it works fine
on xp system but it hanges
on vista when ::ShowWindow(hWnd, SW_RESTORE); is called .
Here the forground window is windows explorer .
and current thread is a user mode application thread which is
different form windows explorer.
Can you please tell me how to fix this on vista ?
Thanks
Rajender saini
No body is replying , are u able to understand my question?