Seite 1 von 1

Hintergrundfarbe XbpTabpage

Verfasst: Di, 06. Jun 2023 11:27
von ssemleit
Hallo,

ich versuche verzweifelt den Farbwert der Hintergrundfarbe einer XbpTabpage korrekt zu ermitteln.
Diese Farbe brauch ich, um selbst etwas auf die TabPage zu pinseln.

Randbedingungen:
Windows 11
Visualstyles ist aktiv, also oTab:useVisualStyle = .T.
oTab:setColorBG() liefert -34 (XBPSYSCLR_DIALOGBACKGROUND)

GraGetRGBIntensity( TranslateSysColor( -34 ) ) liefert mir RGB( 240,240,240), #F0F0F0.
Das wäre die korrekte Farbe, wenn oTab:useVisualStyle = .F.
Korrekt wäre aber RGB( 249,249,249), #F9F9F9 (gemäß eines Colorpickers).

Ich habe schon alle XBPSYSCLR_* durchgeforste. Keine liefert mir den Wert RGB( 240,240,240), #F0F0F0.
Auch kein Farbe per GetSysColor(user32.dll) liefert mir diesen Farbwert.

Ungern würde ich den Farbewert fest in meinem Code hinterlegen.

Re: Hintergrundfarbe XbpTabpage

Verfasst: Di, 06. Jun 2023 16:30
von AUGE_OHR
hi Stefan,

versuche es mal mit

Code: Alles auswählen

DLLFUNCTION GetPixel( hdc, x, y ) USING STDCALL FROM GDI32.DLL
DLLFUNCTION GetWindowDC( hwnd ) USING STDCALL FROM USER32.DLL
DLLFUNCTION ReleaseDC( nHWND, nHDC ) USING STDCALL FROM USER32.DLL

   hWnd:= oTabpage:getHWND()
   hDC := GetWindowDC( hWnd )

   nColor := GetPixel(hDC, nX, nY) 
   
   ReleaseDC( hWnd, hDC )   
da 0,0 für "Transparency" genutzt wird würde ich 2.2 als Position nehmen

p.s. "Visual" Style muss abgeschaltet sein

Code: Alles auswählen

   oTabpage:useVisualStyle := .F.

Re: Hintergrundfarbe XbpTabpage

Verfasst: Mi, 07. Jun 2023 7:30
von ssemleit
Hallo Jimmy,

danke für Deinen Verschlag.
Das kommt einem selbst gemachten Colorpicker gleich.
Da ich die Farbe bereits beim Erzeugen der Elemente benötige, also bevor die Page sichtbar ist, ist das für mich nicht praktikabel.
Wenn ich oTabpage:useVisualStyle auf .F. setze, dann könnte ich die Farbe der Page auch auf den gleichen festen Wert setzen
und hätte dadurch ein stimmiges Erscheinungsbild. Mal sehen.