c++ - Windows-10 上的 CMDIChildWnd 外观和感觉

标签 c++ mfc windows-10 mfc-feature-pack

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

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

这可能吗?我能否轻松迁移到 docker 窗口并将它们配置为像普通窗口一样运行(根本没有停靠功能,最小/最大/恢复按钮)?

最佳答案

默认情况下不会这样做。 MDI 子窗口的默认实现只是以旧样式绘制窗口。

在查看 MFC Next 东西的源代码时,应该可以通过 OnNcPaint 实现它。

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

所有组件都在那里。也许强制始终调用 m_Impl.OnNcPaint 就足够了。所以创建自己的 MDI 子窗口类并强制 MDI 系统使用它。 (请参阅您的文档模板类)。

如果这还不够,您可以调用可视化工具的所有组件自行绘制框架。

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

关于c++ - Windows-10 上的 CMDIChildWnd 外观和感觉,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33297775/

相关文章:

c++ - 如何在 C++ 中使用 DLL

c++ - 将COFF文件的COMDAT符号解释为人类可读的功能签名

c++ - 使用二维数组作为参数的函数调用

c++ - Edit Control 或 MessageBox() 中的表格字符串格式

c++ - MFC:从另一个线程访问GUI?

c++ - Win32/MFC 从客户端矩形获取窗口矩形

windows - expo version 命令显示在这台机器上禁用的运行脚本

powershell - 如何在 powershell 中找到 Windows 10 上的 Microsoft Edge 版本?

python - 使用 python 在 Windows 10 上检测 USB 设备插入

c++ - 使用一些 "specialized"字段调用继承方法