Электронная библиотека книг Александра Фролова и Григория Фролова.
Shop2You.ru Создайте свой интернет-магазин
Библиотека
Братьев
Фроловых

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

© Александр Фролов, Григорий Фролов
Том 17, М.: Диалог-МИФИ, 1994, 287 стр.

[Назад] [Содеожание] [Дальше]

1.4. Функции окон MDI-приложения

Как мы уже говорили, MDI-приложение должно определить как минимум две функции окна. Одну функцию окна необходимо указать при регистрации класса окна Frame Window, другую - при регистрации класса окна Document Window. Если приложение создает окна Document Window для отображения разнотипной информации, может потребоваться определить несколько разных функций (по одной для окна Document Window каждого типа). Для окна Client Window, создаваемого на базе предопределенного класса "MDICLIENT" функция окна находится внутри Windows, поэтому вам не нужно о ней беспокоиться.

Функция окна Frame Window

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

Во-первых, вместо функции DefWindowProc все необработанные сообщения должны передаваться специальной функции DefFrameProc. Последняя выполняет обработку таких сообщений, как WM_COMMAND, WM_MENUCHAR, WM_NEXTMENU, WM_SETFOCUS, WM_SIZE, обеспечивая соответствующую реакцию на них окон Document Window.

Во-вторых, только что перечисленные сообщения нужно всегда передавать функции DefFrameProc, даже если функция окна Frame Window обрабатывает их самостоятельно. Изъятие этих сообщений приведет к неправильной работе MDI-приложения.

На функцию окна Frame Window возлагается задача обработки сообщений, поступающих от меню и других органов управления MDI-приложения. В частности, некоторые или все сообщения могут передаваться для обработки функции активного окна Document Window.

Функция окна Document Window

Функция окна Document Window очень похожа на функцию обычного дочернего окна, но все необработанные ей сообщения должны передаваться функции DefMDIChildProc (а не функции DefWindowProc). Функция DefMDIChildProc обрабатывает сообщения WM_CHILDACTIVATE, WM_GETMINMAXINFO, WM_MENUCHAR, WM_MOVE, WM_NEXTMENU, WM_SETFOCUS, WM_SIZE, WM_SYSCOMMAND. Перечисленные сообщения должны в обязательном порядке передаваться функции DefMDIChildProc, даже если функция окна Document Window обрабатывает их самостоятельно.

Основная задача функции окна Document Window - обработка сообщений, предназначенных активному окну Document Window, в том числе поступающих из функции окна Frame Window. В частности, эта функция выполняет обработку сообщения WM_COMMAND.

[Назад] [Содеожание] [Дальше]