Смекни!
smekni.com

Механизмы взаимодействия приложения с пользователем (стр. 3 из 3)

HACCEL LoadAccelerators (HINSTANCE hInst, LPCTSTR lpszTableName)

Параметры:

hInst - хэндл приложения, в которое загружается растровое изображение;

lpszTableName - указатель на строку с нулевым символом в конце, которая содержит имя загружаемой.

Возвращаемое значение: при успешном выполнении - хендл загруженной таблицы оперативных клавиш, иначе - NULL.

Каждое нажатие акселераторной комбинации должно генерировать сообщение WM_COMMAND. Для этого акселераторы и создавались. Поэтому, даже после загрузки таблицы в память программа не сможет на них правильно реагировать, если мы не будем использовать функцию TranslateAccelerator (), которая преобразует сообщения от клавиатуры в сообщения WM_COMMAND. Описание этой функции:

intTranslateAccelerator (HWNDhWnd, HACCELhAccTable, LPMSGlpMsg)

Параметры:

hWnd - хэндл окна с функцией обработки сообщений (WndProc), которая должна принимать преобразованные сообщения;

hAccTable - хэндл таблицы оперативных клавиш.

lpMsg - указатель на структуру сообщения, которая содержит данные сообщения, полученные при вызове функции GetMessage ().

Возвращаемое значение: при успешном выполнении - ненулевое значение, если нажата акселераторная комбинация, иначе - нуль.

Поэтому, с учетом вызова этой функции цикл обработки сообщений должен выглядеть следующим образом:

while (GetMessage (&msg, NULL, 0, 0))

{

if (! Accel ||! TranslateAccelerator (hWnd,hAcc,&msg);

{

TranslateMessage (&msg);

DispatchMessage (&msg);

}

}