![]() |
NonVCL - Hintergrundfarbe eines "Labels" ändern
Hi,
Bin gerade dabei ein bissel mit SetLayeredWindowAttributes und NonVCL zu spielen wass auch gut funktioniert, was ich gern wissen möchte ist wie man bei einem Static Text die Hintergrundfarbe ändern kann.
Delphi-Quellcode:
So will es nicht. Jemand 'ne Idee ?
SendMessage(GetDlgItem(hwnd, edt_Edit), PBM_SETBKCOLOR, 0, RGB(255,0,0) {clWindowText});
|
Re: NonVCL - Hintergrundfarbe eines "Labels" ände
Normalerweise schickt ein Static-Control eine WM_CTLCOLOR Meldung an das Vaterfenster. Dort musst du die abfangen und verarbeiten (dabei gibst du einen HBrush und eine Farbe zurück).
|
Re: NonVCL - Hintergrundfarbe eines "Labels" ände
Hm, hilft mir jetzt nicht wirklich weiter, ich wies nicht wie das zu realisieren ist.
Muss ich da jetzt die WM_PAINT des Controls abfangen/überschreiben ? |
Re: NonVCL - Hintergrundfarbe eines "Labels" ände
Leider hat Flocke wohl ein veraltetes PSDK. Jedenfalls gibt es keine einheitliche Nachricht mehr, sondern vielmehr eine pro Control-Typ. Für Static lautet sie WM_CTLCOLORSTATIC. Diese mußt du abfangen und bearbeiten, wobei du aus dem Fensterhandle in lParam mit
![]() Als Rückgabewert nimmst du den Brush mit der Hintergrundfüllung. Ansonsten wParam als DC benutzen und mit ![]() ![]() ![]() |
Re: NonVCL - Hintergrundfarbe eines "Labels" ände
Hm... also ungefähr so wie du es in deinem absolut veraltetem und nicht mehr zu gebrauchenden sondern eher das von Luckie zu benutzendem Tutorial mit dem/der HyperlinkWndProc gemacht hast. :zwinker:
thx euch beiden. |
Re: NonVCL - Hintergrundfarbe eines "Labels" ände
Aus meiner Dialogvorlage:
Delphi-Quellcode:
whitebrush : HBRUSH = 0;
WhiteLB : TLogBrush = ( lbStyle: BS_SOLID; lbColor: $00FFFFFF; lbHatch: 0 );
Delphi-Quellcode:
WM_CTLCOLORSTATIC:
begin case GetDlgCtrlId(lParam) of IDC_STC_BANNER: { color the banner white } begin whitebrush := CreateBrushIndirect(WhiteLB); SetBkColor(wParam, WhiteLB.lbColor); result := BOOL(whitebrush); end; else Result := False; end; end; |
Re: NonVCL - Hintergrundfarbe eines "Labels" ände
Zitat:
|
Re: NonVCL - Hintergrundfarbe eines "Labels" ände
Zitat:
Sorry dafür (aber eine Suche nach WM_CTLCOLOR hätte ihm Aufklärung gebracht). Zitat:
Zitat:
|
Re: NonVCL - Hintergrundfarbe eines "Labels" ände
Er hätte auch einen System-Brush verwenden können (z.B.: GetStockObject(NULL_BRUSH)).
|
Re: NonVCL - Hintergrundfarbe eines "Labels" ände
Zitat:
@Nico: Der Brush ist aber nicht weiß. Aber der ist es: WHITE_BRUSH. Gute Idee, wieder Ressourcen gespart. ;) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:02 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz