旧版 MFC 应用程序在具有 Aero 主题的 windows7 操作系统上无法正常运行,但在经典主题下表现良好

Posted

技术标签:

【中文标题】旧版 MFC 应用程序在具有 Aero 主题的 windows7 操作系统上无法正常运行,但在经典主题下表现良好【英文标题】:Legacy MFC application not running properly on windows7 OS with Aero theme but behaving fine with Classic theme 【发布时间】:2012-09-03 07:05:44 【问题描述】:

我们有一个 MFC 应用程序,它是在 Visual Studio 2008 专业版上使用 VC9.0 编译器开发的。该应用程序在 windows server 2003、windows xp 和 2008 R2 操作系统上运行良好。当我在 windows7 上运行它(使用默认 Aero 主题)时,它的行为很奇怪,但是通过在 windows7 上应用经典主题,它运行良好。这背后的原因可能是什么?有人可以澄清吗?

我是否需要通过添加所需的更改来重新编译应用程序以在 windows7 操作系统上支持它?会有哪些变化,请在 msdn 上提供任何参考链接。

【问题讨论】:

奇怪=怎么办?它是否使用了已弃用或未记录的功能?它是否取决于 Aero 中不同的事物(价值观/行为)? 应用程序窗口必须显示缺少的单元格网格(通过使用 Draw3dRect() 调用创建),但如果我将缩放值更改为低于 80%,那么它就会显示出来。还有一件奇怪的事情是可停靠窗口正常显示。 【参考方案1】:

您的程序中存在错误:很可能在代码中的某个地方,它依赖于某些操作系统函数以特定方式执行某些操作,这在过去是正确的,但函数的文档并不能保证,并且是现在使用 Aero 的行为有所不同。

很抱歉,这不是很有帮助,但没有简单的解决方法:您将不得不尝试缩小问题范围并进行调试。就是这样。

【讨论】:

以上是关于旧版 MFC 应用程序在具有 Aero 主题的 windows7 操作系统上无法正常运行,但在经典主题下表现良好的主要内容,如果未能解决你的问题,请参考以下文章

需要向旧版 MFC 对话框应用程序添加锚定/停靠

处理 Windows 7 Aero 主题上的卸载表单[重复]

使WPF程序应用预置的控件风格, 如Aero, Luna, Royale, Classic等

不同(平台)上的 MonthCalendar 宽度,更正:主题(XP 与 Aero 主题)

带有 Windows Aero 主题的 QWebEngineView 比例错误

我可以使用 Visual Studio 2008 编译旧版 MFC 应用程序吗?