Like the frame window procedure, an MDI child window procedure uses a special function for processing messages by default. All messages that the child window procedure does not handle must be passed to the DefMDIChildProc function rather than to the DefWindowProc function. In addition, some window-management messages must be passed to DefMDIChildProc, even if the application handles the message, in order for MDI to function correctly. Following are the messages the application must pass to DefMDIChildProc.
Message | Response |
---|---|
WM_CHILDACTIVATE | Performs activation processing when MDI child windows are sized, moved, or displayed. This message must be passed. |
WM_GETMINMAXINFO | Calculates the size of a maximized MDI child window, based on the current size of the MDI client window. |
WM_MENUCHAR | Passes the message to the MDI frame window. |
WM_MOVE | Recalculates MDI client scroll bars, if they are present. |
WM_SETFOCUS | Activates the child window, if it is not the active MDI child window. |
WM_SIZE | Performs operations necessary for changing the size of a window, especially for maximizing or restoring an MDI child window. Failing to pass this message to the DefMDIChildProc function produces highly undesirable results. |
WM_SYSCOMMAND | Handles window (formerly known as system) menu commands: SC_NEXTWINDOW, SC_PREVWINDOW, SC_MOVE, SC_SIZE, and SC_MAXIMIZE. |