Entwickler-Ecke
Windows API - Windows XP: Systemfarben / Darstellung, NEW: Windows Themes!
mb - Mo 20.10.03 15:43
Titel: Windows XP: Systemfarben / Darstellung, NEW: Windows Themes!
Hallo!
1. Weiß jemand, wie ich auf das Farbprofil von Windows XP zugreifen kann?
2. Weiß jemand, wie ich (Event? Message?) auf den Wechsel des Farbprofils/Theme reagieren kann?
Z.B. Will ich den Farbwert einer aktiven Titelzeile, die Farbe des Explorer-Hintergrunds (Aufgabenbereich), etc.
Delete - Di 21.10.03 10:34
Titel: Re: Windows XP: Systemfarben / Darstellung
| mb hat folgendes geschrieben: |
| 1. Weiß jemand, wie ich auf das Farbprofil von Windows XP zugreifen kann? |
GetSysColor bzw.
GetSysColorBrush
| Zitat: |
| Will ich den Farbwert einer aktiven Titelzeile |
COLOR_ACTIVECAPTION
| Zitat: |
| die Farbe des Explorer-Hintergrunds (Aufgabenbereich), |
COLOR_WINDOW
usw.
| Zitat: |
| 2. Weiß jemand, wie ich (Event? Message?) auf den Wechsel des Farbprofils/Theme reagieren kann? |
WM_SYSCOLORCHANGE (alle OS), WM_THEMECHANGE (XP only).
Für beides bitte im PSDK nachschauen oder online die
MSDN [
http://msdn.microsoft.com] durchsuchen.
mb - Di 21.10.03 15:49
ok, vielen dank!
mb - So 28.12.03 16:46
Diese Parameter sind aber nun doch nur die Standard-Parameter, die sowieso in Delphi eingebunden sind.
Wie aber greife ich auf die Farbe zu, die z.B. für die allgemeinen Aufgaben (Explorer-Leiste, links -> z.B. beim standardmäßig eingestellten Arbeitsplatz) verwendet wird??
mb - So 28.12.03 19:04
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.
Und darum soll es auch bei den Systemfarben gehen: Hauptsächlich um die Farben, die in diesen Themes festgelegt sind. Also brauche ich eine Möglichkeit, an die aktuellen Farbwerte, z.B. für Fensterrahmen, die "allgemeinen Aufgaben" (Explorer) usw. heran zu kommen.
Wie geht das?
Delete - So 28.12.03 20:58
| 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.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!