Listing 7: WinMain code for this example
int WINAPI WinMain (HINSTANCE hInstance,
HINSTANCE hPrevInstance,LPSTR, int nCmdShow) {
HACCEL hAccel = 0; // Accelerator table
HWND hwndFrame, hwndClient ;
MSG msg ;
tmdi_type_list_struct *child_list,*child_type;
tmdi_frame_window *mdi_frame_window;
ttest1_window_manager *test1_manager;
ttest2_window_manager *test2_manager;
child_list = new tmdi_type_list_struct;
child_type = child_list;
child_type->type_id = MDI_OPEN_1;
child_type->the_class = szTest1Class;
child_type->the_title = test1_title;
child_type->next = new tmdi_type_list_struct;
child_type = child_type->next;
child_type->type_id = MDI_OPEN_2;
child_type->the_class = szTest2Class;
child_type->the_title = test2_title;
child_type->next = 0;
hInst = hInstance ;
mdi_frame_window = new tmdi_frame_window (hInstance,
(LRESULT CALLBACK)FrameWndProc,0,"","Test MDI",
szFrameClass,0,child_list,SHOW_ABOUT);
test1_manager = new ttest1_window_manager
(hInstance,mdi_frame_window,0,szTest1Class);
test2_manager = new ttest2_window_manager
(hInstance,mdi_frame_window,0,szTest2Class);
if (!hPrevInstance) {
mdi_frame_window->register_window_class();
test1_manager->register_window_class();
test2_manager->register_window_class(); }
mdi_frame_window->init_menu (hInst,"MainMenu",
INIT_MENU_POS);
test1_manager->init_menu(hInst,"Test1Menu",
TEST1_MENU_CHILD_POS);
test1_manager->set_frame_menu
(mdi_frame_window->frame_menu,
mdi_frame_window->frame_submenu);
test2_manager->init_menu(hInst,"Test2Menu",
TEST2_MENU_CHILD_POS);
test2_manager->set_frame_menu
(mdi_frame_window->frame_menu,
mdi_frame_window->frame_submenu);
// Create the frame window
int width = GetSystemMetrics (SM_CXSCREEN);
int height = GetSystemMetrics (SM_CYSCREEN);
hwndFrame = CreateWindow (szFrameClass,
"Test MDI System",
WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN,
0, 0,width, height,
NULL,mdi_frame_window->frame_menu,
hInstance, NULL) ;
hwndClient = GetWindow (hwndFrame, GW_CHILD) ;
ShowWindow (hwndFrame, nCmdShow) ;
UpdateWindow (hwndFrame) ;
while (GetMessage (&msg, NULL, 0, 0)) {
if (!TranslateMDISysAccel (hwndClient,&msg)&&
!TranslateAccelerator (hwndFrame,hAccel,
&msg)){ TranslateMessage (&msg);
DispatchMessage (&msg);}
}
delete test1_manager;
delete test2_manager;
delete mdi_frame_window;
free_mdi_type_list_struct (child_list);
return msg.wParam;}
//End of File