2010-04-19 5 views
2

J'ai une assez grande application qui utilise WPF pour son interface utilisateur. J'ai récemment trouvé un défaut inhabituel concernant les économiseurs d'écran 3D. Les économiseurs d'écran 3D 3D FlowerBox, 3D Flying Objects, 3D Pipes, 3D Text font disparaître 1 de mes fenêtres WPF lorsque l'économiseur d'écran s'active. D'autres économiseurs d'écran sont bien.Screensaver 3D interférant avec l'application WPF (Windows XP)

Mon application ne rencontre ce problème que sous Windows XP.

J'ai de l'expérience avec DirectX. Lorsqu'un économiseur d'écran 3D est activé, le contexte du périphérique d3d passe en mode exclusif. Je suppose que WPF a du mal à restaurer le contexte de l'appareil lorsque l'appareil revient en mode coopératif (d'où son impact sur Windows XP uniquement)

Quelqu'un at-il déjà vu un tel scénario? Y a-t-il un remède au problème?

Windows XP SP3, DirectX 9.0c, .NET 3.5

Répondre

0

Non pas que l'exact, mais je l'ai vraiment vu d'étranges problèmes avec WPF et Windows XP, en particulier. La chose facile à dire serait que vous devriez essayer de passer à Windows 7 dès que possible, mais alors je serais juste un abruti.

Tout d'abord, vérifiez votre pilote de périphérique vidéo. Nous avons eu beaucoup de problèmes avec WPF sous XP quand les anciens pilotes de cartes graphiques sont utilisés. Mettez-le à jour avec la dernière version. Cela pourrait en prendre soin.

Si cela ne fonctionne pas, et si vous le pouvez, essayez d'échanger la carte vidéo contre une autre marque. Cela peut aussi fonctionner (bien que hautement indésirable).

Troisièmement, votre fenêtre est-elle semi-transparente ou non rectangulaire? Si vous changez votre application WPF pour qu'elle devienne une fenêtre Windows XP régulière, rectangulaire, ennuyeuse et laide, nous avons constaté que beaucoup de ces bizarreries se sont dissipées lorsque nous avons cessé de nous amuser avec nos fenêtres principales. Je suppose que cela a quelque chose à voir avec le fait que XP n'a pas de gestionnaire de fenêtres de bureau. Mais là encore je ne sais pas vraiment. Je sais que tout cela est très insatisfaisant. Nous avons eu ce genre de choses qui nous sont arrivées sur XP. Je prie pour que notre service informatique puisse nous déplacer à 7 cette année ...

+0

Merci pour la réponse. La fenêtre qui disparaît est transparente et non rectangulaire. Les fenêtres qui ne disparaissent pas sont rectangulaires et solides. J'essaie maintenant de puiser dans le messageloop et de trouver les messages qui indiquent qu'un économiseur d'écran a été activé. Je vais essayer InvalidateVisual lorsque l'économiseur d'écran est fermé. Mon application fonctionne principalement sur Windows 2008 Server ou Windows 7, mais nous avons quelques vieux clients qui aiment Windows XP. –

+0

Ouais, vous voudrez peut-être envisager de dégrader l'application pour afficher simplement cette fenêtre dans une fenêtre ennuyeuse laide pour vos clients XP. Vous pourriez leur dire que cela "fonctionne" pour eux, mais s'ils veulent l'expérience complète, mettre à niveau vers Windows 7. Douloureux. –

+0

J'ai résolu le problème en supprimant la transparence pour les utilisateurs de Windows XP. Je pense qu'il est temps de les mettre à niveau de toute façon. –