我有一个MDI应用程序。它是多年来发展起来的。在Windows7上,一切看起来都是本地的。当我在windows-10上启动应用程序时,普通对话框将具有windows-10外观和感觉。但是所有的子视图仍然具有Windows7的外观和感觉。
我试图从CMDIChildWnd更改为CMDIChildWndEx,但它对窗口的外观和感觉没有任何影响(除了客户端rect周围的另一种边框样式)。我不想将所有子视图更改为停靠窗格,因为这将大大改变用户体验。我只想有一个本土的外观和感受儿童的看法。
这有可能吗?我是否可以轻松地迁移到停靠窗口,并将它们配置为像普通窗口那样运行(完全没有对接功能,min/max/restore按钮)?
发布于 2015-11-30 11:20:15
默认情况下,这还没有完成。MDI子窗口的默认实现只绘制旧样式的窗口。
当查看MFC的源代码时,应该可以通过OnNcPaint实现它。
CMDIChildWndEx已经实现了OnNcPaint。当您使用在CMFCVisualManager::GetInstance()->IsOwnerDrawCaption()上返回TRUE的样式时,标题和框架已经由视觉管理器绘制。
所有部件都在那里。也许强制m_Impl.OnNcPaint总是被调用就足够了。因此,创建您自己的MDI子窗口类,并强制MDI系统使用它。(请参见文档模板类)。
如果这还不够,您可以调用可视化工具的所有组件来自己绘制框架。
PS:我刚刚在BCG实现中重新检查了它,我可以用不同的样式显示MDI子窗口。
https://stackoverflow.com/questions/33297775
复制相似问题