MFC中ON_CAHR、ON_KEYDOWN(键盘消息)无法实现的解决方法
1.在mfc中的对话框中,影射了WM_CHAR和WM_KEYDOWN消息后,但是对话框不能响应ONKEYDOWN和ONCHAR函数
2.原因:MFC在进行设计的时候,这两个消息被对话框上的控件截获了,不能到达两个消息响应函数
3(假定需要实现键盘消息(ONCHAR为例)是我的WINDOWTHREE对话框).解决方法:重写PreTranslateMessage函数:步骤如下:
打开类视图,找到WINDOWTHREE右击点击属性后:
看见没那有个重写的图标点击,下拉找到PreTranslateMessage函数紧右边有个可以下拉的地方点击<ctreate>PreTranslateMessage 因为我已经ctreae过了所以是<delete>PreTranslateMessage
最后一步:在调转的代码(函数名为BOOL WINDOWTHREE::PreTranslateMessage(MSG* pMsg)
)下写上:
SendMessage(pMsg->message, pMsg->wParam, pMsg->IParam);
return CDialogEx::PreTranslateMessage(pMsg);
有的编译器可能会报错:这样需要删掉最后一个参数:
SendMessage(pMsg->message, pMsg->wParam);
return CDialogEx::PreTranslateMessage(pMsg);
这样就可以了: