使用 MFC 框架创建多个顶层文档应用程序时,需要注意每个文档对象生命周期的管理。下面是示例代码,可以帮助您管理文档生命周期。
首先,在应用程序类中定义一个保存所有文档对象的向量。
// 声明一个文档对象指针向量
CPtrList m_DocTemplateList;
在应用程序类的 InitInstance 函数中添加文档对象。
// 创建和添加文档对象
CDocTemplate* pDocTemplate = new CMultiDocTemplate(IDR_MYTYPE,
RUNTIME_CLASS(CMyDoc),
RUNTIME_CLASS(CChildFrame), // 自定义 MDI 子窗口类
RUNTIME_CLASS(CMyView));
if (!pDocTemplate)
return FALSE;
AddDocTemplate(pDocTemplate);
m_DocTemplateList.AddTail((void*)pDocTemplate);
接下来,在应用程序退出前,循环释放文档对象。
// 循环释放文档对象
POSITION pos = m_DocTemplateList.GetHeadPosition();
while (pos != NULL)
{
CDocTemplate* pDocTemplate = (CDocTemplate*)m_DocTemplateList.GetNext(pos);
if (pDocTemplate)
delete pDocTemplate;
}
m_DocTemplateList.RemoveAll();
这样,您就可以管理多个顶层文档应用程序的生命周期了。