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消息处理过程

WINDOWS消息处理过程   一、引言 二、Windows消息机制的概念 1、DOS与Windows驱动机制的区别 2、消息 3、消息的来源 4、Windows的消息系统的组成 5、消息...
  • wlanye
  • wlanye
  • 2015-04-07 10:42:35
  • 1749

深入理解windows 消息机制

深入理解Windows消息机制         今天我们来学一学Windows消息机制,我们知道在传统的C语音程序中,当我们需要打开一个文件时,我们可以调用fopen()函数,这个函数最后又会调用...
  • liulianglin
  • liulianglin
  • 2013-11-07 15:52:12
  • 6973

Windows系统消息机制的详细理解!

写在前面的话:     很多书在讲Windows消息机制的时候都讲的比较简单或者比较模糊。我花了2天时间,把微软官方的讲解理解了一下,写成下列的文章,希望可以帮助到一些需要帮助的人! 消息和消息队列概...
  • softman11
  • softman11
  • 2010-11-25 21:54:00
  • 9233

Windows的消息驱动机制

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

C# Message (消息机制)

  • 2011年02月19日 10:38
  • 43KB
  • 下载

关于Windows消息钩子的理解与测试项目

前奏近来一直在自学Windows Hook相关的知识,已经尝试多种注入方式。尤其对消息钩子方式很感兴趣,因为看到Spy++能够截获系统中绝大多数应用的消息流,就很想知道它的工作原理,打算制作属于自己的...
  • swartz_lubel
  • swartz_lubel
  • 2018-02-11 16:47:10
  • 81

VC中的消息机制(三)(转自pcvc论坛)

MFC消息的处理实现方式  初看MFC中的各种消息,以及在头脑中根深蒂固的C++的影响,我们可能很自然的就会想到利用C++的三大特性之一:虚拟机制来实现消息的传递,但是经过分析,我们看到事情并不是想我...
  • sdspp
  • sdspp
  • 2005-12-20 19:03:00
  • 908

QT 中使用 Windows API----SendMessage() 进行窗体间消息传递

  • 2017年07月14日 10:35
  • 110KB
  • 下载

Windows Hook消息详解

  • 2010年03月02日 20:23
  • 82KB
  • 下载

windows 消息查询windows 消息查询

  • 2010年08月31日 15:32
  • 281KB
  • 下载
收藏助手
不良信息举报
您举报文章:Windows的消息使用理解
举报原因:
原因补充:

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