2012-11-09 2 views
0

MFC CDocument 및 연결된 CView가 MDI 응용 프로그램에서 열려 있습니다. 문서를 열린 상태로 유지하면서 뷰 (및 연관된 프레임)를 분리하고 닫고 싶습니다. MFC 코드를보고 어떻게 동작하는지 살펴보면 CDocument :: OnCloseDocument();문서를 열어 두면서 MFC CVIEW를 닫는 방법

// 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++입니다.

답변

1

CDocument :: m_bAutoDelete를 FALSE (문서를 만든 후)로 설정하면 마지막보기가 닫힐 때 문서가 삭제되지 않아야합니다.

구체적으로 무엇을 하려는지는 확실치 않지만 문서 자체를 유지하려고 시도하는 대신 문서에 첨부 할 수있는 별도의 '데이터'개체를 만드는 것이 좋습니다.