MFC中Enter、ESC的屏蔽及PreTranslateMessage
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了MFC中Enter、ESC的屏蔽及PreTranslateMessage,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1144字,纯文字阅读大概需要2分钟。
内容图文
![MFC中Enter、ESC的屏蔽及PreTranslateMessage](/upload/InfoBanner/zyjiaocheng/1328/13f2af3a22aa4c6896520ad87bd61144.jpg)
在项目完备时,我们通常会发现当点击Enter键或者ESC时程序便会退出,而我们需要的是只要不点击“差”,程序便不会退出,本文主要涉及MFC中的Enter、ESC的屏蔽以及PreTranslateMessage
首先说下PreTranslateMessage
函数原型为:virtual BOOL PreTranslateMessage(MSG* pMsg);
其功能是:PreTranslateMessage是消息在送给TranslateMessage函数之前被调用的,绝大多数本窗口的消息都要通过这里,比较常用,当你需要在MFC之前处理某些消息时,常常要在这里添加代码。重载该函数可以实现窗口消息在派发给窗口函数TranslateMessage()和DispatchMessage()之前的过滤,MFC中,PreTranslateMessage()是虚函数,我们可以重载它来处理键盘和鼠标消息。
说明:该函数会在窗口函数执行前进行消息的处理,如果消息返回值为true,则消息处理终止,不会调用TranslateMessage()和DispatchMessage()来翻译和分发消息给相应的窗口;如果返回false,调用翻译和分发消息函数,只有穿过消息队列的消息才受PreTranslateMessage()影响,采用SendMessage()或其他类似的方式向窗口直接发送的而不经过消息队列的消息根本不会理睬PreTranslateMessage()的存在。
PeekMessage和GetMessage:GetMessage在没有消息的时候等待消息,效率低。PeekMessage没有消息的时候立刻返回,所以CPU占用率高。因为游戏不能靠Windows消息驱动,所以要用PeekMessage();PreTranslateMessage则是基于GetMessage的。
屏蔽Enter和ESC举例:
1 BOOL CFileAndFolderDlg::PreTranslateMessage(MSG* pMsg) 2{ 3// 屏蔽Enter、ESC4if(pMsg->message == WM_KEYDOWN && (pMsg->wParam == VK_ESCAPE) || (pMsg->wParam == VK_RETURN)) 5return TRUE; 6return CDialog::PreTranslateMessage(pMsg); 7 }
原文:http://www.cnblogs.com/zhangshuang0909/p/5452401.html
内容总结
以上是互联网集市为您收集整理的MFC中Enter、ESC的屏蔽及PreTranslateMessage全部内容,希望文章能够帮你解决MFC中Enter、ESC的屏蔽及PreTranslateMessage所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。