Hintergrundfarbe Radiobuttons ?
-
Aloha, liebe Leute,
vorab unter den verschiedensten kombinationen habe ich nichts konkretes zu Radiobuttons Hintergrundfarbe gefunden.
Wenn es doch etwas gibt, würde mich ein Link dorthin sehr freuen.Wenn ich in der ON_CTL_COLOR-Funktion meiner Klasse bin, lasse ich auf die CTLCOLOR_STATIC reagieren, dann auf das Element IDC_PASSWORD ( <-- was der Radiobutton ist ), setze die Hintergrundfarbe auf die gewünschte.
Nun macht das Dingens leider nur hinter dem Text die Farbe, nicht hinter dem gesamten Element. Sieht ziemlich bescheiden aus.
Soll ich etwa das ganze Element in ein CRect lesen müssen, und dann das ganze element extra pinseln müssen. Wäre doch ebenfalls bescheiden.
Über jeden Hinweis würde ich mich freuen.
Grüße
BOA
-
1. Ich dachte, ein RadioButton wäre ein Button und kein Static.
2. Um den Texthintergrund in der gleichen Farbe zu haben, muss SetBkColor auf den DC aufgerufen werden.
-
Aloha Rene,
ja, dachte ich auch immer, daß ein Radiobutton ein Button sei.

Aber irgendwie weigert die MFC sich, daß auch zu akzeptieren....

HBRUSH CPasswort::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) .... .... switch (nCtlColor) { case CTLCOLOR_BTN: { pDC->SetBkColor(RGB(249,255,180));ändert irgenwie nichts.
Laut Prosise soll ein Radiobutton auf CTLCOLOR_STATIC reagieren.
Ich weiß es net, aber es kann doch net so schwer sein. *traurigbin*
Grüße
BOA
-
Achja

manche Controls reagieren auch net auf das Setzen der Hintergrundfarbe von Texten ... typisch MS
-
wie kann ich die farbe meiner schrift verändern?
hat sich mal wieder von alleine geregelt...
-
Aloha Rene,
hier die Lösung für das Problem mit RadioButtons und der Hintergrundfarbe.
Das Problem taucht in diversen Foren auf, wird aber nirgendswo konkret beschrieben.Optionsfelder, Kontrollkästchen und statische elemente reagieren auf die CTLCOLOR_STATIC.
Bei statischen Elementen ist es irgendwie logisch, bei Optionsfeldern und Kontrollkästchen nicht.HBRUSH CKlasse::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); switch (nCtlColor) { case CTLCOLOR_STATIC: pDC->SetBkMode(TRANSPARENT); HBRUSH B = CreateSolidBrush(RGB(96,154,226)); // Farbe eurer wahl return (HBRUSH) B; break; } return hbr; }Vielleicht in die Faq, weil es doch außergewöhnlicher ist als bei anderen Elementen, wo man nur SetbkColor benutzen braucht.
Grüße
BOA