Операционная система Microsoft Windows 3.1 для программиста. Дополнительные главы


Листинг 1.5. Файл mditb/mditb.cpp - часть 4


// Создаем окно Statusbar hwndSb = CreateWindow( szSbClassName, // имя класса окна NULL, // заголовок окна WS_CHILD | WS_CLIPCHILDREN | WS_VISIBLE | WS_DLGFRAME, 0, 0, 0, 0, hwnd, // идентификатор родительского окна (HMENU)3, // идентификатор меню hInst, // идентификатор приложения NULL); // указатель на дополнительные параметры

break; }

case WM_COMMAND: { switch (wParam) { case CM_FILENEW: { mdics.szClass = szChildClassName; // класс окна mdics.szTitle = "MDI Child Window"; // заголовок окна mdics.hOwner = hInst; // идентификатор приложения mdics.x = CW_USEDEFAULT; // размеры окна mdics.y = CW_USEDEFAULT; // Document Window mdics.cx = CW_USEDEFAULT; mdics.cy = CW_USEDEFAULT; mdics.style = 0; // дополнительные стили mdics.lParam = NULL; // 32-битное значение

// Посылаем сообщение WM_MDICREATE окну // Client Window. В результате будет создано новое // окно Document Window hwndChild = (HWND)SendMessage(hwndClient, WM_MDICREATE, 0, (LPARAM)&mdics); break; }

case CM_WINDOWTILE: { SendMessage(hwndClient, WM_MDITILE, 0, NULL); break; } case CM_WINDOWCASCADE: { SendMessage(hwndClient, WM_MDICASCADE, 0, NULL); break; } case CM_WINDOWICONS: { SendMessage(hwndClient, WM_MDIICONARRANGE, 0, NULL); break; } case CM_WINDOWCLOSEALL: { HWND hwndTemp; ShowWindow(hwndClient, SW_HIDE); for(;;) { hwndTemp = GetWindow(hwndClient, GW_CHILD); if(!hwndTemp) break; while(hwndTemp && GetWindow(hwndTemp, GW_OWNER)) hwndTemp = GetWindow(hwndTemp, GW_HWNDNEXT); if(hwndTemp) SendMessage(hwndClient, WM_MDIDESTROY, (WPARAM)hwndTemp, NULL); else break; } ShowWindow(hwndClient, SW_SHOW); break; } case CM_HELPABOUT: { MessageBox(hwnd, "Приложение MDIAPP\n(C) Фролов А.В., 1995", "Simple MDI Application", MB_OK | MB_ICONINFORMATION); break; } case CM_FILEEXIT: { DestroyWindow(hwnd); break; } default: break; }

HWND hwndChild = (HWND)LOWORD(SendMessage(hwndClient, WM_MDIGETACTIVE, 0, 0l)); if(IsWindow(hwndChild)) SendMessage(hwndChild, WM_COMMAND, wParam, lParam); return DefFrameProc(hwnd, hwndClient, msg, wParam, lParam); } case WM_DESTROY: { PostQuitMessage(0); break; } default: break; } return DefFrameProc(hwnd, hwndClient, msg, wParam, lParam); }




Начало  Назад  Вперед