Ассемблер для Windows



         

Меню



II

6. Меню. Меню также может быть задано в файле ресурсов. Как и диалоговое окно, в программе оно определяется по имени (строке). Меню можно задать и в обычном окне, и в диалоговом окне. Для обычного окна при регистрации класса следует просто заменить строку

MOV DWORD PTR [WC.CLMENNAME],0

на

MOV DWORD PTR [WC.CLMENNAME], OFFSET MENS

Здесь MENS - имя, под которым меню располагается в файле ресурсов. Меню на диалоговое окно устанавливается другим способом, который, разумеется, подходит и для обычного окна. В начале меню загружается при помощи функции LoadMenu, а затем устанавливается функцией SetMenu.

А теперь обо всем подробнее. Рассмотрим структуру файла ресурсов, содержащего определение меню. Ниже представлен текст файла, содержащего определение меню.

Далее представлена программа, демонстрирующая меню на диалоговом окне.

MENUP MENU { POPUP "&Первый пункт" { MENUITEM "&Первый",1 MENUITEM "В&торой",2 POPUP "Подмен&ю" { MENUITEM "Десятый пунк&т",6 } } POPUP "&Второй пункт" { MENUITEM "Трети&й",3 MENUITEM "Четверт&ый",4 } MENUITEM "Вы&ход",5 }

Внимательно рассмотрите текст меню. Как видите, пункты меню имеют идентификаторы, по которым в программе можно определить, какой пункт меню выбран. Можно заметить, что выпадающее меню может содержать еще и подменю.

//файл menu.rc //определение констант #define WS_SYSMENU 0x00080000L #define WS_MINIMIZEBOX 0x00020000L #define WS_MAXIMIZEBOX 0x00010000L #define WS_POPUP 0x80000000L #define WS_CAPTION 0x00C00000L

MENUP MENU { POPUP "&Первый пункт" { MENUITEM "&Первый",1 MENUITEM "В&торой",2 } POPUP "&Второй пункт" { MENUITEM "Трети&й",3 MENUITEM "Четверт&ый",4

POPUP "Еще подмен&ю" {

MENUITEM "Десятый пунк&т", 6 } } MENUITEM "Вы&ход", 5 }

// идентификаторы #define IDI_ICON1 100




Содержание  Назад  Вперед