存在的必是合理的,都值得我们学习。学什么不重要,重要的是有一技之长。
如果你认为MFC垃圾请不要继续看。
如果你认为文档视图结构丑陋请不要继续看。
如果你认为ATL过时了请不要继续看。
MFC应用与框架的联系
要想分离应用与框架,首先得明白它们之间的联系。用向导生产一个多文档程序观察,可以发现只有一处关联:
CMainFrame
*
pMainFrame
=
new
CMainFrame;
if ( ! pMainFrame -> LoadFrame(IDR_MAINFRAME))
return FALSE;
m_pMainWnd = pMainFrame;
// The main window has been initialized, so show and update it.
pMainFrame -> ShowWindow(m_nCmdShow);
pMainFrame -> UpdateWindow();
既然App与Frame耦合这么松,把它们分离是很自然的想法,也是符合软件工程中的高内聚低耦合标准的。
if ( ! pMainFrame -> LoadFrame(IDR_MAINFRAME))
return FALSE;
m_pMainWnd = pMainFrame;
// The main window has been initialized, so show and update it.
pMainFrame -> ShowWindow(m_nCmdShow);
pMainFrame -> UpdateWindow();
MFC应用与框架的剥离
应用需要的只是一个主框架指针而已,可以定义一个插件接口:
interface
IMainFrame : IUnknown