8

我有一个大型遗留应用程序,它在我们运行它的每台 Windows 8 机器上显示为永久灰色边框,而其他应用程序的其他窗口准确地使用从桌面背景派生的颜色。对于我的生活,我无法找出原因。

我已经尝试了我最好的 google-fu 来抓取 MSDN 以获取 API 来控制它,但结果是空的。该应用程序看起来与 Windows XP、Vista 和 7 中的所有其他应用程序一样......只是 Windows 8 是灰色的。我们绝对没有添加 Win8 特定代码来处理这个问题。

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

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

任何帮助将不胜感激!

谢谢

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

4

2 回答 2

2

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

如果您看起来足够近,这在 Windows 7 上也是可见的。

于 2013-01-31T22:25:43.477 回答
1

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

于 2013-01-30T23:23:54.087 回答