HOWTO: Create a Hidden MDI Child Window

ID: Q70080


The information in this article applies to:


SUMMARY

Whenever Windows creates a new multiple-document interface (MDI) child window in response to a WM_MDICREATE message, it makes that child window visible.

The information below describes how to create a hidden MDI child window without causing an unattractive "flash" on the screen as the window is created visible and then hidden.


MORE INFORMATION

A code fragment such as the following can be used to create an invisible MDI child:


   MDICREATESTRUCT mcs;            // Structure to pass with WM_MDICREATE.
   HWND            hWndMDIClient;  // The MDI client window.
   HWND            hwnd;           // Temporary window handle.

         ...
   // Assume that you have already filled out the MDICREATESTRUCT.

   // Turn off redrawing in the MDI client window.
   SendMessage(hwndMDIClient, WM_SETREDRAW, FALSE, 0L);

   /*
    * Create the MDI child. It will be created visible, but will not
    * be seen because redrawing to the MDI client has been disabled.
   */ 
   hwnd = (WORD)SendMessage(hwndMDIClient,
                            WM_MDICREATE,
                            0,
                            (LONG)(LPMDICREATESTRUCT)&mcs);

   // Hide the child.
   ShowWindow(hwnd, SW_HIDE);

   // Turn redrawing in the MDI client back on,
   // and force an immediate update.
   SendMessage(hwndMDIClient, WM_SETREDRAW, TRUE, 0L);
   InvalidateRect( hwndMDIClient, NULL, TRUE );
   UpdateWindow( hwndMDIClient );
         ... 


Keywords          : kbMDI kbNTOS kbGrpUser kbWinOS kbWndw 
Version           : 
Platform          : 
Issue type        : kbhowto 

Last Reviewed: March 6, 1999