Чтобы обрабатывать клавиши - ускорители, цикл сообщения прикладной программы (или потока) должен содержать вызов функции TranslateAccelerator. TranslateAccelerator сравнивает нажатия клавиши с таблицей клавиш-ускорителей и, если она находит соответствие, переводит нажатия клавиш в сообщения WM_COMMAND (или WM_SYSCOMMAND). Затем функция отправляет сообщение оконной процедуре. Параметры функции TranslateAccelerator включают в себя дескриптор окна, которое должно принять сообщения WM_COMMAND, дескриптор таблицы клавиш-ускорителей, использованной трансляции клавиш - ускорителей и указатель на структуру MSG, содержащую сообщение из очереди. Следующий пример показывает, как вызвать TranslateAccelerator изнутри цикла сообщения.
while (GetMessage(&msg, (HWND) NULL, 0, 0)) { /* Проверка нажатия клавиши-ускорителя. */ if (!TranslateAccelerator( hwndMain, /* дескриптор окна - приемника */ haccel, /* дескриптор таблицы активной клавиши-ускорителя */ &msg)) /* адрес данных сообщений */ { TranslateMessage(&msg); DispatchMessage(&msg); } }