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; UNITidFrom; UNITcode; } NMHDR; NMHDR代表通知消息头,为什么要这个头?因为某些控件用NMHDR作为头发送一个更大的结构消息,即使那些不知道更大结构内容的函数还是能处理通知头。 |
正文
vc++消息映射学习笔记(1)消息种类 2007-08-08 13:45:00
【评论】 【打印】 【字体:大 中 小】 本文链接:http://blog.pfan.cn/sword2008/28299.html
阅读(2895) | 评论(0)
版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!
评论