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 color
    

    HTH,
    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?


Anmelden zum Antworten