19、深入浅出MFC学习笔记,关键技术简介

书中讲这了RTTI,Dynamic Creation,Persistance,Message Mapping,Message Routing等的实现。[1]

尤其是其中的类别型录网的建立过程值得学习。

1MFC对于消息循环的规定:

(1) 如果是普通的Windows消息,则一定由派生类流向基类,不会有迂回。

(2) 如果是命令消息(WM_COMMAND),则路径十分复杂,下面总结命令消息的传递。

MFC为命令消息搜索相应消息处理函数的过程是:由菜单、工具栏等用户界面对象产生的命令消息,首先送给主框架窗口的标准MFC窗口函数;然后,窗口函数把命令传给MFC主框架窗口对象,进行命令消息的派送,并按表中的次序进行消息匹配。若找不到,则先继续搜索其基类的消息映射入口表,若都找不到,再迂回到下一个对象进行处理。

表 命令消息的迂回搜索路径

程序类型

路径

SDI(单文档)

当前视图→当前文档→文档模板→主框架窗口→应用程序对象

MDI(多文档)

当前视图→当前文档→创建文档的文档模板→活动的子框架窗口→主框架窗口→应用程序对象

对话框

当前对话框→对话框的父窗口→应用程序对象

    最后如果都找不到,则由默认的Windows消息处理函数结束该命令消息。

    为了提高消息匹配的效率,MFC内部有一个消息缓冲池,使用以消息值为关键字的散列(哈希)查找,池中可存放512条最近使用过的消息映射入口表项的有关信息(注意只需放入口表项­,即两个指针)。只有在消息缓冲池中匹配不到才进行前文所叙的搜索过程。[2]

参考

[1] 深入浅出MFC

[2] http://cc.seu.edu.cn/mm/cppsite/mfc/htms/kejian/07_2_6.htm

posted @ 2011-02-25 22:26  浪里飞  阅读(471)  评论(0编辑  收藏  举报