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


Инициализация MDI-приложения - часть 3


Для окна Client Window не нужно указывать заголовок, зато следует использовать стиль WS_CLIPCHILDREN (так как функция этого окна не будет рисовать поверх окон Document Window). Размеры окна не имеют значения, потому что они автоматически устанавливаются равными размерам внутренней области (client region) окна Frame Window.

Так как окно Client Window является дочерним по отношению к окну Frame Window, в девятом параметре функции CreateWindow необходимо указать идентификатор. Можно использовать произвольное значение, не конфликтующее с идентификаторами других дочерних окон, создаваемых окном Frame Window (например, с идентификаторами окон Toolbar и Statusbar).

Через последний параметр функции CreateWindow следует передать указатель на предварительно проинициализированную структуру CLIENTCREATESTRUCT.

Поле hWindowMenu этой структуры должно содержать идентификатор временного меню "Window", которое определено для любого стандартного MDI-приложения. По мере создания окон Document Window это меню будет дополняться снизу строками, состоящими из заголовков окон Document Window. Эти строки можно использовать для выбора и активизации нужного окна Document Window.

Как получить нужный идентификатор?

Создание окна Client Window целесообразно выполнять в функции окна Frame Window при обработке сообщения WM_CREATE, так как окно Client Window дочернее по отношению к окну Frame Window. В приведенном выше фрагменте кода, взятом как раз из обработчика этого сообщения, вызывается функция GetMenu. В качестве параметра ей передается идентификатор окна Frame Window, поэтому она возвращает идентификатор главного меню приложения.

Далее, пользуясь этим идентификатором и зная порядок расположения временных меню (pop up menu) в главном меню приложения, с помощью функции GetSubMenu можно легко получить идентификатор для любого временного меню. В качестве второго параметра функции GetSubMenu следует передать порядковый номер временного меню. Самому левому временному меню соответствует номер 0, следующему - 1, и т.


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



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