INFO: SetActiveWindow() and SetForegroundWindow() Clarification

ID: Q97925

The information in this article applies to:

SUMMARY

By default, each thread has an independent input state (its own active window, its own focus window, and so forth). SetActiveWindow() always logically sets a thread's active window state. To force a window to the foreground, however, use SetForegroundWindow(). SetForegroundWindow() activates a window and forces the window into the foreground. SetActiveWindow() always activates, but it brings the active window into the foreground only if the thread is the foreground thread.

NOTE: If the target window was not created by the calling thread, the active window status of the calling thread is set to NULL, and the active window status of the thread that created the target window is set to the target window.

Applications can call AttachThreadInput() to allow a set of threads to share the same input state. By sharing input state, the threads share their concept of the active window. By doing this, one thread can always activate another thread's window. This function is also useful for sharing focus state, mouse capture state, keyboard state, and window Z-order state among windows created by different threads whose input state is shared.

On Windows 95 and Windows 2000, SetForegroundWindow only changes the foreground window if the calling application is the foreground window. If SetForegroundWindow is called from a thread that is not in the foreground, the window that is trying to be put in the foreground flashes on the taskbar.

Additional query words:

Keywords          : kbNTOS kbGrpUser kbWinOS kbWndw 
Issue type        : kbinfo

Last Reviewed: December 26, 1998