CE 消息处理
MFC消息发送:
static HANDLE hWnd =FindWindow(NULL,_T("Client")); //找到窗口
if(hWnd == INVALID_HANDLE_VALUE || hWnd == NULL)
hWnd = NULL;
else
SendMessage(hWnd, WM_USER+, , ); //对窗口发送息定义消息
MFC消息接收:
//重载消息处理函数
protected:
virtual LRESULT WindowProc(UINT message, WPARAM wParam, LPARAM lParam);
//获取消息并处理
LRESULT CClientDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
switch(message)
{
:
Display_C();
break;
}
return CDialog::WindowProc(message, wParam, lParam);
}
另外一个更底层的消息处理函数
protected:
BOOL PreTranslateMessage(MSG* pMsg); //在MFC之前处理消息,采用SendMessage()或其他类似的方式向窗口直接发送的而不经过消息队列的消息,PreTranslateMessage()不会接收到。
//TODO:拦截窗口回车键消息转为发送Tab消息,keybd_event函数是比较底层的键盘消息
BOOL CClientDlg::PreTranslateMessage(MSG* pMsg)
{
if(pMsg->message == WM_KEYDOWN )
{
if(pMsg->hwnd == GetDlgItem(IDC_EDIT_ProID)->m_hWnd)
{
switch( pMsg->wParam )
{
case VK_RETURN:
keybd_event(, , ); //Tab
keybd_event(, KEYEVENTF_KEYUP, );
return TRUE; //返回TRUE,则不会把该消息分发给窗口函数处理。
}
}
}
return CDialog::PreTranslateMessage(pMsg);
}
在MFC框架下GetMessage(...)从消息队列中获取消息后交由PreTranslateMessage()处理,若其返回FALSE则再交给TranslateMessage和 DispatchMessage处理(进入WindowProc);如果用SendMessage, 则消息直接交到WindowProc处理,GetMessage不会取得SendMessage的消息,当然PreTranslateMessage也就不会被调用。 如果用PostMessage,则消息进入消息队列由GetMessage取得,PreTranslateMessage就有机会进行处理。当然PreTranslateMessage并不是万能的,它并不能过滤所有的消息,有些消息它处理不了,比如WM_NCPAINT消息。 一个线程只有一个消息队列, 一般只有一个TranslateMessage()和Dispatch,但却有很多个WindowProc, 一个窗口对应一个windowProc。也不是所有的消息都会经过 WindowProc()比如, 如果窗口中含有子窗口, 那么如果鼠标滑过子窗口, 鼠标移动消息直接在PreTranslateMessage()里面派发给了子窗口的WindowProc()
CE 消息处理的更多相关文章
- (转) Windows Mobile和Windows CE的区别
转发自 http://blog.sina.com.cn/s/blog_6250bbe60100tsf3.html WinCE Windows CE 是一个可定制的操作系统: Windows Mobil ...
- Storm如何保证可靠的消息处理
作者:Jack47 PS:如果喜欢我写的文章,欢迎关注我的微信公众账号程序员杰克,两边的文章会同步,也可以添加我的RSS订阅源. 本文主要翻译自Storm官方文档Guaranteeing messag ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(72)-微信公众平台开发-消息处理
系列目录 前言 Senparc.Weixin.MP SDK提供了MessageHandler消息处理类 在作者的Wiki中也详细说明了如何定义这个类,下面我们来演示,消息的回复,及效果 了解Messa ...
- Android消息处理机制(Handler、Looper、MessageQueue与Message)
Android是消息驱动的,实现消息驱动有几个要素: 消息的表示:Message 消息队列:MessageQueue 消息循环,用于循环取出消息进行处理:Looper 消息处理,消息循环从消息队列中取 ...
- CE修改器修改DNF 测试视频 阿修罗提升智力增加攻击力
使用CE修改器来修改网络游戏,如DNF 测试视频: CE修改器:指的是Cheat Engine,字面上的意思指的是作弊引擎的意思,是一款内存修改编辑工具.通过修改游戏的内存数据来得到一些原本无法实现的 ...
- PreEmptive Dotfuscator and Analytics CE
PreEmptive Dotfuscator and Analytics CE Dotfuscator 是领先的 .NET 模糊处理程序和压缩程序,有助于防止程序遭到反向工程,同时使程序更小更高效.D ...
- Android源码——应用程序的消息处理机制
Android应用程序在启动每个线程时,都会创建一个消息队列.线程的生命周期分为创建消息队列和进入消息循环两个阶段. 消息循环分为:发送消息和处理消息. Android系统主要通过MessageQue ...
- Android消息处理
基本概念: Message:消息,其中包含了消息ID.what,消息处理对象.obj以及处理的数据.arg1.arg2等,由MessageQueue统一列队,终由Handler处理. Handler: ...
- android的消息处理机制——Looper,Handler,Message
在开始讨论android的消息处理机制前,先来谈谈一些基本相关的术语. 通信的同步(Synchronous):指向客户端发送请求后,必须要在服务端有回应后客户端才继续发送其它的请求,所以这时所有请求将 ...
随机推荐
- c调用python
#include <Python.h>//python33(python2.x有几个函数不对应) /* PyImport_ImportModule 导入一个Python模块并返回它的指针 ...
- Python异常总结(出处: 鱼C论坛)
Python 标准异常总结http://bbs.fishc.com/thread-45814-1-1.html(出处: 鱼C论坛) Python标准异常总结AssertionError 断言语句 ...
- 7月10日——[HouseStark] 扬帆起航--第一次会议
本次会议为小组成员第一次会议 内容:每个成员提出一个及以上的项目及内容,成员内部商议并投票决定要做的项目 会议时长:90分钟 地点:电三楼8楼816室 成员 项目 讨论结果 崔文祥 高校就业信息汇总网 ...
- Python/dotNET Redis服务连接客户端调用SET方法的同时获取Redis服务器返回的内容
在用Python或dotNET redis客户端连接redis服务器的时候,当你调用客户端的SET方法后同时还想得到其返回的字符串,那么需要处理一下. 1. Redis Python redis客户端 ...
- EL和JSTL专题
EL简介 EL全名为Expression Language,它原本是JSTL 1.0为方便存取数据所自定义的语言.当时只能在JSTL标签中使用,如下: <c:out value="${ ...
- web浏览器兼容简要整理
ajax的创建 if (window.XMLHttpRequest) { var xhr = new XMLHttpRequest(); } else { //IE6及其以下版本浏览器 var xhr ...
- MySQL数据库7 - 汇总和分组数据
一 汇总和分组数据 查询语句 ---> 结果集(多条数据) ---> 聚合函数 ----> 单行记录 1.常用的聚合函数: sum() 数字 ...
- MFC 屏幕截图方法
//获取当前屏幕的并且保存图片 LRESULT CFeetScanView::SaveViewBMP(WPARAM wParam, LPARAM lParam) { CRect rect; this- ...
- OpenSuse Caffe CNN库 配置
参考官方文档:http://caffe.berkeleyvision.org/installation.html 1. 安装CUDA 参考 http://www.cnblogs.com/sunshy/ ...
- dsaf
fdsafds fdsa fds f dsa