系统理解Win32 API和MFC(下)
2006-07-20 11:36:31 来源:WEB开发网核心提示: 提示,上面其实有多态情况发生,系统理解Win32 API和MFC(下)(3),比如你可以在搜一下pWnd->WindowProc(nMsg, wParam, lParam); 另外,OnWndMsg和DefWindowProc都是CWnd类的虚拟函数,如上面提到的chain of r
提示,上面其实有多态情况发生。比如你可以在搜一下pWnd->WindowProc(nMsg, wParam, lParam); 另外,OnWndMsg和DefWindowProc都是CWnd类的虚拟函数。
要是觉得不太好理解,最好在VC++里创建一个project实际跟踪一下,下面是我跟踪时调用栈映象的截图。
3. SubClass机制
从图中看到,SubClass机制以CWnd自身的m_pfnSuper为基础,和“MFC中Message响应函数的安装”很象。
4.frame work中的主要相关类
frame work中的主要相关类 就是 message route的候选人,正是它们的OnCmdMsg()共同完成了message route,形成了chain of responsability模式。
5. frame work中的chain of responsability模式
下图是一个对象树,注意消息会在纵向和横向两个方向传播。
消息在纵向方向上的传递,是在“上溯父类的massge map表”,MFC的message map完全是为了代替虚函数而采取的手段,而和message route无关。
消息在横向方向上的传递,才是message route,才是chain of responsability模式,由多个相关类的OnCmdMsg()共同完成。
三、 总结从上面的讨论不难发现,MFC中用到了不少设计模式,如上面提到的chain of responsability模式、composite模式和“订阅-发布”模式。上面的讨论不仅有助于程序员全面掌握Win32 API和MFC,对architect设计architecture也有很大帮助。
更多精彩
赞助商链接