Как закрыть MFC CVIEW, оставив документ открытым

У меня есть MFC CDocument и связанный CView, открытый в приложении MDI. Я хотел бы отсоединить и закрыть представление (и связанный с ним кадр), сохраняя документ открытым. Оглядываясь на код 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 ++.

0

Решение

Если для CDocument :: m_bAutoDelete задано значение FALSE (после создания документа), он не должен удалять документ при закрытии последнего представления.

Я не уверен, что вы конкретно пытаетесь сделать, но вы можете подумать о создании отдельного объекта «данные», который можно прикрепить к документу, а не пытаться держать сам документ вокруг себя.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]