我正在开发一个具有对象浏览器 (CClassView) 的 MDI 应用程序,该对象浏览器必须根据活动的“文档”更改显示的内容。
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