Windows消息分类

Windows应用程序都是基于消息驱动的,消息一般分为标准Windows消息、 控件、通知消息和命令消息三大类。

 

1. 标准Windows消息
      标准Windows消息,除WM_COMMAND消息外,所有以WM为前缀的消息都是标准Windows消息。标准Windows消息只能由窗口类和视图类进行处理。标准Windows消息都有黙认的处理函数,这些函数在CWnd类中过行了预定义,处理函数均以前缀On开头。
标准Windows消息主要分为三类:
(1)键盘消息
当用户按下键盘上的某一个键时,会产生WM_CHAR消息。该消息的处理函数为OnChar.
(2) 鼠标消息
WM_MOUSEMOVE   WM_LBUTTONDOWN    WM_RBUTTONDOWN
(3)窗口消息
      所有窗口的变化,包括内容重绘、窗口最大化、窗口重新定义大小、窗口滚动条滚动等产生的消息 均属于窗口消息。当调用成员函数UpdateWindow 或RedrawWindow要求重新绘制窗口内容时,将会发送WM_PAINT消息,当窗口最小化后再还原或被其它窗口遮盖后又移开时,也会发送WM_PAINT消息。WM_PAINT消息的处理函数为OnPaint.
2. 控件消息(WM_COMMAND)
       由控件产生的消息,例如按钮,列表框的选择等都会产生通告消息。控件消息是从控件传送给父窗口的消息。发送控件消息的控件在Visual C++中使用唯一ID号来进行标识,使用控件类来操纵相应的控件。与标准Windows消息一样,控件消息也在视图类、窗口类进行处理。但是,如果用户单击按钮控件,所发出的控件通知消息BN_CLICKED将作为命令消息来处理。
3.命令消息
       命令消息是菜单项、工具栏按钮、加速键等用户界面对象发送的WM_COMMAND消息。命令消息可以被文档、视图、窗口、应用程序等对象处理。发送命令消息的用户界面对象在Visual C++中也使用唯一的ID号来标识。通过给界面和命令消息分配相同的ID号,可以把用户界面对象与命令联系起来。 

       Windows把非命令消息直接发送给窗口类对象,该窗口类中用于处理该消息的处理函数 将被调用。但是,对于命令消息,将把命令消息发送给多个候选对象(称为命令目标),目标中总有一个将调用该命令的处理函数。
注意:由于CWnd类派生于CCmdTarget类,所以凡是从CWnd派生的类,他们既可以接收标准消息,也可以接收命令消息和通告消息。而对于从CCmdTarget类派生的类只能接收命令消息和通告消息,不能接受标准消息

*******************************************************************************************************************

 

  

MFC是Windows下程序设计的最流行的一个类库,但是该类库比较庞杂,尤其是它的消息映射机制,更是涉及到很多低层的东西,首先我在这里描述一下,Windows 的消息种类:

 一般分的话有三种:

1. 标准消息:除了WM_COMMAND,所有的以WM 开头的消息都是标准消息,从CWnd 派生的类,都可以接受此消息。

2.命令消息

         来自于菜单、加速键、或者工具栏按钮的消息,这类消息都以WM_COMMAND形式呈现,在MFC 中通过菜单项的标识(ID)来区分不同的命令消息,在SDK中,通过消息的wParam 参数来区别不同的消息,从CCmdTarget派生的类,都可以接受这类消息。

3. 通告消息

由控件产生的消息,比如:按键和鼠标的单击列表框的选择都会产生这类消息,目的是通告事件的发生,这类消息目的是为了向父窗口(通常是对话框)通知事件的发生,这类消息也是以WM_COMMAND形式呈现的,从CCmdTarget派生的类,都可以收到该消息。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值