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

时间:2010-07-03 10:04:14

标签: c++ visual-studio-2008 mfc mfc-feature-pack

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

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

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

3 个答案:

答案 0 :(得分:0)

我假设您已经尝试过注册热键。获取击键的规范方法是使用SetWindowsHookEx,为您的应用程序的主线程。全局Windows挂钩很有用,而且Vista / Win7 / Server 2008中挂钩的安全限制使它们无论如何都没那么有用。但是特定于进程的钩子会很好 - 而且不需要在DLL中。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

有同样的问题并通过添加方法解决了它:虚拟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);
}