我在MDI应用程序中具有MFC CDOcument和关联的CVIEW。我想在保持文档打开时分离并关闭视图(和相关的框架)。围绕MFC代码查看它的作用,在CDocument :: OnClosedocument();
中揭示以下内容// destroy all frames viewing this document
// the last destroy may destroy us
BOOL bAutoDelete = m_bAutoDelete;
m_bAutoDelete = FALSE; // don't destroy document while closing views
while (!m_viewList.IsEmpty())
{
// get frame attached to the view
CView* pView = (CView*)m_viewList.GetHead();
ASSERT_VALID(pView);
CFrameWnd* pFrame = pView->EnsureParentFrame();
// and close it
PreCloseFrame(pFrame);
pFrame->DestroyWindow();
// will destroy the view as well
}
m_bAutoDelete = bAutoDelete;
我想我可以与cdocument :: RemoveView一起使用。有没有更好的方法来解决此问题,而不仅仅是提升MFC来源,这种方法是否会导致我其他问题或副作用?该项目为VS2010 C 。
如果将cdocument :: m_bautodelete设置为false(创建文档之后),则在最后一个视图关闭时不应删除文档。
我不确定您要做什么,但您可能需要考虑创建一个可以附加到文档而不是试图将文档本身的单独的"数据"对象。