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


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


// ===================================== // Функция InitApp // Выполняет регистрацию классов окон // =====================================

BOOL InitApp(HINSTANCE hInstance) { ATOM aWndClass; // атом для кода возврата WNDCLASS wc; // структура для регистрации // класса окна

// Регистрируем класс для главного окна приложения // (т. е. для окна Frame Window) memset(&wc, 0, sizeof(wc)); wc.lpszMenuName = "APP_MENU"; wc.style = CS_HREDRAW | CS_VREDRAW; wc.lpfnWndProc = (WNDPROC)FrameWndProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = hInstance; wc.hIcon = LoadIcon(hInstance, "APP_ICON"); wc.hCursor = LoadCursor(NULL, IDC_ARROW); wc.hbrBackground = (HBRUSH)(COLOR_APPWORKSPACE + 1); wc.lpszClassName = (LPSTR)szFrameClassName; aWndClass = RegisterClass(&wc);

if(!aWndClass) return FALSE;

// Регистрируем класс окна для дочернего окна Document Window memset(&wc, 0, sizeof(wc)); wc.lpszMenuName = 0; wc.style = CS_HREDRAW | CS_VREDRAW; wc.lpfnWndProc = (WNDPROC)ChildWndProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = hInstance; wc.hIcon = LoadIcon(hInstance, "APPCLIENT_ICON"); wc.hCursor = LoadCursor(NULL, IDC_ARROW); wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1); wc.lpszClassName = (LPSTR)szChildClassName; aWndClass = RegisterClass(&wc);

if(!aWndClass) return FALSE;

return TRUE; }

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

LRESULT CALLBACK _export FrameWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { // Структура для создания окна Client Window CLIENTCREATESTRUCT clcs;

// Структура для создания дочернего окна Document Window MDICREATESTRUCT mdics;

switch (msg) { // При создании окна Frame Window создаем // окно Client Window, внутри которого будут создаваться // дочерние окна Document Window case WM_CREATE: { // Получаем и сохраняем в структуре clcs идентификатор // временного меню "Window". Так как это меню второе // слева, его позиция равна 1 (меню "File" имеет // позицию 0) clcs.hWindowMenu = GetSubMenu(GetMenu(hwnd), 1);




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



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