应用程序对象时全局对象,它在启动之前由系统创建。应用程序启动之后,程序的主函数首先调用应用程序对象的初始化函数InitInstace(),并在该函数中创建文档模板对象
CSingleDocTemplate *pDocTemplate;//声明文档模板指针(单文档)
pDocTemplate = new CSingleDocTemplate(//创建文档模板对象
IDR_MAINFRAME,//文档模板使用的资源ID
RUNTIME_CLASS(CNOTEDoc),//创建文档对象
RUNTIME_CLASS(CMainFrame), //创建主SDI框架窗口对象
RUNTIME_CLASS(CNOTEView));//创建视图对象
AddDocTemplate(pDocTemplate);//将文档模板加入链表
CMultiDocTemplate* pDocTemplate;//声明文档模板指针(多文档)
pDocTemplate = new CMultiDocTemplate(//创建文档模板
IDR_XINXIHTYPE,//加载文档资源
RUNTIME_CLASS(CXinxiHiding0320Doc),//创建文档对象
RUNTIME_CLASS(CChildFrame), //创建子窗口对象
RUNTIME_CLASS(CXinxiHiding0320View));//创建视图对象
AddDocTemplate(pDocTemplate);//加入链表
CMainFrame* pMainFrame = new CMainFrame;//创建应用程序主窗口
if (!pMainFrame->LoadFrame(IDR_MAINFRAME))//加载资源
return FALSE;
m_pMainWnd = pMainFrame;//主窗口对象赋予指针m_pMainWnd
在用文档模板构造函数创建文档模板对象的时候,在文档模板构造函数的参数列表中除了传递所需要的资源ID之外,还用MFC的宏RUNTIME_CLASS()传递了文档类、框架窗口类和视图类的类信息表,然后由模板类的构造函数根据资源和类信息表动态的创建文档、视图、窗口框架三个对象,其中,视图对象是由框架窗口对象创建并管理的。最后,应用程序创建文件模板文件并将其加入由应用程序对象维护的文档模板链表中。
应用程序框架对象之间的联系方法:MFC应用程序框架的各个对象都从各自的基类继承了一些获得其他对象指针的方法,从而可以使各对象通过这些指针与其他对象的成员互相联系