代码之家  ›  专栏  ›  技术社区  ›  Fabien Hure

如何在使用功能区的MFC应用程序中使用F10作为快捷方式

  •  3
  • Fabien Hure  · 技术社区  · 14 年前

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

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

    你知道怎么做到吗?

    3 回复  |  直到 7 年前
        1
  •  0
  •   Bob Moore    14 年前

    我想你已经试过注册热键了。获得击键的标准方法是为应用程序的主线程使用setwindowshookex。全局Windows挂钩很重,而且Vista/Win7/Server2008中对挂钩的安全限制使得它们无论如何都不那么有用。但是一个特定于进程的钩子是可以的——并且不需要在一个DLL中。

        2
  •  0
  •   DavidK    14 年前

    您是否尝试为wm_syskeydown添加处理程序并检查消息代码中vk_f10的wparam值?F10需要特殊处理,因为它是按alt键打开键盘控制下菜单栏的旧选择。

        3
  •  0
  •   Ramunas    7 年前

    有同样的问题,通过添加方法解决: 虚拟bool预传输消息(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);
    }