基于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);}
相关文章推荐
- 【MFC】基于对话框的键盘响应
- 【MFC】基于对话框的键盘响应
- 【MFC】基于对话框的键盘响应
- 【MFC】基于对话框的键盘响应
- 【MFC】基于对话框的键盘响应
- 【MFC】基于对话框的键盘响应
- 【MFC】基于对话框的键盘响应
- 【MFC】基于对话框的键盘响应
- 【MFC】基于对话框的键盘响应
- 【MFC】基于对话框的键盘响应
- 【MFC】基于对话框的键盘响应
- 【MFC】基于对话框的键盘响应
- 【MFC】基于对话框的键盘响应
- 【MFC】基于对话框的键盘响应
- mfc对话框不能响应键盘消息
- 【MFC】基于对话框的键盘响应
- 【MFC】基于对话框的键盘响应
- 【MFC】基于对话框的键盘响应
- MFC小程序003------MFC使用WebBrowser组件,在对话框中创建滚动视图,动态创建一个静态文本控件并设置鼠标单击的消息响应
- MFC 对话框程序的键盘事件响应方法及与按钮事件的整合