【问题标题】:C++ MFC MDI how to change what class view displays based on active documentC ++ MFC MDI如何根据活动文档更改类视图显示
【发布时间】:2013-05-14 01:15:04
【问题描述】:

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

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

【问题讨论】:

    标签: c++ mfc document mdi


    【解决方案1】:

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

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

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

    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: CWinAppExCChildFrame: CMDIChildWndExCMainFrame: CMDIFrameWndEx。有什么我想念的吗?
    猜你喜欢
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-23
    • 2021-12-18
    相关资源
    最近更新 更多