Это не то, что я ожидал, но вот одно из возможных решений:
http://forums.codeguru.com/showthread.php?473808-MFC-Doc-View-How-to-get-the-active-document-anywhere-in-my-application
Q: Как получить активный документ в любом месте в моем приложении?
A: Существует несколько методов: нужно сначала открыть активный кадр , затем вызвать CFrameWnd :: GetActiveDocument. ... В MDI-приложениях мы должны дополнительно получить активный дочерний фрейм MDI.
CDocument* GetMDIActiveDocument()
{
CDocument* pDoc = NULL;
CWnd* pWndMain = AfxGetMainWnd();
ASSERT(pWndMain);
ASSERT(pWndMain->IsKindOf(RUNTIME_CLASS(CMDIFrameWnd))); // Not an MDI app.
CFrameWnd* pFrame = ((CMDIFrameWnd*)pWndMain)->MDIGetActive();
if(NULL != pFrame)
{
pDoc = pFrame->GetActiveDocument(); // get the active document
}
return pDoc;
}
Этот пример кода может предложить другие (возможно, даже лучше) альтернативы:
http://msdn.microsoft.com/en-us/library/cstcs513%28v=vs.90%29.aspx
Там только одна проблема. В моем проекте нет класса 'CDocument', о котором я знаю. У меня есть 'CMyApp: CWinAppEx',' CChildFrame: CMDIChildWndEx' и 'CMainFrame: CMDIFrameWndEx'. Есть что-то, что мне не хватает? –