Азбука программирования в Win32 API


Азбука программирования в Win32 API - стр. 82


typedef struct tagACCEL {

BYTE   fVirt; /* Also called the flags field */

WORD   key;

WORD   cmd; ( ACCEL, «LPACCEL;

Если мы вспомним формат описания акселератора в файле ресурсов, то сразу можно догадаться о том, что поле cmd - это аналог поля Menuld, key соответствует Key, а значения поля fVirt являются комбинациями флагов (табл. 18), которые однозначно соответствуют полям Тип и Пара­метр.

И наконец, чтобы завершить тему об акселераторах, замечу, что при уничтожении окна автоматически из памяти удаляются только акселера­торы, созданные с помощью функции LoadAccelerator(). В случае, если использовалась функция CreateAcceleratorTable(), программа должна сама заботиться об удалении таблицы из памяти. Для этого применяется функция DestroyAcceleratorTableQ, в качестве аргумента которой переда­ется хэндл таблицы акселераторов.

Мы завершили рассмотрение темы, связанной с меню и акселератора­ми. К этому моменту читатель должен быть готов к тому, чтобы само­стоятельно использовать ПОЧТИ все возможности по управлению меню,

97

предоставляемые Win32. За пределами нашего внимания остался один пункт. Он связан с созданием в памяти структуры типа MENUITEMTEMPLATE и использования ее для создания меню посред­ством вызова функции EoadMenuIndirect(). В книге Чарльза Петцольда есть одна фраза, которая меня не только развеселила, но и подвигла на изучение этого совершенно бесполезного (это моя личная точка зрения, но тогда-то я еще не знал этого!) вопроса. Вот эта фраза: «If you're brave, you can try using it yourself (Если ты смелый, ты можешь самостоятельно попробовать использовать ее (функцию LoadMenuIndirectQ).» Больше времени на разбор этой функции я терять не стану. Уважаемый читатель! Если вы не желаете прислушаться к моему совету, изучите, пожалуйста, третий способ создания меню самостоятельно.

Очередное ура! Мы прошли еще одну тему! Теперь мы умеем полно­стью определять порядок взаимодействия программы с пользователем через меню. Для того чтобы завершить раздел, посвященный непосредст­венному взаимодействию пользователя с программой, осталось всего ничего - начать и завершить тему о диалоговых окнах и обо всем, что с ними связано.




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



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