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



         

Пример простейших манипуляций с меню



I

Читатель, наверное, обращал внимание, что во многих программах меню может динамически меняться во время работы: исчезают и добавляются некоторые пункты, одно меню встраивается в другое. Пример простейших манипуляций с меню приведен на Рисунок 2.4.1.

Программа открывает окно с кнопкой и меню. При нажатии кнопки текущее меню заменяется другим. Если нажать еще раз, то меню исчезает. Следующее нажатие приводит к появлению первого меню и так далее, по кругу. Кроме того, в первом меню имеется пункт, который приводит к такому же результату, что и нажатие кнопки. Наконец, для этого пункта установлена акселераторная клавиша - F5. При передвижении по меню название пунктов меню и заголовков выпадающих (POPUP) подменю отображается в заголовке окна. Вот, вкратце, как работает программа. Механизмы работы программы будут подробно разобраны ниже.

// файл menu2.rc

// виртуальная клавиша F5 #define VK_F5 0х74

// ************** MENUP **************

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

POPUP "&Второй пункт" { MENUITEM "Трети&й",3 MENUITEM "Четверт&ый\tF5",4 MENUITEM SEPARATOR POPUP "Еще подмен&ю" { MENUITEM "Дополнительный пу&нкт",6 }

}

MENUITEM "Вы&ход",5 }

//**************** MENUC ******************** MENUC MENU { POPUP "Набор первый" { MENUITEM "Белый",101 MENUITEM "Серый",102 MENUITEM "Черный",103 } POPUP "Набор второй" { MENUITEM "Красный",104 MENUITEM "Синий",105 MENUITEM "Зеленый",106 } }

// таблица акселераторов // определен один акселератор для вызова // пункта из меню MENUP MENUP ACCELERATORS { VK_F5, 4, VIRTKEY, NOINVERT }

; файл menu2.inc ; константы ; сообщение приходит при закрытии окна WM_DESTROY equ 2 ; сообщение приходит при создании окна WM_CREATE equ 1 ; сообщение при щелчке левой кнопкой мыши в области окна WM_COMMAND equ 111h WM_MENUSELECT equ 11Fh WM_SETTEXT equ 0Ch MIIM_TYPE equ 10h MF_STRING equ 0h MF_POPUP equ 10h




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