Windows的消息使用理解

原创 2004年07月19日 00:39:00

本工程代码下载//该工程涉及了其它事务处理

2004年7月18日, 17:04:44
------------------------------
Project: exAni_icon //动态变换图标
理解windows的消息使用方法,对于不知道的消息,通过今天这个试验,可以参看

MSDN6.0的winui.chm,这个文件列出了很多消息
消息的理解大致为:两类
一:(发送消息产生动作 调用某函数)■与直接调用某一函数效果相同■
通过SendMessage或PostMessage发送指定消息,然后由于消息机制的作用,系统

将会激活(转入执行)与之对应的响应函数(MFC类库)
如:SendMessage(WM_SETICON,ICON_SMALL,(LPARAM)hIcon);
//LRESULT SendMessage( UINT message, WPARAM wParam = 0, LPARAM lParam =

0 );
可以发现SendMessage()有三个参数,其中第一个是要发送的消息,而后面两个参

数在实际应用中,我们需要怎样来确定?不难发现,这两个参数是作为响应消息

的函数的参数,而一般在消息激活时,消息本身是会去获取响应它的函数的形参

值来送给该函数作为该函数的入口值,但由于这里消息是人工产生的,而非系统

产生的(在下面第二条会很清楚的阐述),所以需要把形参值一起在发送消息时

发送
那么实际上面的这个语句是等同于下面这句的
SetIcon(hIcon,ICON_SMALL);
==(SendMessage(WM_SETICON,ICON_SMALL,(LPARAM)hIcon);)
那么我们会说何必这样麻烦,直接用SetIcon()函数就可以,干妈还要用消息来变

相调用这个函数呢?对,是可以直接调用,但这是在这个例子中,但有的时候并

并不可以直接调用(因为你根本没办法来调用)
请看下面的这个例子
二:(执行某动作而产生某消息来找到 响应事件)■在VB中,这一步已被封装■
例如用户单击按钮时,会产生WM_COMMAND消息,这时消息机制会寻找

ON_COMMAND(IDR_ABOUT, OnAbout)宏来找到对应的被该宏所映射的函数(自定义

函数)
如果这里想直接调用OnAbout()函数基本是不可能的,表面上看,好像是直接就调用了OnAbout()因为在对话框资源上双击按钮就自动进入了OnAbout()函数体很象VB中写某按钮事件一样,但实际上就在这个工程中,VC(IDE)已为你自动做好了消息映射

这个处理函数也是我们通常说的事件响应函数,我的理解其实就是回调函数。而这个消息是一个事件。

为什么会说它是一个回调函数呢?

在网上曾看到有人是这样定义回调函数

回调函数,就是由你自己写的。你需要调用另外一个函数,而这个函数的其中一个参数,就是你的这个回调函数名。这样,系统在必要的时候,就会调用你写的回调函数,这样你就可
以在回调函数里完成你要做的事。被调用者回头调用调用者的函数(够咬嘴的),故称其为回调(callback)。

那么试想一下,Windows是怎样知道要调用这个函数的呢?

是通过消息映射知道的。哪又是怎么找到这个函数的呢?

这回问到重点了。所以用户需要将这个函数的指针告诉Windows。虽然在cpp文件下系统为你不能明显的看出它有地址

注册,那是因为这个注册过程已被消息映射的宏在内部完成了

这整个过程是完全满足回调函数的定义!

 

Windows的消息驱动机制

本文的知识点均来自罗云彬的《Win32下的汇编程序设计》,有兴趣的请读原书。 一个窗口就是一个程序吗?反过来,一个程序就是一个窗口吗? 答案是:一个窗口不一定是一个程序,它可能只是一个程序的一...
  • yongshi6
  • yongshi6
  • 2016年01月16日 15:52
  • 773

消息队列 的理解

消息队列的使用场景(1)原文链接:http://www.oschina.net/translate/top-10-uses-for-message-queue 过去几年中,我们一直在使用、构建和宣传...
  • lllliulin
  • lllliulin
  • 2016年08月22日 11:30
  • 901

理解Windows消息循环

理解消息循环和整个消息传送机制对Windows编程来说非常重要。如果对消息处理的整个过程不了解,在windows编程中会遇到很多令人困惑的地方。 什么是消息(Message) 每个消息是一...
  • nclovestars
  • nclovestars
  • 2014年09月18日 15:39
  • 172

理解Windows消息循环

理解消息循环和整个消息传送机制对Windows编程来说非常重要。如果对消息处理的整个过程不了解,在windows编程中会遇到很多令人困惑的地方。 什么是消息(Message) 每个消息是一...
  • yu0089
  • yu0089
  • 2013年06月06日 14:54
  • 421

对windows消息机制的理解

我感觉之前理解的有问题,重新写了一下,新手 #include LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM); ...
  • u010835196
  • u010835196
  • 2016年04月28日 20:42
  • 229

Windows消息队列MQ的使用

在系统间的进行数据传递,特别是数据量较大,分别插入不同的数据库的时候。 同时保证系统效率和响应时间,减少数据库负担的时候,使用消息队列是非常有帮助的。 废话不多说,直接上代码:(把下面的代码建为基...
  • yitonglizihao
  • yitonglizihao
  • 2016年05月24日 11:54
  • 2238

windows消息值全部定义

前言在逆向算法扫描插件时, 遇到一个windows消息值在msdn中没有定义. 去查资料, 有个老外将全部windows消息值和消息名称定义都码好了:) 写个测试程序, 封装了一个接口, ...
  • LostSpeed
  • LostSpeed
  • 2017年03月07日 20:28
  • 944

Windows消息处理

这里简述一下关于window消息处理,主要在实际应用中; 在一个Windows程序中,一个程序的的消息是通过一个大循环来实现接收处理的; 这个可以查看win32程序的编写,具体可以详细查找相关资料...
  • chinabinlang
  • chinabinlang
  • 2015年07月09日 15:03
  • 1414

常用的window消息值

常用的消息值如下:附录A Windows 常用消息大全 表A-1  Windows消息分布 消息范围 说 明 0 ~ WM_USER – 1 ...
  • eryongyan
  • eryongyan
  • 2014年02月20日 14:48
  • 1319

Windows消息机制详解

文章转载自:http://www.cppblog.com/suiaiguo/archive/2009/07/18/90412.html,感谢原作者。 消息是指什么?      消息系统对于一个wi...
  • mfcing
  • mfcing
  • 2015年03月09日 15:35
  • 2956
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Windows的消息使用理解
举报原因:
原因补充:

(最多只允许输入30个字)