In an application using the Windows Multiple Document Interface (MDI), MDI
child windows are always created with a maximize button, a minimize button,
and a thick "sizing" border. Currently, it is not possible to modify this
However, it is possible to prevent an MDI child from being maximized,
minimized, or sized. This can be done by performing two steps:
- Disable the Maximize, Minimize, and Size options on the child
window's system menu.
- Trap the appropriate WM_SYSCOMMAND messages in the MDI child
window's window procedure.
This article contains a sample MDI child window procedure that
illustrates this technique.
The following sample MDI child window procedure can be used to
implement an MDI child that can not be maximized, minimized or sized:
LONG FAR PASCAL SampleMDIChildWndProc(hWnd, msg, wParam, lParam)
// This sample MDI child window procedure can be used to prevent the
// MDI child from being maximized, minimized, or sized.
// Note that the child will still have a maximize button, a minimize
// button, and a thick "sizing" border. Currently, there is no way to
// prevent Windows from creating MDI children with these default
// We can, however, disable the maximizing, minimizing, and sizing
// functionality by:
// 1. Disabling system menu options
// 2. Trapping WM_SYSCOMMAND messages
HMENU hSystemMenu; // the MDI child's system menu
// Disable and gray the Maximize, Minimize, and Size items
// on the MDI child's system menu
hSystemMenu = GetSystemMenu(hWnd, FALSE);
EnableMenuItem(hSystemMenu, SC_MAXIMIZE, MF_GRAYED |
EnableMenuItem(hSystemMenu, SC_MINIMIZE, MF_GRAYED |
EnableMenuItem(hSystemMenu, SC_SIZE, MF_GRAYED |
// "Eat" these system commands to disable maximizing,
// minimizing, and sizing functionality.
// Note that wParam must be combined with 0xFFF0, using
// the C bitwise AND (&) operator, when processing
// the WM_SYSCOMMAND message.
switch (wParam & 0xFFF0)
return DefMDIChildProc(hWnd, msg, wParam, lParam);
Article ID: 71669 - Last Review: February 11, 2005 - Revision: 1.2
- Microsoft Windows Software Development Kit 3.1
|kb16bitonly kbhowto kbmdi kbwndw KB71669|Retired KB Content Disclaimer
This article was written about products for which Microsoft no longer offers support. Therefore, this article is offered "as is" and will no longer be updated.