我使用VS2008和MFC功能包开发了一个MFC应用程序。 此应用程序UI正在使用功能区。
我现在需要将F10作为我的应用程序的一个关键功能的正确快捷方式,但我似乎无法正确设置加速器,因为它始终使用默认的带状加速器超过我的。
知道如何实现这个目标吗?
答案 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);
}