我有一个MDI应用程序。它已经发展多年。在Windows-7上,一切看起来都很原生。当我在Windows-10上启动应用程序时,正常的对话框将具有windows-10外观和放大器。感觉。但所有儿童观点仍然具有Windows-7外观和感觉。
我尝试从CMDIChildWnd更改为CMDIChildWndEx,但它对窗口外观没有任何影响。感觉(除了客户端rect周围的另一种边框样式)。我不想将所有子视图更改为停靠窗格,因为它会改变用户体验。我只想拥有原生外观和感受孩子的观点。
这甚至可能吗?我可以轻松迁移到docker窗口并将它们配置为像普通窗口一样(根本没有对接功能,最小/最大/恢复按钮)?
答案 0 :(得分:0)
默认情况下,此操作尚未完成。 MDI子窗口的默认实现只是以旧样式绘制窗口。
在查看MFC Next的源代码时,应该可以通过OnNcPaint实现它。
CMDIChildWndEx已经实现了OnNcPaint。当您在CMFCVisualManager :: GetInstance() - > IsOwnerDrawCaption()上使用返回TRUE的样式时,可视化管理器已经绘制了标题和框架。
所有组件都在那里。也许强制m_Impl.OnNcPaint总是被调用就足够了。因此,创建自己的MDI子窗口类并强制MDI系统使用它。 (请参阅您的doc模板类。)
如果这还不够,您可以调用可视化工具的所有组件来自行绘制框架。
PS:我刚刚在BCG实现中重新检查了它,我可以用不同的风格显示MDI子窗口。