Formview单文档或对话框项目接受不到按键消息的解决办法
当对话框或formview界面上有控件时,由于焦点在控件上,因此wm_char,wm_keydown等按键消息会被控件捕获,而导致对话框或formview无法接受该类按键消息。这时候通常的解决方法是在对话框类或者forview类中重写PreTranslateMessage函数,该函数是在消息路由前的预处理函数,(经测试)该函数能够在控件处理按键消息之前对消息进行预处理。通常的解决思路是在该函数中将消息路由途径改变,即将消息的窗口句柄属性改变,由于该函数捕获到的按键消息是发送给控件的,因此pMsg->hwnd是控件的窗口句柄,只需将该句柄替换为formview或对话框的句柄即可。代码如下:
BOOL CMyDialog::PreTranslateMessage(MSG* pMsg)
{
if (pMsg->message==WM_CHAR)
{
pMsg->hwnd=m_hWnd;
return FALSE;
} return CFormView::PreTranslateMessage(pMsg);
}
然后只需要在formview类或对话框类中相应wm_char消息即可。
另外,也可以在该函数中直接对wm_char或者wm_keydown进行相应的处理,通过pMsg->wparam参数即可判断是那个键被按下,对于wm_char消息,该参数保存的是按键的ASCII码;对于wm_keydown消息,该参数保存的按键的虚拟键值。
Formview单文档或对话框项目接受不到按键消息的解决办法的更多相关文章
- 打开word文档总是自动弹出控件工具条的解决办法:
打开word文档总是自动弹出控件工具条的解决办法:1.查看是否word文档和模板中了'apmp宏病毒,按ALT+F11组合键,双击当前文档下属的ThisDocument,清空里面的内容:双击Norma ...
- MFC 单文档调用对话框
1.插入新的Dialog,如下图: 2.修改ID位 IDD_XMB 3.在单文件的Menu 中选中需要链接的按键,右键添加处理程序,如下图所示,添加完成后,在项目的xxxview.cpp中会生成如下函 ...
- 【技术文档】XuebaOnline配环境时遇到的问题和解决办法
在Ubuntu下装XuebaOnline可能遇到的问题和解决办法 自动安装Python3.0以上版本 编译命令采用python3 manage.py runserver,所以在linux系统下需要安装 ...
- MFC:“Debug Assertion Failed!” ——自动生成的单文档程序项目编译运行就有错误
今天照着孙鑫老师的VC++教程学习文件的操作,VS2010,单文档应用程序,项目文件命名为File,也就有了自动生成的CFileDoc.CFileView等类,一进去就编译运行(就是最初自动生成的项目 ...
- 基于MFC的单文档,多文档,对话框应用程序
从类的角度区分: 基于对话框(3个类): CAboutDlg 程序名App 程序名Dlg 单文档(5个类): CAboutDlg CMainFrame 程序名App 程序名Doc 程序名View 多文 ...
- VC单文档对话框添加托盘图标
一 单文档添加托盘 1. 在CMainFrame中定义NOTIFYICONDATA结构m_notify 2.在OnCreate中添加托盘初始化代码 int CMainFrame::OnCreate(L ...
- 创建MFC应用程序的类型:单文档+多文档+基于对话框
单文档支持文档视图架构.数据的保存--(读取--改动)文档类功能--显示(视图类功能),比較方便. 基于对话框,主窗体是对话框类型.能够方便的使用控件,所见即所得的编程,比較方便. 单文档类似&quo ...
- 【2016.3.30项目技术记录】]VS2010自动生成MFC单文档框架程序的修改:去除属性框,在CViewTree类中添加鼠标单击响应
转自http://blog.csdn.net/yanfeiouc2009/archive/2010/06/07/5653360.aspx 手头上有个东西要用到单文档,由于想省事,直接用VS2010做了 ...
- MFC单文档自定义扩展名及添加图标报Assertion错误
忽然无聊的想给自己写的程序保存的文件使用自己的名字简写作为后缀,于是有了下文. IDR_MAINFRAME格式介绍 IDR_MAINFRAME字符串资源中包含7个子串,分别以/n结束,即如下格式: & ...
随机推荐
- C语言深度剖析-----数组参数和指针参数分析
数组退化的意义 当向函数传递数组时, 二维数组参数 等价关系 注意事项 只能去一维数组 无法向一个函数传递一个任意的多维数组,注释地方出错 传递与访问二维数组的方式 动态地算出二维数组的列
- Android 系统状态栏一体化实现
自上周更新了QQ手机client.对于新版本号的QQ,系统状态栏也有蓝色色调,看起来有种清爽感觉.于是想自已也实现这样的效果,随查阅资料,自已调试实现这样的效果.Android 系统4.4以上都能够具 ...
- AOP技术应用和研究--OOP
1,软件编程技术的发展 软件编程技术与程序设计语言是分不开的.过去的几十年中,程序设计语言对抽象机制的支持程度不断提高:从机器语言到汇编语言,到高级语言,再到面向对象语言.每一种新的程序设计语言的出现 ...
- tensorflow 的 Batch Normalization 实现(tf.nn.moments、tf.nn.batch_normalization)
tensorflow 在实现 Batch Normalization(各个网络层输出的归一化)时,主要用到以下两个 api: tf.nn.moments(x, axes, name=None, kee ...
- Maven项目中mvn clean后找不到測试类问题
在Maven项目中进行单元測试,但mvn clean后又一次mvn install项目,再次进行单元測试.会有下面的错误. <span style="font-family:KaiTi ...
- 神经网络 vs 大脑
海马区域(负责记忆的关键区域) 0. 常见概念 神经递质:neurotransmitter 在突触传递中是担当"信使"的特定化学物质.简称递质. 重要的神经递质有:乙酰胆碱: 1. ...
- Python 语法细节(Python 2.x 与 Python 3.x 语法差异)
Language differences and workarounds 查询 Python 语言版本: >> import sys >> sys.version '3.5.2 ...
- Android 节日短信送祝福(UI篇:3-选择短信与发送短信的Activity的实现)
一.ChooseMsgActivity的实现 1.布局文件 <RelativeLayout xmlns:android="http://schemas.android.com/apk/ ...
- php 上传文件大小控制配置文件中设置的
Windows 环境下的修改方法 ================================================================第一步:修改在php5下POST文件大 ...
- c#List泛型数据扩展,把List<>型数据格式化成List<SelectListItem>,用来作dropdownlist的数据
代码例如以下 public static List<SelectListItem> CreateSelect<T>(this IList<T> t, string ...