使用具有多个***窗口的 MFC MDI

Posted

技术标签:

【中文标题】使用具有多个***窗口的 MFC MDI【英文标题】:Using MFC MDI with multiple top level window 【发布时间】:2009-04-14 09:33:46 【问题描述】:

我正在使用多个*** Windows 应用程序。主窗口是一个MDIFrameWnd,我在CWinApp中放了一些代码来切换***窗口时切换m_pMainWnd。它工作正常,但是当我关闭一个主窗口时会触发一个断言。此断言来自 CMDIChildWnd:

void CMDIChildWnd::AssertValid() const

    CFrameWnd::AssertValid();
    ASSERT(m_hMenuShared == NULL || ::IsMenu(m_hMenuShared));

看起来窗口关闭释放共享菜单。我试图找出菜单在MFC框架中的发布位置,但找不到。有人可以帮我吗? 谢谢..

【问题讨论】:

【参考方案1】:

CMultiDocTemplate 类拥有共享菜单的所有权(它在其析构函数中破坏了 m_hMenuShared)。

【讨论】:

【参考方案2】:

我发现问题是。主框架中的菜单栏控件将破坏其 dtor 中的菜单。谢谢大家。

【讨论】:

以上是关于使用具有多个***窗口的 MFC MDI的主要内容,如果未能解决你的问题,请参考以下文章

关闭 MFC MDI 应用程序中的所有子窗口

在 MFC MDI 程序中拆分子窗口

MFC,文件新建对话框提示参数和多个文档类型?

如何使 MDI 子窗口保持在其兄弟窗口之上?

MFC项目组合:如何将没有文档类的SDI应用程序添加到MDI应用程序中?应该使用子窗口吗?[MFC]

如何使用 MFC 分别创建两个窗口?