Windows Caption Color - Farbe des Fenstertitels

Antworten
xint
Beiträge: 1
Registriert: Mi 22. Jan 2025, 08:38

Windows Caption Color - Farbe des Fenstertitels

Beitrag von xint »

Guten Morgen,
ich wollte einer Form die Farbe des Fenstertitels geben und dachte dabei sofort an die ganzen vordefinierten Farben, die ich bisher nie verwendet hatte (-;
Aber das war wohl nichts. Keine der Farben entspricht der Farbgebung unter Windows 11 dem aktuelllen Fenster.

Es wird sicher eine Möglichkeite geben, die Farbe zu ermitteln. Hast jemand vielleicht eine Handvoll Zeilen Code für mich ?

Danke !
Stefan

Mathias
Beiträge: 6955
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Windows Caption Color - Farbe des Fenstertitels

Beitrag von Mathias »

Müsste dies nicht in der Windows-Registry stehen ?
Dann würde man mit WinAPI Funktionen ran kommen.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
Jorg3000
Lazarusforum e. V.
Beiträge: 385
Registriert: So 10. Okt 2021, 10:24
OS, Lazarus, FPC: Win64
Wohnort: NRW

Re: Windows Caption Color - Farbe des Fenstertitels

Beitrag von Jorg3000 »

Hi!
Ich bin selber immer wieder überrascht, dass Windows scheinbar für wirklich alles einen eigenen API-Call hat.
Falls diese Win32-Hilfeseite die gemeinte Farbe beschreibt ... https://learn.microsoft.com/en-us/windo ... ationcolor

Code: Alles auswählen

function getWindowTitleColor(out AColor: TColor): Boolean;
var
  R, G, B: Byte;
  pfOpaqueBlend: BOOL;
  pcrColorization: DWORD;
begin
  Result := DwmApi.DwmGetColorizationColor({out}pcrColorization,{out}pfOpaqueBlend) = 0;
  if Result then
    begin
     R := (pcrColorization and $FF0000) shr 16;
     G := (pcrColorization and $00FF00) shr 8;
     B := pcrColorization and $0000FF;
     AColor := LCLIntf.RGB(R, G, B);
    end;
end;
Mittels uses muss die in Laz enthaltene Unit DwmApi eingebunden werden, von der ich vorher noch nie gehört hatte.
Grüße, Jörg

Antworten