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


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


// Пропускаем окна-заголовки while(hwndTemp && GetWindow(hwndTemp, GW_OWNER)) hwndTemp = GetWindow(hwndTemp, GW_HWNDNEXT);

// Удаляем дочернее окно Document Window if(hwndTemp) SendMessage(hwndClient, WM_MDIDESTROY, (WPARAM)hwndTemp, NULL); else break; }

// Отображаем окно Client Window 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; }

// Определяем идентификатор // активного окна Document Window HWND hwndChild = (HWND)LOWORD(SendMessage(hwndClient, WM_MDIGETACTIVE, 0, 0l));

// Если это окно, посылаем ему сообщение WM_COMMAND 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); }

// ===================================== // Функция ChildWndProc // =====================================

LRESULT CALLBACK _export ChildWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { HDC hdc; PAINTSTRUCT ps; RECT rc;

switch (msg) { case WM_PAINT: { hdc = BeginPaint(hwnd, &ps); GetClientRect(hwnd, &rc);

DrawText(hdc, "Child Window", -1, &rc, DT_SINGLELINE | DT_CENTER | DT_VCENTER);

EndPaint(hwnd, &ps); }

default: break; } return DefMDIChildProc(hwnd, msg, wParam, lParam); }

Функция WinMain вызывает для инициализации приложения функцию InitApp, задачей которой является регистрация классов окон Frame Window и Document Window. После инициализации создается главное окно приложения Frame Window, для чего используется функция CreateWindow.

После отображения главного окна запускается цикл обработки сообщений. В этом цикле для обеспечения стандартного клавиатурного интерфейса MDI-приложения мы вызываем функцию TranslateMDISysAccel.




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



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