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):指向客户端发送请求后,必须要在服务端有回应后客户端才继续发送其它的请求,所以这时所有请求将 ...
随机推荐
- React之Froms
In React, a <textarea> uses a value attribute instead. This way, a form using a <textarea&g ...
- Two Sum (c#)
Given an array of integers, find two numbers such that they add up to a specific target number. The ...
- placeholder 不支持IE修复
<script type="text/javascript"> var JPlaceHolder = { //检测 _check : function(){ retur ...
- 作业七:团队项目——Alpha版本冲刺阶段002
今日进展:我们终于安装好了软件,今天开始进行作业设计. 今日安排:今天开始我们要开始我们的框架的设计.
- Java泛型学习笔记 - (一)泛型的介绍
一.什么是泛型:泛型的作用是用来规定一个类, 接口或方法所能接受的数据的类型. 就像在声明方法时指定参数一样, 我们在声明一个类, 接口或方法时, 也可以指定其"类型参数", 也就 ...
- CnBlog客户端Windows Live Write安装方法
官方帮助http://space.cnblogs.com/forum/topic/8550 注:如果自动配置没有成功,需要手动配置: a) 在"Type of weblog that yo ...
- HTMlhleper
@{ ViewBag.Title = "Index";} <h2>Index</h2> <div> @{ int id=12121; var I ...
- vim笔记2
用vim 快两年了 看过教程也不少,总的来说还是得自己多练习,当自己觉得有需要的时候,再添加功能.这里分享个看过的最好的教程,出自贴吧的某个朋友,写的很好 零 学会盲打 壹 配置文件先从最简开始,在 ...
- php 画图片2
<?php // 使用php操作gd库做图 // 1. 创建一个画布资源 $im = imagecreatetruecolor(200, 50); // 2. 创建背景色 // 2.1 得到背景 ...
- UIKit框架之UIEvent
1.继承链:NSObject 2.事件大致可以分为三种事件:触摸事件.动作事件.遥控事件 3.获取事件的touches (1)- (NSSet<UITouch *> *)allTouche ...