3D屏幕保护程序干扰WPF应用程序(Windows XP)

问题描述:

我有一个相当大的应用程序,它的用户界面使用WPF。我最近发现3D屏幕保护程序存在一个不寻常的缺陷。当屏幕保护程序激活时,3D屏幕保护程序3D FlowerBox,3D飞行物体,3D管道,3D文本会导致我的WPF窗口中的1个消失。其他屏保很好。3D屏幕保护程序干扰WPF应用程序(Windows XP)

我的应用程序只在Windows XP上遇到这个问题。

我对DirectX有一些经验。当3D屏幕保护程序激活时,d3d设备上下文将切换到独占模式。我认为,当设备切换回协作模式时WPF无法恢复设备上下文(因此为什么它只影响Windows XP)

有没有人见过这种情况发生之前?对这个问题有没有补救办法?

的Windows XP SP3,DirectX 9.0c的,.NET 3.5

不就是准确的,但我已经看到绝对奇怪的问题与WPF和Windows XP,更是如此。很容易说的是,你应该尝试转移到Windows 7尽快,但我只是一个混蛋。

首先,检查您的视频设备驱动程序。在使用旧显卡的设备驱动程序时,我们在XP上使用WPF时遇到了很多问题。将其更新到最新版本。这可以照顾它。

如果这不起作用,并且如果可以,请尝试交换不同品牌的视频卡。这也可能起作用(尽管非常不受欢迎)。

第三 - 你的窗口是半透明还是非矩形?如果您将WPF应用程序切换为常规的,矩形的,无聊的,丑陋的Windows XP窗口,那么我们发现,当我们停止欣赏我们的主窗口时,很多这些怪癖消失了。我的猜测是,这与XP没有桌面窗口管理器这一事实有关。但是我再一次不知道。

我知道这一切都很不令人满意。我们在XP上遇到过类似的情况。我祈祷我们的IT部门能够将我们今年移至7 ...

+0

感谢您的回复。消失的窗口是透明且非矩形的。不消失的窗口是矩形和实心的。我现在试图进入信息圈,并找到指示屏幕保护程序已被激活的消息。当屏幕保护程序关闭时,我会尝试使用InvalidateVisual。 我的应用程序主要运行在Windows 2008服务器或Windows 7上,但我们有一些老死硬的客户喜欢Windows XP。 – 2010-04-19 02:04:40

+0

是的,你可能会考虑降低应用程序的性能,让它仅仅在你的XP客户的丑陋无聊窗口中显示该窗口。你可以告诉他们它对他们“起作用”,但是如果他们想要完整的体验,可以升级到Windows 7.痛苦。 – 2010-04-19 02:37:49

+0

我通过删除Windows XP用户的透明度解决了这个问题。无论如何,我估计他们有时间升级它们。 – 2010-04-21 00:47:03