Windows-10 上的 CMDIChildWnd 外观

CMDIChildWnd look & feel on Windows-10

我有一个 MDI 应用程序。它已经发展了多年。在 Windows-7 上,一切看起来都是原生的。当我在 windows-10 上启动应用程序时,普通对话框将具有 windows-10 的外观。但是所有子视图仍然具有 Windows-7 外观。

我尝试将 CMDIChildWnd 更改为 CMDIChildWndEx,但这对 window 外观没有影响(客户端矩形周围的另一种边框样式除外)。我不想将所有子视图更改为停靠窗格,因为它会极大地改变用户体验。我只想让子视图具有原生外观。

这可能吗?我可以轻松地迁移到 docker windows 并将它们配置为正常运行 windows(完全没有对接功能,min/max/restore 按钮)吗?

默认情况下不这样做。 MDI child windows 的默认实现只是以旧样式绘制 windows。

查看MFC Next的源代码,应该可以通过OnNcPaint来实现。

CMDIChildWndEx 已经实现了 OnNcPaint。当您在 CMFCVisualManager::GetInstance()->IsOwnerDrawCaption() 上使用 returns TRUE 的样式时,标题和框架已经由视觉管理器绘制。

所有组件都在那里。也许强制 m_Impl.OnNcPaint 总是被调用就足够了。所以创建你自己的MDIChildwindowclass并强制MDI系统使用它。 (查看您的文档模板 class)。

如果还不够可以调用visualizer的所有组件自己画框

PS: 我刚刚在 BCG 实现中重新检查了它,我可以用不同的样式显示 MDI child windows。