正文

vc++消息映射学习笔记(1)消息种类 2007-08-08 13:45:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/sword2008/28299.html

分享到:

vc++消息映射学习笔记(1)消息种类

(2005-04-05 16:32)
接口原理好难懂哦 ,只看到老师嘴动动的,哎,算了,看看VC吧,这个还算比较可爱点的呢:)。
 从学VC开始就我就一直看到消息这个词,谈到WINDOWS核心机制的时候也老是这么说,我对它的理解肤浅到知道点个按钮算一个消息,汗~。买这本盗版书花30两银子呢,血不能白流,我拼了这条了老命了。。。。
  在WINDOWS中应用程序有三种消息:窗口消息,命令消息,控件消息。靠,搞这么复杂$@FUCK@##.
 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作为头发送一个更大的结构消息,即使那些不知道更大结构内容的函数还是能处理通知头。

http://www.heibai.net/vip/article/info/info.php?infoid=19167

阅读(2829) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册