Microsoft KB Archive/66943

{|
 * width="100%"|

HOWTO: Determine the Topmost Pop-Up Window

 * }

Q66943

-

The information in this article applies to:


 * Microsoft Win32 Software Development Kit (SDK)
 * Microsoft Windows Software Development Kit (SDK) versions 3.0, 3.1

-

SUMMARY
When an application has many pop-up child windows (with a common parent window), the GetNextWindow function can be used when one pop-up window is closed to determine the next topmost pop-up window that remains.

MORE INFORMATION
The following code fragment shows a window procedure for simple pop-up windows (modified from the PARTY program in Petzold's &quot;Programming Windows&quot;). In the WM_CLOSE case, the handle received by the pop-up window procedure is the handle of the pop-up to be closed. This sample activates the topmost pop-up window that remains by giving it the focus.

  long FAR PASCAL PopupWndProc (hWnd, iMessage, wParam, lParam) HWND    hWnd; unsigned iMessage; WORD    wParam; LONG    lParam; {    HWND     hWndPopup;

switch (iMessage) {       case WM_CLOSE: hWndPopup = GetNextWindow(hWnd, GW_HWNDNEXT); if (hWndPopup) SetFocus(hWndPopup); break; }

return DefWindowProc (hWnd, iMessage, wParam, lParam) ; } NOTE: In Windows 3.1, two messages are sent to an application when its Z- order is changing: WM_WINDOWPOSCHANGING and WM_WINDOWPOSCHANGED. When a window is closed (as in the example shown above) these two message will be sent to all window procedures.