0
我想要捕获在C++中使用preTranslateMessage()
的键组合,如ALT+CTRL+INSERT
,如下面的代码所示。我无法得到我所期待的。我试着做逻辑代码更改。
它似乎并不是最好的解决方案。另外,使用键盘加速器可能会解决我的问题。但我无法准确弄清楚如何执行过程。如何在C++中使用preTranslate消息捕获组合键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);
使用加速器确实是最干净的解决方案。你应该这样做。 – 2014-10-07 11:02:33