包含该消息的处理函数的对象时,
则处理该消息,然后中断传递过程,不再搜索后续的对象。
由于命令消息可以被多种类的对象处理,因此命令消息的传递路径比较复杂,但总体思
想是由子窗口到父窗口,由窗口到文档。下面举一个简单的例子。
假设是一个多文档MDI 应用程序,用户触发了“编辑”菜单下的“粘贴”菜单项的命令
消息,此时消息依照以下顺序传递。
(1)MDI 主框架窗口首先收到此命令消息。
(2)主框架将处理命令的机会先让给其当前活动的MDI 子框架窗口。
(3)子框架窗口又将处理该命令的机会让给其活动的视图。
(4)视图先搜索自己的消息映shè,寻找对应的处理函数,如果没找到,则将消息传递给
与其关联的文档,找到则调用并中止传递过程。
(5)文档搜索自己的消息映shè,寻找对应的处理函数。一般情况下文档中包含“粘贴”
消息的处理函数,调用该处理函数完成粘贴功能。如果没有找到,文档将消息传递给文档模
板。
(6)文档模板进行相同的过程,如果没找到,将消息传递回子框架窗口。
(7)子框架窗口搜索对应的处理函数,如果没找到,则将消息传回MDI 主框架窗口。
(8)如果主框架窗口中也没找到,则消息最后停留在应用对象,不再进行进一步的传递。
从上面的叙述可以看出,命令消息的传递过程很复杂。然而一般情况下不需要了解这么
详细的消息传递路径,只需根据完成功能的要求,在相应的类中添加实现代码,就不会产生
冲突,比如例子中提到的粘贴功能,一般就是由文档完成的,因此只需在文档类中添加这个
命令消息的处理函数,而不必在别的类中添加与
松语文学免费小说阅读_www.16sy.com