Как использовать F10 в качестве ярлыка в приложении MFC с использованием ленты - PullRequest
3 голосов
/ 03 июля 2010

Я разработал приложение MFC, используя VS2008 и пакет функций MFC.Пользовательский интерфейс этого приложения использует ленту.

Теперь мне нужно иметь F10 в качестве правильного ярлыка для одной из критических функций моего приложения, но мне кажется, что я не могу правильно установить ускоритель, поскольку он всегда использует значение по умолчаниюленточный ускоритель над моим.

Есть идеи, как этого добиться?

Ответы [ 3 ]

0 голосов
/ 09 июля 2010

Вы пытались добавить обработчик для WM_SYSKEYDOWN и проверить код сообщения для значения wParam VK_F10?F10 требует особой обработки, поскольку это старая альтернатива для нажатия клавиши Alt, чтобы открыть строку меню под управлением клавиатуры.

0 голосов
/ 12 июля 2017

Возникла та же проблема и была решена путем добавления метода: Виртуальный BOOL PreTranslateMessage (MSG * pMsg);

BOOL CMyView::PreTranslateMessage(MSG* pMsg)
{
    if ((pMsg->message == WM_SYSKEYDOWN) && (pMsg->wParam == VK_F10))
    {
        OnMyAction(); //code on F10
        return TRUE;
    }
    return CView::PreTranslateMessage(pMsg);
}
0 голосов
/ 05 июля 2010

Полагаю, вы уже пытались зарегистрировать горячую клавишу.Канонический способ получить нажатие клавиши - использовать SetWindowsHookEx, для основного потока вашего приложения.Глобальные оконные хуки загружены, и ограничения безопасности при перехвате в Vista / Win7 / Server 2008 сделали их намного менее полезными в любом случае.Но хук, специфичный для процесса, подойдет - и не обязательно должен быть в DLL.

...