Autor Beitrag
mb
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 185



BeitragVerfasst: Mo 20.10.03 15:43 
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.

_________________
Gruß,
MB


Zuletzt bearbeitet von mb am So 28.12.03 19:01, insgesamt 1-mal bearbeitet
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: 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

Zitat:
etc.

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 durchsuchen.
mb Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 185



BeitragVerfasst: Di 21.10.03 15:49 
ok, vielen dank!

_________________
Gruß,
MB
mb Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 185



BeitragVerfasst: 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??

_________________
Gruß,
MB
mb Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 185



BeitragVerfasst: 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?

_________________
Gruß,
MB
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: 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.