Windows Aero Glashintergrund ist nach dem Winterschlaf unterbrochen.Wie kann ich das lösen?

StackOverflow https://stackoverflow.com/questions/4985056

  •  13-11-2019
  •  | 
  •  

Frage

Ich entwickle ein Programm in C # .NET 3.5 WPF. Es muss an Windows XP, Windows Vista und Windows 7 arbeiten. Auf den neueren Betriebssystemen möchte ich den Hintergrund im Aero-Glas erstellen. Dies ist also nur ein spezielles Design. Nach dem Ruhezustand, nach dem SUSSPENDEN oder nach dem Ändern von Windows-Waisen auf ein grundlegendes Design und zurück zu AERO wird das gesamte Glas vollständig schwarz angezeigt.

Ich zeige Glas über die Glasshelper-Klasse (kann mit Google gefunden werden).

Ich sehe eigentlich drei Möglichkeiten, dieses Problem zu lösen. Der erste ist, ja, es zu lösen. Aber ich habe SomE gelesen, dass dies ein Fehler im Windows Managed Code ist, sodass ich keine Option habe, es zu sehen. Korrigiere mich, wenn ich falsch liege.

Ich hatte also die Idee, das Fenster jedes Mal zu schließen, es wird minimiert und vollständig umgebaut, wenn es das nächste Mal verwendet wird.

das funktioniert ziemlich gut. Nach dem Winterschlaf wird das Fenster immer noch schwarz angezeigt, aber ich muss den Antrag nicht aufgeben, ich kann es immer noch minimieren und erneut maximieren.

Jetzt sehe ich auf Wege:

1) Ich schließe das Fenster jedes Mal, wenn der Computer setzt, hiberniert oder ändert das Design. Und ich öffne das Fenster wieder, wenn es sparen kann. Aber wie kann ich damit umgehen?

2) Ich akzeptiere, dass das Fenster in Schwarz angezeigt wird, bis jemand es minimiert. (Nicht mein Favorit), aber dann bekomme ich ein neues Problem: den Knopf in der Taskleiste. (Nicht das Tablett-Symbol). Ich muss es dauerhaft darstellen. Bei WinXP benötige ich es, um das Fenster zu öffnen, wenn Sie minimiert werden. Und vor allem auf Win7 brauche ich es, weil ich einige der neuen Vorteile der Superbar verwenden möchte! (Die Vorschau durch die Hovering ist nicht das Fenster, es wird ein statisches Bild sein.)

Danke allen, um mir zu helfen!

War es hilfreich?

Lösung 2

ok, danke allen!Aber ich glaube, ich habe meine eigene Lösung gefunden!

Ich bewältige mit den Nachrichten: wm_dwmcompositionChanged (0x031e) & wm_themAnhanged (0x031a)

und beim Fang eines dieser Meldungen weisen Sie einfach das Glas erneut oder einen neuen Hintergrund, je nach DWMIsCositionEnabled ().

Ich habe eigentlich etwas Ähnliches wie folgt: generasacodicetagpre.

Ich bekomme den Hwnd.

Ich haken Sie es an. generasacodicetagpre.

Ich mache den WPF-Fensterhintergrund transparent, da ich später in der WNDPROC-Funktion nur auf meinen HWND-Hintergrund (Win32) zugreifen kann. generasacodicetagpre.

Und jetzt muss ich nur den Stil zum ersten Mal zuordnen: generasacodicetagpre.

das ist es!Funktioniert perfekt für mich (Win 64 Home Premium), nachdem ich Aero deaktiviert oder aktiviert habe, zwischen verschiedenen Aero- oder Nicht-Aero-Stilen oder Winterschlafwaren, so dass genau das, wonach ich gesucht habe.Danke, für deine tollen Ideen!

Andere Tipps

Versuchen Sie, die WM_NCCALCSIZE-Nachricht zu behandeln und den Clientbereich (nccalcssize_params.rgrc0) um ein Pixel zu reduzieren.Es ist mein ernst.Ich fand, dass diese Lösung in Google Chrome verwendet wird, und es funktioniert auch für mich gut.

Sie möchten vielleicht einen Blick auf die WPF Shell Integration Library . Ich kann erinnern, es gab ähnliche Probleme mit dieser Bibliothek aufgrund eines Fehlers auf dem Desktop-Fenster-Manager in Windows 7. Die Bibliothek hat seine Quelle verfügbar, sodass Sie einen Blick darauf werfen können, wie sie damit umgehen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top