Textfarbe von Static Text ändern
-
Hallo!
Ich habe einen Dialog mit einem Static Text erstellt, und möchte nun die Farbe dieses Textfarbe verändern. Kann mir jemand sagen, wie das geht?
Danke schon mal im Voraus!
veryxRV
-
Das Static Control schickt an die DlgProc eine WM_CTLCOLORSTATIC Nachricht, wenn es gezeichnet werden muss. Die musst du abfangen. Details wie immer in der MSDN: http://msdn2.microsoft.com/en-us/library/ms651165.aspx
-
Okay danke! Bezieht sich diese Nachricht denn nicht nur auf den Hintergrund, aber nicht auf die Schriftfarbe?
EDIT: Habe gerade bei MSDN gelesen, dass sie angeblich auch für die Textfarbe zuständig ist. Nur wie gebe ich diese an? Der return-Wert legt ja nur die Hintergrundfarbe fest.
-
SetTextColor
-
Das funktioniert irgendwie nicht.
case WM_CTLCOLORSTATIC: SetTextColor((HDC)wParam, RGB(255,255,255)); return (INT_PTR) 0;
-
case WM_CTLCOLORSTATIC: if(GetDlgCtrlID((HWND)lParam) == IDC_STATIC1) { SetTextColor((HDC)wParam, RGB(255,0,0)); SetBkMode((HDC)wParam,TRANSPARENT); return (BOOL)GetSysColorBrush(COLOR_BTNFACE); } return FALSE;
-
Danke, das funktioniert

-
Eine Frage habe ich aber noch:
Wie mache ich das gleiche für den Text eines RadioButtons?
-
Genauso
-
Leider eben nicht:
// Funktioniert für Static Text case WM_CTLCOLORSTATIC: SetTextColor((HDC)wParam, RGB(255,255,255)); SetBkMode((HDC)wParam,TRANSPARENT); return (INT_PTR) GetStockObject(NULL_BRUSH); // Funktioniert nicht... case WM_CTLCOLORBTN: SetTextColor((HDC)wParam, RGB(255,255,255)); SetBkMode((HDC)wParam,TRANSPARENT); return (INT_PTR) GetStockObject(NULL_BRUSH);
-
Radio Buttons kriegen auch WM_CTLCOLORSTATIC, nicht WM_CTLCOLORBTN.
-
Hm.. anscheinend ja nicht, sonst müsste sich die erste case-Marke aus meinem Ausschnitt ja auch auf die RadioButtons auswirken, oder? Das tut sie aber dummerweise nicht.
