c++本来就已经够让人头痛了,没想到学了c++"还没办法"用于项目开发。因为还需要熟悉开发环境。在此,简要记录下初次探索MFC架构的一点心得体会。
要想利用vs开发项目,我们必需要了解MFC的架构以及它们间的相互依赖关系。
1) 应用程序程序实例: theApp;
它其实就是我们所启动的程序实例。是全局的。一旦它释放掉了,则整个程序的生命周期就结束了。我们可以通过全局函数::AfxGetApp();来取得该实例。
2) MFC程序的主框架: CMainFrm;
一个MFC应用程序也只有一个主框架。它负责程序中各视图以及各种面板的布局展现工作。我们可以在任意位置通过::AfxGetMainWnd();或::AfxGetApp()->m_pMainWnd;
来获得该主框架对象。
3) 文档模型: CDocTemplate;
正常来说,文档模型的职责:负责维护程序中所创建的文档实例。(它同主框架一样,由应用程序theApp维护)。
在应用程序中,我们可以通过 GetFirstDocTemplatePosition();取得第一个文档模型对象的地址(返回值为:POSITION类型).可以通过GetNextDocTemplate();取得下一个。从而
进行遍历。
而在文档中,我们可以通过GetDocTemplate();来取得其所属的文档模型对象。
4) 文档:CDocument:
其是负责数据维护的工作。其通过结合相应的视图,可将数据展现。一个文档可以维护多个视图。(注意:一个视图只能属于一个文档)。
在主框架对象中,我们可以通过:GetActiveDocument();取得当前活动的文档对象
在文档模型对象中,我们通过:GetfirstDocPosition();与GetNextDoc();遍历文档对象
在文档视图对象中,我们通过:GetDocument();取得所属的文档对象
5) 视图:CView:
与文档配置,实现数据的界面展现。
在主框架类中,我们通过:GetActiveView();获得当前活动视图
在文档类中,可以通过:GetFirstViewPosition();与GetNextView();遍历出所有的视图。