分析MFC的设计模式-----行为模式

flyboybit 2002-07-26 08:24:36
这篇文章时,试图查阅一些中文资料,结果却很令人失望,我几乎找不到一篇介绍mfc设计模式的文章,所以,我写了以下的这些内容,还望批评指正。
职责链在MFC中的应用
在mfc中,消息如果是从子类流向父类(纵向流动),那么事情再简单不过,整个Message Map消息映射表已规划出十分明确的路线。但MFC 之中用来处理消息的C++ 类别并不呈单线发展,作为application framework 的重要结构之一的文档/视图结构,也具有处理消息的能力,因此,消息应该有横向流动的机会。MFC 对于消息循环的规定是:
1.如果是一般的Windows 消息(WM_xxx),一定是由派生类别流向基础类别,没有旁流的可能。
2.如果是命令讯息WM_COMMAND,就有奇特的路线了,这个路线将会在下面结合Chain of Resposibility(职责链)予以介绍。
MFC中,命令的映射就是一个Chain of Resposibility(职责链)。在MFC中,用户接口命令是以命令消息的形式被处理的。CcmdTarget类是所有可以接受和处理消息的类的父类。它提供消息映射表接口,可以把映射的消息ID对应于相关的消息处理器。一个命令消息在职责链中的类传递,直到其中一个为她提供了处理器为止。
在MFC中,先由CwinApp类获得消息,并且把它们分派到适合的窗口。大多数的命令消息被发送给应用程序的主桢窗口类来处理。传送的不同顺序是根据不同的消息类型由类库预先确定的。
Standard Command Route in MFC:(图形无法输入)


例如,在一个多文档应用程序中,一个菜单命令被选中,则消息沿着以下的链传递:
1. 主桢窗口
2. 主桢窗口传递消息到当前活动的多文档的子窗口
3. 多文档子窗口在检查她自己的消息映射表前把消息传送给她所对应的视图类,4. 看是否有相应的处理器。
5. 视图类检查她自己的消息映射表,6. 如果没有对应的处理器则她把消息返回给她所对应的文档类。
文档/视图模式的标准信息传递
7. 文档类检查她自己的消息映射表,8. 如果没有对应的处理器则将消息返回给她所对应的文档模版。
9. 文档类模版如果仍然不10. 能处理,11. 则返回消息倒视图类模版,12. 如果还不13. 能处理,14. 则依次返回到主桢窗口类和应用程序。
当消息一找到他所对应的消息处理器时,她就结束消息传递。
待续!
...全文
169 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
tangoole 2002-08-11
  • 打赏
  • 举报
回复
up
cakey 2002-08-11
  • 打赏
  • 举报
回复
没有新意,这样的文章以后不要发了。正如ttzzgg_80713(别欺侮我) 所说简直就是深入浅出里的翻版。如此拙劣的拷贝,让人感到恶心。
cy2001cy2002 2002-08-06
  • 打赏
  • 举报
回复
vc++书太难了,我买了三本,头都 大了,啊,不懂!!!!!!!!
flyboybit 2002-08-05
  • 打赏
  • 举报
回复
第二章已发表,仍然是纯理论,还望理解,没发粘图片
flyboybit 2002-08-05
  • 打赏
  • 举报
回复
第二章已发表,仍然是纯理论,还望理解,没发粘图片
flyboybit 2002-08-05
  • 打赏
  • 举报
回复
第二篇已在软件工程论坛上发表,仅是理论。没办法粘图片
SuperProgMan 2002-08-05
  • 打赏
  • 举报
回复
法无定法,
不要乱套,有严重的教条主义倾向!
ttzzgg_80713 2002-08-05
  • 打赏
  • 举报
回复
这是深入浅出里面的吧。
土豆 2002-08-02
  • 打赏
  • 举报
回复
同意老虎的说法,没有必要
Jinbj 2002-08-02
  • 打赏
  • 举报
回复
To:city_tiger(都市老虎)

骗人可不好啊 ^_^

这样正经公司看了也不会要你了
city_tiger 2002-08-01
  • 打赏
  • 举报
回复



盲人摸象,牵强附会。
想学设计模式的来这里下载:
http://www30.brinkster.com/tianhu
我正在写一本白话设计模式的书,写好了放上去。



vampireonline 2002-08-01
  • 打赏
  • 举报
回复
请问有没有谁愿意写一下vcl的设计模式啊?
0aaron 2002-08-01
  • 打赏
  • 举报
回复
请问什么时候可以有下一篇
victorliu168 2002-08-01
  • 打赏
  • 举报
回复
gz 多多交流
my mailbox: victorliu168@hotmail.com
qsfsea 2002-08-01
  • 打赏
  • 举报
回复
gz
mythus 2002-07-31
  • 打赏
  • 举报
回复
请问楼主是叫侯俊杰吗?引用文章请注明出处!
robot8848 2002-07-31
  • 打赏
  • 举报
回复
谁说得没有,我们年级的毕业论文就有四个人写的是《MFC的设计模式》
aaronzhang 2002-07-30
  • 打赏
  • 举报
回复
嗯?这不是《深入浅出MFC》里面的吗?
oo 2002-07-30
  • 打赏
  • 举报
回复
顶一下
w0017 2002-07-30
  • 打赏
  • 举报
回复
做记号
加载更多回复(8)

1,265

社区成员

发帖
与我相关
我的任务
社区描述
软件工程/管理 管理版
社区管理员
  • 研发管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧