Операционная система Microsoft Windows 3.1 для программиста -том 3


Листинг 1.5. Файл dmenu/dmenu.cpp - часть 5


В приложении определены четыре глобальные переменные типа HMENU, предназначенные для хранения идентификаторов одного меню верхнего уровня (переменная hmenu) и трех временных меню (переменные hmenuFile, hmenuEdit, hmenuHelp).

Меню верхнего уровня создается в функции главного окна приложения во время обработки сообщения WM_CREATE. Созданное пустое меню подключается к главному окну приложения при помощи функции SetMenu:

hmenu = CreateMenu(); SetMenu(hwnd, hmenu);

Далее создаются два временных меню - "File" и "Help", для чего два раза вызывается функция CreatePopupMenu:

hmenuFile = CreatePopupMenu(); hmenuHelp = CreatePopupMenu();

На данный момент все меню пустые. Прежде всего обработчик сообщения WM_CREATE добавляет к меню "File" несколько строк, вызывая соответствующее число раз функцию AppendMenu:

AppendMenu(hmenuFile, MF_ENABLED | MF_STRING, CM_FILENEW, "&New"); AppendMenu(hmenuFile, MF_ENABLED | MF_STRING, CM_FILEOPEN, "&Open"); ....... и т. д. .......

Обратите внимание на способ, которым в меню добавляется разделительная линия:

AppendMenu(hmenuFile, MF_SEPARATOR, 0, NULL);

Если в качестве второго параметра функции AppendMenu указано значение MF_SEPARATOR, третий и четвертый параметр этой функции игнорируются.

Для того чтобы отметить галочкой строку "Demo Version", вызывается функция CheckMenuItem:

CheckMenuItem(hmenuFile, CM_FILEDEMO, MF_BYCOMMAND | MF_CHECKED);

Аналогичным образом формируется меню "Help".

Далее сформированные временные меню "File" и "Help" добавляются к меню верхнего уровня при помощи функции AppendMenu:

AppendMenu(hmenu, MF_ENABLED | MF_POPUP, (UINT)hmenuFile, "&File"); AppendMenu(hmenu, MF_ENABLED | MF_POPUP, (UINT)hmenuHelp, "&Help");

В заключение вызывается функция DrawMenuBar, которая отображает внесенные изменения на экране:

DrawMenuBar(hwnd);

После формирования меню от него в функцию окна начинают поступать сообщения WM_COMMAND.




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



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