Winapi 捕获移位+;Win32应用程序中的TAB和TAB-only按钮按下
我有一个Win32应用程序,我想在其中捕获键盘上的SHIFT+TAB按钮按下和仅TAB按钮按下。我想在翻译前信息中捕获这两个功能 这将使我能够基于这些键盘按键进行一些自定义操作 现在我的密码是Winapi 捕获移位+;Win32应用程序中的TAB和TAB-only按钮按下,winapi,mfc,Winapi,Mfc,我有一个Win32应用程序,我想在其中捕获键盘上的SHIFT+TAB按钮按下和仅TAB按钮按下。我想在翻译前信息中捕获这两个功能 这将使我能够基于这些键盘按键进行一些自定义操作 现在我的密码是 if (pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_SHIFT) { m_shiftKey = TRUE; } if (pMsg->message == WM_KEYDOWN
if (pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_SHIFT)
{
m_shiftKey = TRUE;
}
if (pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_TAB)
{
// DO Something
m_shiftKey = FALSE;
return TRUE;
}
if (pMsg->message == WM_KEYDOWN && m_shiftKey && pMsg->wParam == VK_TAB)
{
// DO Something
return TRUE;
}
我可以在这里按TAB键,但是SHIFT+TAB组合在这里不能正常工作
有更好的方法吗?系统不会为Shift键生成键盘输入消息。但是,您可以查询Shift键的当前状态调用 解决问题的一个方法是将第一个
if
子句替换为以下代码:
m_shiftKey = ( ::GetKeyState( VK_SHIFT ) < 0 ) ? TRUE : FALSE;
m\u shiftKey=(::GetKeyState(VK\u SHIFT)<0)?真:假;
警告:只有当应用程序未进入模式循环时,才会执行PreTranslateMessage
中的代码。无论何时打开模式对话框、移动或调整窗口大小或打开菜单,都会进入模式循环