bei "edit" Control,wie kann man die Hintergrund-Farbe des controls ändern?
-
hallo,
bei folgendem Code kann ich nur die Hintergrund-Farbe des Texts ändern,case WM_CTLCOLOREDIT : SetTextColor((HDC)wParam, RGB(255,0,0)); SetBkColor((HDC)wParam, RGB(0,255,0)); return (LRESULT)hbrush;die Frage:
egal welche hbrush ich benutze, ändert sich die Hintergrund-Farbe nicht. wieso? danke vorher.
-
Hmm, ist vielleicht Transparenz eingeschaltet? Das könntest du mit SetBkMode ändern.
-
Hmmm,
wie sind hdc und hbrush definiert bzw. welche Werte haben sie?Der return-Wert soll mit (HBRUSH) und nicht mit (LRESULT) gecastet werden.
Versuche es mal so:
HDC hdc; ... case WM_CTLCOLOREDIT: hdc = (HDC)wParam; //handle to the device context for the edit control. SetTextColor( hdc, RGB( 255, 0, 0 ) ); //rot SetBkColor( hdc, RGB( 255, 255, 0 ) ); //gelb return( (HBRUSH)GetSysColorBrush( COLOR_3DHILIGHT ) ); //hilight colorHTH,
Martin[Nachtrag:]
Wichtig ist natürlich auch, daß das Edit-Control weder "read-only" noch "disabled" ist! -> Wenn doch: In diesem Fall erhältst Du WM_CTLCOLORSTATIC und nicht WM_CTLCOLOREDIT!
-
vielen Dank für Hilfe! endlich ich hab's !!!
hbrush soll "static" definiert werden!!! weil es in "WM_CREATE :" definiert wird!case WM_CREATE : hbrush_ctrl = (HBRUSH)GetStockObject(WHITE_BRUSH);bei default ist BLACK_BRUSH.
@_matze: bei default ist "OPAQUE", oder?
@Mmacher:
hhehe, welche Compiler hast du? bei meinem VS2008:
error C2440: 'return' : cannot convert from 'HBRUSH' to 'LRESULT'trotzdem vielen Dank!
vielleicht mir weiter helfen?
meine Text in einem kleinen edit control kann nicht vertikal zentriert, wie schafft man das?