① 捕获【Ctrl、Ctrl+Alt】和【Ctrl+Alt+Shift】这样的组合键:
} ② 捕获【Ctrl + Z】组合键:BOOL CTestDlg::PreTranslateMessage(MSG* pMsg) { if(pMsg->message==WM_KEYDOWN) { BOOL bCtrl=::GetKeyState(VK_CONTROL)&0x8000; BOOL bShift=::GetKeyState(VK_SHIFT)&0x8000; BOOL bAlt=::GetKeyState(VK_MENU)&0x8000; switch(pMsg->wParam) { case VK_DELETE: if(bCtrl&&bAlt&&bShift) MessageBox("你按下的是Ctrl+Shift+Alt+Delete组合键","信息提示",MB_OK); else if(bCtrl&&bShift) MessageBox("你按下的是Ctrl+Shift+Delete组合键", "信息提示",MB_OK); else if(bCtrl) MessageBox("你按下的是Ctrl+Delete组合键", "信息提示",MB_OK); return TRUE; case VK_INSERT: if(bCtrl&&bAlt&&bShift) MessageBox("你按下的是Ctrl+Shift+Alt+Insert组合键","信息提示",MB_OK); else if(bCtrl&&bAlt) MessageBox("你按下的是Ctrl+Alt+Insert组合键","信息提示",MB_OK); else if(bCtrl) MessageBox("你按下的是Ctrl+Insert组合键","信息提示",MB_OK); return TRUE; } }
BOOL CTestDlg::PreTranslateMessage(MSG* pMsg) { char nChar = pMsg->wParam; if(nChar == 'Z' && ((GetAsyncKeyState( VK_LCONTROL ) & 0x8000))) { AfxMessageBox("ctrl + z"); } return CDialog::PreTranslateMessage(pMsg); }
[转自]http://blog.csdn.net/dijkstar/article/details/8944131