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


Инициализация MDI-приложения


В процессе инициализации MDI-приложения вам надо зарегистрировать как минимум два класса окна - класс окна Frame Window (главного окна приложения) и класс окна Document Window.

Регистрация окна Frame Window может выполняться, например, следующим образом:

ATOM aWndClass; // атом для кода возврата WNDCLASS wc; // структура для регистрации класса окна 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);

В классе окна Frame Window, как правило, указывается меню приложения, хотя это меню может быть создано динамически. В поле lpfnWndProc следует записать адрес функции окна Frame Window. Эта функция имеет особенности, о которых мы расскажем позже.

Остальные поля структуры WNDCLASS заполняются обычным образом. Отметим только, что для цвета фона окна имеет смысл использовать константу COLOR_APPWORKSPACE. В этом случае для управления фоном окна можно будет использовать приложение Control Panel, что даст пользователю возможность настраивать цвета по своему вкусу.

Регистрация класса для окна 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 = sizeof(WORD); 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);

В поле lpfnWndProc вы должны указать адрес функции окна Document Window, которая, как и функция окна Frame Window, имеет свои особенности.




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