关于windows消息的理解
我是先开始做项目,最近看《深入浅出MFC》中补课,以下是网上的文字:
1.标准Windows消息,又称为窗口消息。除WM_COMMAND外以WM_开头的消息,例如,WM_CREATE、WM_CLOSE。
2.命令消息。消息名为WM_COMMAND,消息中附带了标识符ID来区分是来自哪个菜单、工具栏按钮或加速键的消息。
3.通知消息。通知消息一般由列表框等子窗口发送给父窗口,消息名也是WM_COMMAND,其中附带了控件通知码来区分控件。
第一控件通知格式只是窗口消息的子集。它的特征格式如下:WM_XXXX。它主要来自下面的3种消息类型:
(1)表示一个控件窗口要么已经被创建或销毁,要么已经被鼠标单击的消息:WM_PARENTNOTIFY;(2)发送到父窗口,用来绘制自身窗口的消息,例如: WM_CTLCOLOR、WM_DRAWITEM、WM_MEASUREITEM、WM_DELETEITEM、WM_CHARTOITEM、WM_VKTOITEM、WM_COMMAND和WM_COMPAREITEM.(3)有滚动调控件发送,通知父窗口滚动窗口的消息:WM_VSCROLL和WM_HSCROLL
第二控件通知格式与命令消息共享,它的特征格式如下:WM_COMMAND。lParam用来区分是命令消息还是控件通知消息:如果lParam为NULL,则这是个命令消息,否则lParam里面放的必然就是控件的句柄,是一个控件通知消息。对于wParam则是低位放的是控件ID,高位放的是相应的消息事件。
第三控件通知格式特征格式:WM_NOTIFY。
下面是我的一些理解,请大家看看,我的理解是否正确,也帮我解答些问题:
a、标准Windows消息,又称为窗口消息,是对窗口做某种处理发出的,如WM_CREATE、WM_CLOSE,是有明确意义,系统有默认的处理代码。这个过程中,程序员,可以拦截,增加或替代系统默认的处理代码。
b、而命令消息,是由用户点击菜单、工具栏发出的,标记为WM_COMMAND,意义不明确的,程序员必须写函数代码,指定计算机如何运行的。
这种理解对不对?
关于控件消息,也叫控件通知消息:
c、WM_CTLCOLOR、WM_DRAWITEM之类的控件通知消息,意义也是明确的,类似上面的a,系统有默认的处理代码。这个过程中,程序员,可以拦截,增加或替代系统默认的处理代码。
WM_DRAWITEM这种消息,我的印象中好像只有ClistCtrl控件发出。
编辑框之类的控件是否能发出这种控件消息?
d、一种是WM_COMMAND格式的,但lParam里保存有控件的句柄。与上面的b类似,意义不明确的,程序员必须写函数代码,指定计算机如何运行的。
鼠标左键点击按钮,发出的信息,就是这种信息,对不对?
e、控件通知格式WM_NOTIFY,是对WM_COMMAND格式的发展,也是意义不明确的,程序员必须写函数代码,指定计算机如何运行的。
谢谢!
[解决办法]
呵呵,和我类似啊。倒过来的。不过我现在也没看过深入浅出......
[解决办法]
1.标准Windows消息,又称为窗口消息。除WM_COMMAND外以WM_开头的消息,例如,WM_CREATE、WM_CLOSE。
在MFC中WM_CREATE、WM_CLOSE都是些系统消息,系统都有对这些消息的默认出来方法,比如你可以向某个窗口发送WM_CLOSE消息来关闭窗口,MFC对该消息的响应函数是OnClose,当然用户也可以重写这些方法。
2.命令消息。消息名为WM_COMMAND,消息中附带了标识符ID来区分是来自哪个菜单、工具栏按钮或加速键的消息。
这些消息相对于上面的出来要相对麻烦写,需要自己写实现函数,和楼主的理解相符
3.通知消息。通知消息一般由列表框等子窗口发送给父窗口,消息名也是WM_COMMAND,其中附带了控件通知码来区分控件。
第一控件通知格式只是窗口消息的子集。它的特征格式如下:WM_XXXX。它主要来自下面的3种消息类型:
(1)表示一个控件窗口要么已经被创建或销毁,要么已经被鼠标单击的消息:WM_PARENTNOTIFY;(2)发送到父窗口,用来绘制自身窗口的消息,例如: WM_CTLCOLOR、WM_DRAWITEM、WM_MEASUREITEM、WM_DELETEITEM、WM_CHARTOITEM、WM_VKTOITEM、WM_COMMAND和WM_COMPAREITEM.(3)有滚动调控件发送,通知父窗口滚动窗口的消息:WM_VSCROLL和WM_HSCROLL
第二控件通知格式与命令消息共享,它的特征格式如下:WM_COMMAND。lParam用来区分是命令消息还是控件通知消息:如果lParam为NULL,则这是个命令消息,否则lParam里面放的必然就是控件的句柄,是一个控件通知消息。对于wParam则是低位放的是控件ID,高位放的是相应的消息事件。
第三控件通知格式特征格式:WM_NOTIFY。
第一控件通知格式只是窗口消息的子集。它的特征格式如下:WM_XXXX。
这类消息需要自己写处理函数,同时在发送消息的时候可以附加一个参数,多参数可以考虑结构体,
其他WM_CTLCOLOR、WM_DRAWITEM、WM_MEASUREITEM、WM_DELETEITEM、WM_CHARTOITEM、WM_VKTOITEM、WM_COMMAND和WM_COMPAREITEM.这些消息,系统都有相应的处理方法,用户只需必要时改写就可以
[解决办法]