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
			
			
									
									
						Windows Caption Color - Farbe des Fenstertitels
- 
				Mathias
- Beiträge: 7073
- 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
Müsste dies nicht in der Windows-Registry stehen ?
Dann würde man mit WinAPI Funktionen ran kommen.
			
			
									
									Dann würde man mit WinAPI Funktionen ran kommen.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
						Mit Java und C/C++ sehe ich rot
- Jorg3000
- Lazarusforum e. V.
- Beiträge: 414
- Registriert: So 10. Okt 2021, 10:24
- OS, Lazarus, FPC: Win64
- Wohnort: NRW
Re: Windows Caption Color - Farbe des Fenstertitels
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
Mittels uses muss die in Laz enthaltene Unit DwmApi eingebunden werden, von der ich vorher noch nie gehört hatte.
Grüße, Jörg
			
			
									
									
						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;Grüße, Jörg

 Verein
Verein 
 Links
Links Suche
Suche