Как получить текущий документ в приложении MDI

Чтобы получить указатель на текущий активный документ из приложения MDI, необходимо воспользоваться функцией CMDIFrameWnd::MDIGetActive(). MDIGetActive() возвращает указатель на активный CMDIChildWnd. Этот CMDIChildWnd * позволяет получить правильный указатель на текущий активный документ через GetActiveDocument().

Пример, приведённый ниже, показывает, как получить указатель на текущий активный документ из любого места приложения MDI.

Пример кода

   
void Some_Function()
{
CMyDoc *pActiveDoc; // CMyDoc наследован от CDocument
CMyFrame *pActiveFrame; // CMyFrame наследован от CMDIChildWnd
pActiveFrame =(CMyFrame*)
((CMainFrame*)(AfxGetApp()-<m_pMainWnd))-<MDIGetActive();
// версии MFC 2.5 и выше содержат AfxGetMainWnd(), которая
// которую можно использовать для получения доступа к основному
// окну вместо "AfxGetApp()->m_pMainWnd
pActiveDoc = (CMyDoc*)pActiveFrame->GetActiveDocument();
}