3

我使用 VS2008 和 MFC 功能包开发了一个 MFC 应用程序。此应用程序 UI 正在使用功能区。

我现在需要将 F10 作为我的应用程序的一项关键功能的正确快捷方式,但我似乎无法正确设置加速器,因为它总是使用默认的功能区加速器而不是我的。

知道如何实现这一目标吗?

4

3 回答 3

0

您是否尝试过为 WM_SYSKEYDOWN 添加处理程序并检查消息代码中的 wParam 值是否为 VK_F10?F10 需要特殊处理,因为它是按 Alt 键在键盘控制下打开菜单栏的旧替代方法。

于 2010-07-09T14:37:41.297 回答
0

我假设您已经尝试过注册热键。获得击键的规范方法是使用 SetWindowsHookEx,作为应用程序的主线程。全局窗口挂钩很重,Vista/Win7/Server 2008 中挂钩的安全限制使它们的用处大大降低。但是特定于进程的钩子会很好 - 并且不需要在 DLL 中。

于 2010-07-05T12:41:26.440 回答
0

有同样的问题并通过添加方法解决它:virtual 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);
}
于 2017-07-12T05:45:38.127 回答