Вызов функции преобразования ускорителя


Чтобы обрабатывать ускорители, цикл обработки сообщений приложения  (или потока) должен содержать вызов функции TranslateAccelerator. TranslateAccelerator сравнивает нажатия клавиш с таблицей клавиш-ускорителей  и, если находит соответствие, то преобразует нажатия клавиш в сообщение WM_COMMAND (или WM_SYSCOMMAND). Функция затем отправляет сообщение оконной процедуре. Параметры функции TranslateAccelerator включают в себя дескриптор окна, который должны получать сообщения WM_COMMAND, дескриптор таблицы клавиш-ускорителей, используемый, чтобы преобразовывать ускорители и указатель на структуру MSG, содержащую сообщение из очереди. Пример ниже показывает, как вызвать TranslateAccelerator изнутри цикла обработки сообщений.

Демонстрационный пример

MSG msg; 
BOOL bRet;

while ( (bRet = GetMessage(&msg, (HWND) NULL, 0, 0)) != 0)
{
    if (bRet == -1)
    {
        // обработка ошибки и возможный выход из программы
    }
    else
    {
        // Проверка нажатий клавиш ускорителей.
     
        if (!TranslateAccelerator( 
                hwndMain, // дескриптор окна приемника
                haccel,   // дескриптор активной таблицы ускорителей
                &msg))    // данные сообщения
        {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
    }
}

Назад в оглавление
На главную страницу

Hosted by uCoz