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

本文介绍了VC++中三种消息类型:窗口消息、命令消息及控件消息,并详细阐述了每种消息的工作原理及其应用场景。窗口消息涉及窗口的创建、绘制和销毁;命令消息主要处理用户请求,如菜单选择;控件消息则用于通知父窗口控件状态的变化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

vc++消息映射之消息种类
2008-02-28 23:14
在WINDOWS中应用程式有三种消息:窗口消息,命令消息,控件消息。靠,搞这么复杂$@FUCK@##.
1。窗口消息一般和窗口内部运作有关,如创建窗口,绘制窗口,销毁窗口,通常,消息是从系统发到窗口,或从窗口发到系统。发送函数SendMessage()或PostMessage()。包涵的三个变量解释如下:
Message-------------WM_XXX
wParam---------------定义的命令
lParam----------------定义的命令
WM_XXX能够是许多窗口消息之一,如下列消息:
WM_CREAT:告诉窗口初始化自己。
WM_PAINT: 告诉窗口绘制自己。
WM_MOUSEMOVE:告诉窗口鼠标移经他。
当然更有好多,看MSDN吧~~~~

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

当用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-----------------定义的命令
bbs.bitsCN.com

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的指针

bitsCN_com


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值