HOWTO: Determine the Topmost Pop-Up Window

ID: 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
  • Microsoft Windows 2000

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.

The following code fragment shows a window procedure for simple pop-up windows (modified from the PARTY program in Petzold's "Programming Windows"). 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.

For additional information on changing the Z-order of an MDI window, query on the following words in the Microsoft Knowledge Base:
WM_WINDOWPOSCHANGED and MDICREATESTRUCT and WS_EX_TOPMOST

SUMMARY

Additional query words: WIN16SDK

Keywords : kbNTOS kbWinOS2000 kbSDKWin32 kbGrpUser kbWinOS kbWndw
Version : WINDOWS:3.0,3.1
Platform : WINDOWS
Issue type : kbhowto


Last Reviewed: January 28, 2000
© 2000 Microsoft Corporation. All rights reserved. Terms of Use.