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


Листинг 1.1. Файл mdiapp/mdiapp.cpp - часть 3


// Идентификатор первого дочернего окна Document Window clcs.idFirstChild = 500;

// Создаем окно Client Window hwndClient = CreateWindow( "MDICLIENT", // имя класса окна NULL, // заголовок окна WS_CHILD | WS_CLIPCHILDREN | WS_VISIBLE | // стиль окна WS_HSCROLL | WS_VSCROLL, 0, 0, 0, 0, hwnd, // идентификатор родительского окна (HMENU)1, // идентификатор меню hInst, // идентификатор приложения (LPSTR)&clcs);// указатель на дополнительные параметры break; }

// Обработка сообщений от главного меню приложения case WM_COMMAND: { switch (wParam) { // Создание нового окна Document Window case CM_FILENEW: { // Заполняем структуру MDICREATESTRUCT 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; }

// Размещение окон Document Window рядом друг с другом case CM_WINDOWTILE: { SendMessage(hwndClient, WM_MDITILE, 0, NULL); break; }

// Размещение окон Document Window с перекрытием case CM_WINDOWCASCADE: { SendMessage(hwndClient, WM_MDICASCADE, 0, NULL); break; }

// Размещение пиктограмм минимизированных // окон Document Window // в нижней части окна Client Window case CM_WINDOWICONS: { SendMessage(hwndClient, WM_MDIICONARRANGE, 0, NULL); break; }

// Уничтожение всех окон Document Window case CM_WINDOWCLOSEALL: { HWND hwndTemp;

// Скрываем окно Client Window для того чтобы // избежать многократной перерисовки окон Document // Window во время их уничтожения ShowWindow(hwndClient, SW_HIDE);

for(;;) { // Получаем идентификатор дочернего окна // для окна Client Window hwndTemp = GetWindow(hwndClient, GW_CHILD); // Если дочерних окон больше нет, выходим из цикла if(!hwndTemp) break;




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



Книжный магазин