为什么我的申请是';Windows 8中的窗口边框是灰色的,而不是像其他窗口一样基于桌面?

为什么我的申请是';Windows 8中的窗口边框是灰色的,而不是像其他窗口一样基于桌面?,windows,mfc,windows-8,Windows,Mfc,Windows 8,我有一个大型的遗留应用程序,它在我们运行它的每台Windows8机器上都会显示一个永久的灰色边框,而其他应用程序的其他窗口则精确地使用从桌面背景衍生的颜色。为了我的生命,我不知道为什么 我已经尽了我最大的努力在谷歌上搜索MSDN的API来控制它,但结果是空的。该应用程序看起来像Windows XP、Vista和7中的所有其他应用程序……只是Windows 8是灰色的。我们肯定没有添加特定于Win8的代码来处理这个问题 它的外部只是一个MFC窗口,但内部嵌入了一个.NET/WPF组件和一个支持Di

我有一个大型的遗留应用程序,它在我们运行它的每台Windows8机器上都会显示一个永久的灰色边框,而其他应用程序的其他窗口则精确地使用从桌面背景衍生的颜色。为了我的生命,我不知道为什么

我已经尽了我最大的努力在谷歌上搜索MSDN的API来控制它,但结果是空的。该应用程序看起来像Windows XP、Vista和7中的所有其他应用程序……只是Windows 8是灰色的。我们肯定没有添加特定于Win8的代码来处理这个问题

它的外部只是一个MFC窗口,但内部嵌入了一个.NET/WPF组件和一个支持Direct3D 9的可视区域

我最好的猜测是,它可能与窗口中有Direct3D曲面有关,但我无法在任何地方验证这一点

任何帮助都将不胜感激

谢谢


编辑:灰色与没有焦点的效果相匹配,我们肯定会使用窗口焦点玩游戏……所以可能就是这样。

Windows 8中的桌面在窗口边框中不使用透明度,就像Windows 7和Vista在Aero主题中使用的那样。如果你将焦点移动到应用程序的另一个顶部窗口,这可以解释为什么你会看到灰色边框。尝试将没有焦点的窗口的颜色更改为可以从灰色中辨别出来的颜色,以验证您看到的是什么。

问题是开发人员重载了OnNcActivate(),并在最后返回TRUE。他们需要调用基类(CWnd)的OnNcActivate


如果仔细观察,也可以在Windows 7上看到这一点。

我没有解决方案。一段时间以来,这是一个众所周知的问题:我们可能有不同的问题。我不是从CDialogEx继承的,当我最小化/还原时,颜色对我来说仍然是灰色的。