【发布时间】:2014-10-07 09:05:47
【问题描述】:
我想在 C++ 中使用 preTranslateMessage() 来捕获像 ALT+CTRL+INSERT 这样的组合键,如下面的代码所示。我无法得到我所期待的。我尝试进行逻辑代码更改。
这似乎不是最好的解决方案。此外,使用键盘加速器可能会解决我的问题。但我无法完全弄清楚如何处理。
请任何人建议我一些可能的解决方案..
BOOL BMWView::PreTranslateMessage(MSG* pMsg)
{
//static int k_ctrlPressed,k_altPressed,k_insertPressed = 0;
static int keylog_var = 0;
if (pMsg->message == WM_KEYUP )
{
switch (pMsg->wParam)
{
case VK_CONTROL: if(keylog_var==0) keylog_var = 1; else keylog_var = 0;
break;
case VK_MENU: if(keylog_var==1) keylog_var = 2; else keylog_var = 0;
break;
case VK_INSERT: if(keylog_var==2) keylog_var = 3; else keylog_var = 0;
break;
default: keylog_var = 0;
break;
}
//Switch case is replaced with below if statement
if(keylog_var == 3)
{
keylog_var = 0;
// Set mode
CWnd *pWnd = (CWnd *)this;
pWnd->PostMessage(ID_ENTRY, 0L, 0L);
}
}
return BView::PreTranslateMessage(pMsg);
【问题讨论】:
-
使用加速器确实是最干净的解决方案。你应该这样做。