Multiple Document Menus

The frame window of an MDI application should include a menu bar with a Window menu. The Window menu should include items that arrange the child windows within the client window or that close all child windows. The Window menu of a typical MDI application might include the items in the following table.

Menu item Purpose
Tile Arranges child windows in a tile format so that each appears in its entirety in the client window.
Cascade Arranges child windows in a cascade format. The child windows overlap one another, but the title bar of each is visible.
Arrange Icons Arranges the icons of minimized child windows along the bottom of the client window.
Close All Closes all child windows.

Whenever a child window is created, the system automatically appends a new menu item to the Window menu. The text of the menu item is the same as the text on the menu bar of the new child window. By clicking the menu item, the user can activate the corresponding child window. When a child window is destroyed, the system automatically removes the corresponding menu item from the Window menu.

The system can add up to ten menu items to the Window menu. When the tenth child window is created, the system adds the More Windows item to the Window menu. Clicking this item displays the Select Window dialog box. The dialog box contains a list box with the titles of all MDI child windows currently available. The user can activate a child window by clicking its title in the list box.

If your MDI application supports several types of child windows, tailor the menu bar to reflect the operations associated with the active window. To do this, provide separate menu resources for each type of child window the application supports. When a new type of child window is activated, the application should send a WM_MDISETMENU message to the client window, passing to it the handle to the corresponding menu.

When no child window exists, the menu bar should contain only items used to create or open a document.

When the user is navigating through an MDI application's menus by using cursor keys, the keys behave differently than when the user is navigating through a typical application's menus. In an MDI application, control passes from the application's window menu to the window menu of the active child window, and then to the first item on the menu bar.