成都公司:成都市成华区建设南路160号1层9号
重庆公司:重庆市江北区红旗河沟华创商务大厦18楼
MFC 接收键盘输入指令
程序接收键盘输入并作出相应的反馈是一个非常常见的功能,在MFC中提供了WM_KEYDOWN,WM_KEYUP这些消息来反便我们进行编程,但是这是在窗体没有其他控件的情况下才适用的。当有其他控件时,其他控件(其实也是窗体)肯定会有一个获得焦点使得这些消息失效,我们可以通过重载对话框程序的PreTranslateMessage(MSG* pMsg)虚函数来实现这一功能。
首先在对话框类中先声明下:
[cpp]view plaincopy
BOOLPreTranslateMessage(MSG*pMsg);

- 然后就可以直接对键盘消息进行处理了,示例如下:
[cpp]view plaincopy
BOOLDlg::PreTranslateMessage(MSG*pMsg)//Dlg为对话框类
{
if(pMsg->message==WM_KEYDOWN)
{
switch(pMsg->wParam)
{
caseVK_UP:
printf("UPn");break;
caseVK_DOWN:
printf("DOWNn");break;
caseVK_LEFT:
printf("LEFTn");break;
caseVK_RIGHT:
printf("RIGHTn");break;
default:
break;
}
}
returnCDialog::PreTranslateMessage(pMsg);
}
- 由上述的代码也可以发现,我们不仅仅可以响应键盘消息,只要愿意,可以自己在这里定义一个消息循环来处理想做的事。

