c++ MFC MDI如何根据活动文档更改类视图显示的内容

C++ MFC MDI how to change what class view displays based on active document

本文关键字:视图 显示 文档 MDI MFC 何根 活动 c++      更新时间:2023-10-16

我正在开发一个MDI应用程序,该应用程序有一个对象浏览器(CClassView),必须根据活动的"文档"更改其显示内容。

PS:我的搜索都没有成功。

这不是我所期望的,但这里有一个可能的解决方案:

http://forums.codeguru.com/showthread.php?473808-MFC-Doc-View-How-to-get-the-active-document-anywhere-in-my-application

问:如何在我的应用程序的任何地方获得活动文档?

A:有几种方法,一种是先获得活动帧然后调用cframewind::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