ProcessMessageFilter的使用
来源:互联网 发布:郑州直销大师软件 编辑:程序博客网 时间:2024/06/07 06:51
在对话框程序中,我们经常是利用对话框上的子控件进行命令响应来处理一些事件。如果我们想要让
对话框(子控件的父窗口)类来响应我们的按键消息,我们可以通过ClassWizard对WM_KEYDOWN消息进行
响应,当程序运行后,我们按下键盘上的按键,但对话框不会有任何的反应。这是因为在对话框程序中,
某些特定的消息,例如按键消息,它们被Windows内部的对话框过程处理了(即在基类中完成了处理,有
兴趣的读者可以查看MFC的源代码),或者被发送给子控件进行处理,所以我们在对话框类中就捕获不到
按键的消息了。
就可以在对话框程序中处理按键消息了。在MFC中,是利用BOOL ProcessMessageFilter(int code, LPMSG
lpMsg)这个虚函数来过滤或响应菜单和对话框的特定Windows消息。下面我们通过程序给大家演示基于对
话框的应用程序对WM_KEYDOWN消息的捕获。
第一步:新建一个工程,选择MFC AppWizard (exe),工程名为KeyPress,点击ok,进入下一步,选择
Dialog based,点击Finish。
第二步:在CKeyPressApp类中增加一个类型为HWND,变量名m_hwndDlg的public的变量。
第三步:在CKeyPressApp类中的InitInstance()函数中初始化m_hwndDlg=NULL
第四步:在CKeyPressDlg类中的OnInitialDialog()函数中添加:
第五步:在CKeyPressApp类中Add Virtual Function,选择ProcessMessageFilter
BOOL CKeyPressApp::ProcessMessageFilter(int code, LPMSG lpMsg)
{
}
第六步:在对话框窗口销毁后,将CKeyPressApp类中的变量m_hwndDlg置为NULL,为此我们在
CKeyPressDlg类上点击右键,选择Add Windows Message Handler,在左边一栏中选择WM_DESTROY,在右
边按钮上选择Add and Edit,然后加入以下代码:
void CWinSunDlg::OnDestroy()
{
}
如果我们想捕获WM_KEYUP或WM_CHAR消息,也是类似。
- ProcessMessageFilter的使用
- ProcessMessageFilter的使用
- ProcessMessageFilter()方法实现对话框的键盘响应
- GUID使用的使用
- ${}的使用
- 的使用
- @[],@()的使用
- ->的使用
- +、-、*、/、%的使用
- &&的使用
- %:的使用
- Makefile中使用$$的使用
- Makefile中使用$$的使用
- Red5的使用--使用日志
- prefernce的使用具体使用
- 【工具使用】git 的使用
- 关于使用AsyncTaskLoader的使用
- 使用CABasicAnimation的基本使用
- 第0章 基础知识
- Java习惯用法总结
- 郭静梅 第一次c#作业源代码计算器
- 举例分析Linux动态库和静态库
- 转 xcode和mac 快捷键
- ProcessMessageFilter的使用
- Java访问权限
- 2015-04-07-数据聚合与分组运算(2)-分组级运算和转换
- VC++调试出错是否继续运行上次正确的程序
- Facebook 开源图片库
- 深入理解Java对象序列化
- apache官网历史版本下载地址
- elf文件格式与动态链接库
- win32汇编:helloASM