Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ответы Word.docx
Скачиваний:
34
Добавлен:
16.03.2016
Размер:
352 Кб
Скачать
☆

Акселераторы

Акселератор позволяет выбирать пункт меню просто сочетанием клавиш. Это очень удобно и быстро. Таблица акселераторов является ресурсом, имя которого совпадает с именем того меню (ресурса), пункты которого она определяет.

Вот пример такой таблицы. Определяется один акселератор на пункт меню MENUP, имеющий идентификатор 4.

MENUP ACCELERATORS

{

VK_F5, 4,VIRTKEY

}

А вот общий вид таблицы акселераторов:

Имя ACCLERATORS

{

Клавиша 1, Идентификатор пункта меню (1) [,тип][,параметр]

Клавиша 2, Идентификатор пункта меню (2) [,тип][,параметр]

Клавиша 3, Идентификатор пункта меню (3) [,тип][,параметр]

…

Клавиша N, Идентификатор пункта меню (N) [,тип][,параметр]

}

Клавиша– это любой символ в кавычках, либоASCII-код символа, либо виртуальная клавиша. Если вначале стоит код символа, то тип задается какASCII. Если используется виртуальная клавиша, то тип определяется какVIRTUAL. Все названия (макроимена) виртуальных клавиш можно найти вinclude– файлах (windows.h).

Параметр может принимать одно из следующих значений: NOINVERT,ALT,CONTROL,SHIFT. ЗначениеNOINVERTозначает, что не подсвечивается выбранный при помощи акселератора пункт меню. ЗначениеALT, SHIFT, CONTROLозначают, что, кроме клавиши, определенной в акселераторе, должна быть нажата одна из управляющих клавиш. Кроме этого, если клавиша определяется в кавычках, то нажатие при этом клавишиCONTROLопределяется знаком ^: ^A.

Для того чтобы акселераторы работали, необходимо выполнить два условия:

  1. должна быть загружена таблица акселераторов. Для этого используется функция LoadAccelerators;

  2. сообщения, пришедшие от акселератора, следует преобразовать в сообщение WM_COMMAND. Здесь нам пригодится функцияTranslateAccelerator.

Функция TranslateAcceleratorпреобразует сообщенияWM_KEYDOWNиWM_SYSKEYDOWNв сообщенияWM_COMMANDиWM_SYSCOMMANDсоответственно. При этом в старшем слове параметраWPARAMпомещается 1 как отличие для акселератора. В младшем слове, как вы помните, содержится идентификатор пункт меню. СообщениеWM_SYSCOMMANDгенерируется для пунктов системного меню или меню окна.

Функция TranslateAcceleratorвозвращает ненулевое значение, если было произведено преобразование сообщения акселератора, в противном случае возвращает 0.

Api – функции

  1. Функция LoadIconA

Загружает указанный ресурс пиктограммы из исполняемого файла, связанного с экземпляром приложения.

HICON LoadIcon (

HINSTANCE hInstance, //дескриптор экземпляра приложения

LPCTSTR lpIconName //строка с именем пиктограммы или

); //идентификатор ресурса

  1. Функция Shell_NotifyIconA

Посылает сообщение системе добавить, изменить или удалить иконку в системной области (System Tray).

WINSHELLAPI BOOL WINAPI Shell_NotifyIcon(

DWORD dwMessage, //идентификатор сообщения

PNOTIFYICONDATA pnid //точка входа в структуру

);

  1. Функция LoadMenu

Загружает меню из ресурса в контекст приложения

HMENU LoadMenu(

HINSTANCE hInstance, //дескриптор приложения

LPCTSTR lpMenuName); //имя ресурса

  1. Функция SetMenu

Назначает новое меню указанному окну.

BOOL SetMenu(

HWND hWnd, //дескриптор окна

HMENU hMenu //дескриптор меню

);

  1. Функция DrawMenuBar

Перерисовывает меню указанного окна

BOOL DrawMenuBar(

HWND hWnd //дескриптор окна

);

  1. Функция LoadCursorA

Загружает системный курсор или курсор определенный в файле ресурсов

HMENU LoadCursor(

HINSTANCE hInstance, //дескриптор приложения

LPCTSTR lpCursorName //строка с именем курсора или

); //идентификатор ресурса

  1. Функция LoadBitmapA

Загружает битовую картинку определенную в файле ресурсов

HMENU LoadBitmap(

HINSTANCE hInstance, //дескриптор приложения

LPCTSTR lpBitmapName //строка с именем битовой картинки

); //или идентификатор ресурса

  1. Функция LoadStringA

Загружает строку, определенную в файле ресурсов

HMENU LoadString (

HINSTANCE hInstance, //дескриптор приложения

LPCTSTR lpStringName //строка с именем строки или

); //идентификатор ресурса

  1. Функция SetFocus

Устанавливает фокус на заданное окно

  1. Функция DestroyMenu

Удаляет меню из памяти

  1. Функция GetMenuItemInfo

Получает информацию о выбранном пункте меню