自己对PretranslateMessage的一点理解
2015-12-17 21:37
357 查看
给一个CDialog添加 WM_CHAR -- OnChar 的响应:
在函数体中加断点,然后运行程序,你会发现,无论点什么按键,都不能进入函数。
随后添加PreTranslateMessage函数:
参考文章:
http://zhidao.baidu.com/link?url=4CTjHpfxy7OUjyvgKc68gUTTYal0vgoKC1M84ueAzdcDkv9FDEZ6mVNNDNLPbi5zqJw0lwDhdcQfifKaD-OfMLT3HaqPRranImVDDBXCrHi
void Clearn_WMCHARDlg::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) { // TODO: 在此添加消息处理程序代码和/或调用默认值 if(::isdigit(nChar) || '.' == nChar) { } else { return; } CDialog::OnChar(nChar, nRepCnt, nFlags); }
在函数体中加断点,然后运行程序,你会发现,无论点什么按键,都不能进入函数。
随后添加PreTranslateMessage函数:
BOOL Clearn_WMCHARDlg::PreTranslateMessage(MSG* pMsg) { // TODO: 在此添加专用代码和/或调用基类 if(WM_CHAR == pMsg->message) { SendMessage(pMsg->message,pMsg->wParam,pMsg->lParam); return 0; } return CDialog::PreTranslateMessage(pMsg); }重复前面的动作,这次成功进入短点。可见,PreTranslateMessage在消息机制里面起到“过滤器”的作用。消息产生后,首先要经过它。连它都过不去,是无法被响应的。
参考文章:
http://zhidao.baidu.com/link?url=4CTjHpfxy7OUjyvgKc68gUTTYal0vgoKC1M84ueAzdcDkv9FDEZ6mVNNDNLPbi5zqJw0lwDhdcQfifKaD-OfMLT3HaqPRranImVDDBXCrHi
相关文章推荐
- 支持向量机: Maximum Margin Classifier
- 利用Qt Assistant 定制帮助文档
- 一直以来伴随我的一些学习习惯(part1)
- Android SlidingMenu 开源项目 侧拉菜单的使用(详细配置)
- “杀京东”京东价格监控软件项目开发日志一
- 黑马程序员--C语言自学笔记---06函数简介和简单UNIX指令
- LeetCode——Valid Sudoku
- C++11原子操作性能测试
- 时间标签
- Android SlidingMenu 使用详解
- Mysql插入数据错误:Duplicate entry '一份' for key 'term'
- Operating System-进程间互斥的问题-生产者&&消费者引入
- Scala aggregate
- Cosos 学习笔记——场景
- 漫谈 Clustering (番外篇): Dimensionality Reduction
- Web数据持久化存储IndexedDB(不常用)
- 写爬虫,只是为了下小说
- LeetCode 111:Minimum Depth of Binary Tree
- 黑马程序员_java基础_java概述
- Android中获取全局Context