现在的位置: 首页 > 自动控制 > 工业·编程 > 正文

vc++消息映射之消息种类

2012-08-10 22:39 工业·编程 ⁄ 共 1662字 ⁄ 字号 暂无评论

    在WINDOWS中应用程式有三种消息:窗口消息,命令消息,控件消息。

1、窗口消息

一般和窗口内部运作有关,如创建窗口,绘制窗口,销毁窗口,通常,消息是从系统发到窗口,或从窗口发到系统。发送函数SendMessage()或PostMessage()。包涵的三个变量解释如下:
Message-------------WM_XXX
wParam---------------定义的命令
lParam----------------定义的命令
WM_XXX能够是许多窗口消息之一,如下列消息:
WM_CREAT:告诉窗口初始化自己。
WM_PAINT: 告诉窗口绘制自己。
WM_MOUSEMOVE:告诉窗口鼠标移经他。
当然更有好多,看MSDN吧~~~~

2 、命令消息

命令消息通常和处理用户请求有关,当用户单击一个菜单或工具栏时,命令消息就产生了。并发送到能处理该消息的类或函数(如装载文本,保存选项等)。

当用SendMessage(),PostMessage()发送命令消息时,变量Message,wParam,lParam的格式如下:
Message--------------WM_COMMAND
wParam----------------0或CommandID
IParam-----------------0
CommandID要么时选中的菜单项的ID,要么是被单击的工具栏按钮ID,主意CommandID不能大于一个字长,系统就只用零来填写高位。某些控件也发送WM_COMMAND消息,区别两种消息的唯一的方法是看lParam是否为NULL。

3、控件通知消息

    通常控件通知消息是有重要的事情发生,有控件窗口发送到父窗口的意种消息。如打开一个组合框。控件通知父窗口为进一步控制子窗口提供了机会。例如,打开一个组合框,父窗口能够用组合框开始创建时得不到的消息填充他。

    控件通知经历了一个演变过程。因而SendMessage()的变量Message,lParam,wParam有三种格式如下:
(1) 第一种控件通知消息格式
第一种控件通知消息格式只能时窗口消息的子集。
Message--------------WM_XXX
wParam----------------定义的命令
IParam-----------------定义的命令

WM_XXX能够是以下消息中的任意一种:
WM_PARENTNOTIFY :表明一个控件窗口要么被建立或销毁,要么鼠标已单击了该窗口。
WM_CTLCOLOR, WM_DRAWiTEM, WM_MEASUREiTEM, WM_DELETEITEM,WM_CHARTOiTEM, WM_COMPAREITEM都是发往父窗口的消息,用来绘制自身控件的窗口。
WM_HSCROLL, WM_VSCROLL由滚动条发送,通知滚动窗口的父窗口。

(2) 第二中控件通知消息的格式
Message--------------WM_COMMAND
wParam----------------XN_XXX或控件ID
IParam-----------------窗口句柄
IParam用来区分命令传送消息还是控件(前边我们说过了吧,呵)。
XN_XXX 的值因发送通知的控件的不同而不同,例如当XN_XXX值为EN_CHANGE时,告诉父窗口显示在文本编辑框中的文本已发生了变化。

(3) 第三重控件通知消息格式
Message--------------WM_NOTIFY
wParam----------------控件ID
IParam-----------------指向NMHDR的指针

IParam指向一种结构,该结构包括有关该通知控件的任何内容,而不受空间和类型的限制,该架构就是NMHDR。
typedef struct tagNMHDR {
HWND hwnd;
UNIT idFrom;
UNIT code;
} NMHDR;
NMHDR代表通知消息头,为什么要这个头?因为某些控件用NMHDR作为头发送一个更大的结构消息,即使那些不知道更大结构内容的函数还是能处理通知头。

给我留言

留言无头像?