Registering Child and Frame Window Classes

A typical MDI application must register two window classes: one for its frame window and one for its child windows. If an application supports more than one type of document (for example, a spreadsheet and a chart), it must register a window class for each type.

The class structure for the frame window is similar to the class structure for the main window in non-MDI applications. The class structure for the MDI child windows differs slightly from the structure for child windows in non-MDI applications as follows:

  • The class structure should have an icon, because the user can minimize an MDI child window as if it were a normal application window.

  • The menu name should be NULL, because an MDI child window cannot have its own menu.

  • The class structure should reserve extra space in the window structure. With this space, the application can associate data, such as a filename, with a particular child window.

The following example shows how Multipad registers its frame and child window classes.

BOOL APIENTRY InitializeApplication()

{

WNDCLASS wc;

// Register the frame window class.

wc.style = 0;

wc.lpfnWndProc = (WNDPROC) MPFrameWndProc;

wc.cbClsExtra = 0;

wc.cbWndExtra = 0;

wc.hInstance = hInst;

wc.hIcon = LoadIcon(hInst, IDMULTIPAD);

wc.hCursor = LoadCursor((HANDLE) NULL, IDC_ARROW);

wc.hbrBackground = (HBRUSH) (COLOR_APPWORKSPACE + 1);

wc.lpszMenuName = IDMULTIPAD;

wc.lpszClassName = szFrame;

if (!RegisterClass (&wc) )

return FALSE;

// Register the MDI child window class.

wc.lpfnWndProc = (WNDPROC) MPMDIChildWndProc;

wc.hIcon = LoadIcon(hInst, IDNOTE);

wc.lpszMenuName = (LPCTSTR) NULL;

wc.cbWndExtra = CBWNDEXTRA;

wc.lpszClassName = szChild;

if (!RegisterClass(&wc))

return FALSE;

return TRUE;

}

Software for developers
Delphi Components
.Net Components
Software for Android Developers
More information resources
MegaDetailed.Net
Unix Manual Pages
Delphi Examples