| mb hat folgendes geschrieben: |
Insbesondere möchte ich mit der Delphi-Anwendung reagieren, wenn in Windows XP das Theme geändert wird.
Die standard-Themes sind ja "Blau", "Olivgrün" und "Silver".
Auf einen wechsel zwischen diesen dreien (oder auch anderen) möchte ich reagieren. |
Na ja, und? WM_THEMECHANGE heißt die Antwort. Das ist eine Nachricht, die vom System an alle Anwendungen geschickt wird, wenn das aktuelle Thema verändert wurde. WM_SYSCOLORCHANGE wird auch gesendet. Auf beides kannst du in deinem Programm reagieren, und dann holst du dir den aktuellen Farbwert.
Ein Beispiel: Du hast den typischen Klassiklook von Windows, und die Farbe für das Fenster wäre Weiß. Du fragst aber nicht das Weiß ab, sondern du verwendest
clWindow. Wenn du die Farbe jetzt auf Rot änderst, dann erhält deine Anwendung die Nachricht WM_SYSCOLORCHANGE. Fragst du jetzt den Wert von
clWindow ab, dann ist er Rot.
Und die anderen Farben, die Delphi nicht kennt, berechnen sich meist aus bekannten Farben. Nimm das Menü von Office XP bspw. Hier wird die Farbe
clHighlight ermittelt und aufgehellt. Der Rahmen des Menüeintrages ist dagegen das ganz normale
clHighlight. Dadurch hast du im Klassik-Look von Windows dieses helle Blau mit einem dunkelblauen Rahmen drum.