软件开中有时候需要实现按下 Ctrl+A 等组合按键,在MFC直接捕获 ON_WM_KEYDOWN 是无法触发事件,需要重载PreTranslateMessage 函数
直接上代码
BOOL CMFCApplication1Dlg::PreTranslateMessage(MSG *msg) { //键盘按键 if(msg->message>=WM_KEYFIRST && msg->message<=WM_KEYLAST) { //GetKeyState函数返回VK_CONTROL(Ctrl)键的状态 小于0表示按下 if(msg->wParam==90 && ::GetKeyState(VK_CONTROL)<0) { this->MessageBox("KeyDown Shift!","Caption",MB_OK); } return TRUE; } return CDialogEx::PreTranslateMessage(msg); }
当按下Ctrl+Z时