Я работаю над приложением MDI, у которого есть объектный браузер (CClassView), который должен изменить то, что он отображает в зависимости от того, какой «документ» активен.
PS: ни один из моих поисков не сработал.
Это не то, что я ожидал, но вот возможное решение:
В: Как получить активный документ в любом месте моего приложения?
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
Других решений пока нет …