Text und Hintergrundfarbe einer groupbox ändern in OnCtlColor (VISTA+XP)



  • hallo zusammen,

    ich hab da mal wieder eine frage, ich habe in meiner dialoganwendung die funktion OnCtlColor implementiert. darin ändere ich nach belieben die farben von einzelnen controls oder ganzen gruppen. soweit funktioniert das auch ganz gut, aber nicht bei groupboxen!?
    wieso kann ich bei einer groupbox nicht die textfarbe und deren hintergrund ändern?
    hier mal ein beispiel in dem ich eine id gezielt anspreche:

    ...
      //Prüfen ob ein bestimmtes control 
      if (pWnd->GetDlgCtrlID() == IDC_DECODING_QUALITY_GROUP_STATIC)
      {
        //textfarbe
        pDC->SetTextColor(RGB(200, 0, 0));
        //pDC->SetBkMode(TRANSPARENT);
        pDC->SetBkColor(RGB(255, 0, 255));
        return (HBRUSH)(((CalphaUMTSVideoApp*)AfxGetApp())->m_BkWhiteBrush);
      }
    ...
    

    ich habe es sowohl mit transparent als auch ohne probiert. bei anderen cstatic oder cedit controls funktioniert es auch.

    die funktion wird auch korrekt durchlaufen, aber an der darstellung ändert sich nix 😞

    ich bin erst aufg das problem gestoßen, als ich meine anwendung von vista auf xp getestet habe. wenn dort der xp luna look an ist, haben die groupboxen immer eine blaue schrift und ihre texthintergrundfarbe wird immer dunkler, je tiefer die groupbox auf der applikation angebracht ist.

    ich hoffe jemand hat einen tipp für mich.

    danke

    ks

    [nachtrag]
    ok, buttons oder dropdownlistenfelder kann ich so auch nicht färben, aber die groupbox muss sich doch verhalten wie ein cstatic, oder? 😕


  • Mod

    Nein! Bei XP Themes kannst Du die Groupbox nicht einfärben.

    Groupboxen sind keine Static's es sind Buttons.



  • hallo martin, danke für die antwort.

    und buttons kann ich meines wissens nur einfärben indem ich eine eigene klasse von cbutton ableite und selber den paint erledige, richtig?

    oder gibt es da ne einfachere methode? denn wenn ich im ctlcolor sage er soll den brush für buttons ändern, tut er es nicht.

    ps:
    aber wenn die von button kommen ist es schon verwirrend, das beim einfügen mit dem ressourceneditor in der standard id ein ID..._STATIC als ID vergeben wird.


  • Mod

    Du musst Dir das einfach mal intern von den Stilen ansehen.
    Ich habe auch nie verstanden, warum eine Groupbox ein Button ist.
    Aber entsprechend reagiert unter XP eine Groupbox nicht auf OnCtlColor!
    Wenn musst Du es per Ownerdraw machen.

    http://stackoverflow.com/questions/260040/how-to-make-the-group-box-text-background-transparent

    BTW: IDC_STATIC wird für alle Controls verwendet, die selbst keine WM_COMMAND Nachrichten senden! D.h. nicht dass diese Static-Controls sind.


Anmelden zum Antworten