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