您的位置:首页 > 其它

基于MFC对话框的键盘消息响应

2013-07-13 16:01 260 查看
在MFC中添加键盘的消息响应,通常是通过OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) 函数来完成消息的捕捉和响应。但是在很多情况下是对键盘按下是不会有响应的。百度大量资料后,发现网上的一种解决方案是通过重载另外一个函数:PreTranslateMessage(MSG*pMsg)来实现键盘消息响应的!那如何重载PreTranslateMessage(MSG*pMsg)函数呢?方法1、在VC6中创建基于对话框的工程,在Class view中找到相应的对话框类单击右键,在右键菜单中选择Add Virtual Fuction...项,然后找到PreTranslateMessage虚函数进行加载。(本人用的是VS2008吧,故未对此法进行尝试)方法2、对于VS2008、2010来说,打开C***Dlg.h,然后点击属性,图中画红圈的即为重写虚函数,点击,找到PreTranslateMessage重写即可最后,附上重写代码:
BOOL C小游戏Dlg::PreTranslateMessage(MSG* pMsg){// TODO: 在此添加专用代码和/或调用基类// TODO: Add your specialized code here and/or call the base class//判断是否是按键消息if( pMsg->message == WM_KEYDOWN ){MessageBox("有键被按下");//判断具体键switch( pMsg->wParam ){case VK_LEFT://按下左键MessageBox(_T("左"));pathname="..\\小游戏\\res\\1.bmp";OnPaint();return TRUE;break;case VK_RIGHT://按下右键MessageBox(_T("右"));return TRUE;break;case VK_UP://按下上键MessageBox(_T("上"));return TRUE;break;case VK_DOWN://按下下键MessageBox(_T("下"));return TRUE;break;default:return TRUE;break;}}return CDialog::PreTranslateMessage(pMsg);}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: