Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Änderungen an der Systempalette für das Anzeigegerät können dramatische und manchmal unerwünschte Effekte auf die Farben haben, die in Fenstern auf dem Desktop verwendet werden. Um die Auswirkungen dieser Änderungen zu minimieren, stellt das System eine Reihe von Nachrichten bereit, die Anwendungen bei der Verwaltung ihrer logischen Paletten unterstützen und gleichzeitig sicherstellen, dass Farben im aktiven Fenster den beabsichtigten Farben so nah wie möglich sind.
Das System sendet eine WM_QUERYNEWPALETTE Nachricht an ein fenster der obersten Ebene oder überlappend direkt vor der Aktivierung des Fensters. Diese Nachricht gibt einer Anwendung die Möglichkeit, seine logische Palette auszuwählen und zu realisieren, damit es die bestmögliche Zuordnung von Farben für seine logische Palette erhält. Wenn die Anwendung die Nachricht empfängt, sollte sie die SelectPalette, Unobjectund RealizePalette Funktionen verwenden, um die logische Palette auszuwählen und zu realisieren. Dadurch wird das System aufgefordert, Farben in der Systempalette so zu aktualisieren, dass die Farben so viele Farben in der logischen Palette wie möglich entsprechen.
Wenn eine Anwendung Änderungen an der Systempalette verursacht, weil die logische Palette realisiert wird, sendet das System eine WM_PALETTECHANGED Nachricht an alle Fenster der obersten Ebene und überlappende Fenster. Diese Meldung gibt Anwendungen die Möglichkeit, die Farben in den Clientbereichen ihrer Fenster zu aktualisieren und Farben zu ersetzen, die durch Farben geändert wurden, die den beabsichtigten Farben genauer entsprechen. Eine Anwendung, die die WM_PALETTECHANGED Nachricht empfängt, sollte Unobject und RealizePalette verwenden, um die logischen Paletten zurückzusetzen, die allen inaktiven Fenstern zugeordnet sind, und dann die Farben im Clientbereich für jedes inaktive Fenster mithilfe der funktion UpdateColors aktualisieren. Diese Technik garantiert nicht die größte Anzahl exakter Farbzuordnungen; Es stellt jedoch sicher, dass Farben in der logischen Palette angemessenen Farben in der Systempalette zugeordnet werden.
Anmerkung
Um die Erstellung einer Endlosschleife zu vermeiden, sollte eine Anwendung niemals die Palette für das Fenster erkennen, dessen Handle mit dem im wParam Parameter der WM_PALETTECHANGED Nachricht übergebenen Handle übereinstimmt.
Die UpdateColors Funktion aktualisiert in der Regel einen Clientbereich eines inaktiven Fensters schneller als das Neuraen des Bereichs. Da UpdateColors jedoch farbübersetzungen basierend auf der Farbe jedes Pixels durchführt, bevor die Systempalette geändert wurde, führt jeder Aufruf dieser Funktion zu einem Verlust der Farbgenauigkeit. Dies bedeutet, dass UpdateColors- nicht zum Aktualisieren von Farben verwendet werden können, wenn das Fenster aktiv wird. In solchen Fällen sollte die Anwendung den Clientbereich neu zeichnen.
Das System sendet möglicherweise die WM_QUERYNEWPALETTE Nachricht, wenn Änderungen an der logischen Palette vorgenommen werden. Darüber hinaus sendet das System möglicherweise die WM_PALETTEISCHANGING Nachricht an alle überlappenden Fenster auf oberster Ebene, wenn sich die Systempalette ändert.