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

C++ 如何在使用功能区的MFC应用程序中将F10用作快捷方式,c++,visual-studio-2008,mfc,mfc-feature-pack,C++,Visual Studio 2008,Mfc,Mfc Feature Pack,我使用VS2008和MFC功能包开发了一个MFC应用程序。 此应用程序UI正在使用功能区 我现在需要将F10作为应用程序关键功能之一的适当快捷方式,但我似乎无法正确设置加速器,因为它总是使用默认的功能区加速器 你知道如何做到这一点吗?我想你已经试过注册热键了。获取击键的标准方法是使用SetWindowsHookEx作为应用程序的主线程。全局windows钩子很重,Vista/Win7/Server2008中对钩子的安全限制使得它们的用处大大降低。但是特定于进程的钩子就可以了,而且不需要在DLL中

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

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


你知道如何做到这一点吗?

我想你已经试过注册热键了。获取击键的标准方法是使用SetWindowsHookEx作为应用程序的主线程。全局windows钩子很重,Vista/Win7/Server2008中对钩子的安全限制使得它们的用处大大降低。但是特定于进程的钩子就可以了,而且不需要在DLL中。

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

有相同的问题,并通过添加方法解决:虚拟布尔预翻译消息(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);
}