Multiple Document Interface

[Many new and intermediate users find it difficult to learn to use MDI applications. Therefore, you should consider other models for your user interface. However, you can use MDI for applications which do not easily fit into an existing model.]

The multiple-document interface (MDI) is a specification that defines a user interface for applications that enable the user to work with more than one document at the same time.

In This Section

Topic Description
About the Multiple Document Interface Describes the Multiple Document Interface.
Using the Multiple Document Interface Explains how to perform tasks associated with the Multiple Document Interface.
MDI Reference Contains the API reference.

MDI Functions

Name Description
CreateMDIWindow Creates a MDI child window.
DefFrameProc Provides default processing for any window messages that the window procedure of a MDI frame window does not process. All window messages that are not explicitly processed by the window procedure must be passed to the DefFrameProc function, not the DefWindowProc function.
DefMDIChildProc Provides default processing for any window message that the window procedure of a MDI child window does not process. A window message not processed by the window procedure must be passed to the DefMDIChildProc function, not to the DefWindowProc function.
TranslateMDISysAccel Processes accelerator keystrokes for window menu commands of the MDI child windows associated with the specified MDI client window. The function translates WM_KEYUP and WM_KEYDOWN messages to WM_SYSCOMMAND messages and sends them to the appropriate MDI child windows.

MDI Messages

Name Description
WM_MDIACTIVATE Sent to a MDI client window to instruct the client window to activate a different MDI child window.
WM_MDICASCADE Sent to a MDI client window to arrange all its child windows in a cascade format.
WM_MDICREATE Sent to a MDI client window to create an MDI child window.
WM_MDIDESTROY Sent to a MDI client window to close an MDI child window.
WM_MDIGETACTIVE Sent to a MDI client window to retrieve the handle to the active MDI child window.
WM_MDIICONARRANGE Sent to a MDI client window to arrange all minimized MDI child windows. It does not affect child windows that are not minimized.
WM_MDIMAXIMIZE Sent to a MDI client window to maximize an MDI child window. The system resizes the child window to make its client area fill the client window. The system places the child window's window menu icon in the rightmost position of the frame window's menu bar, and places the child window's restore icon in the leftmost position. The system also appends the title bar text of the child window to that of the frame window.
WM_MDINEXT Sent to a MDI client window to activate the next or previous child window.
WM_MDIREFRESHMENU Sent to a MDI client window to refresh the window menu of the MDI frame window.
WM_MDIRESTORE Sent to a MDI client window to restore an MDI child window from maximized or minimized size.
WM_MDISETMENU Sent to a MDI client window to replace the entire menu of an MDI frame window, to replace the window menu of the frame window, or both.
WM_MDITILE Sent to a MDI client window to arrange all of its MDI child windows in a tile format.

MDI Structures

Name Description
MDICREATESTRUCT Contains information about the class, title, owner, location, and size of a MDI child window.