Radiobutton bzw. Checkbox selber "malen"



  • Hallo!

    Ich möchte von einem Radiobutton gerne den Hintergrund von dem runden Bereich verändern.
    Ich habe schon eine eigene Klasse und da drin diese Funktion:

    HBRUSH CMyRadio::CtlColor(CDC* pDC, UINT nCtlColor) 
    {
        pDC->SetTextColor(RGB(0, 255, 0));
        pDC->SetBkMode(TRANSPARENT);
        HBRUSH B = CreateSolidBrush(RGB(255, 0, 0)); //Hintergrundfarbe 
        return (HBRUSH) B; 
    }
    

    Jetzt habe ich einen roten Streifen auf meinem Dialog, der grün beschriftet ist - aber der Kreis ist so wie immer. 😞

    Folgendes möchte ich erreichen:
    Entweder
    hellgrauer Hintergrund vom Kreis und schwarzer Kreis
    oder
    weißer Hintergrund und dunkelgrauer Kreis.

    Das selbe nochmal für die Checkbox, aber das funktioniert hoffentlich sehr ähnlich.



  • Es ist möglich, das ganze Control selber zu Zeichnen. Ist natürlich etwas oversized für die kleine Änderung aber ne andere Lösung fällt mir ehrlich gesagt nicht ein. Wenn du das Control selber Zeichnen willst, musst du bei der Checkbox den Stil BS_OWNERDRAW geben. Dann zeichnet sich das Control nicht mehr selbst, sondern schickt eine WM_DRAWITEM Nachricht an seinen Parent wenn es neu gezeichnet werden muss.



  • Anders geht es nicht? 😞
    Das nachzubauen sieht so aufwändig und kompliziert aus? 😮

    Es geht einfach dadrum, dass "meine User" zu blind sind, bei einem deaktivierten Control den Inhalt zu erkennen. Okay, es ist aber auch anstrengend.
    Naja, Edits und Comboboxen sind schon umgebaut, nun fehlen mir noch die Radiobuttons und die Checkboxen.

    Nun hatte ich die Idee, dass die einfach immer enabled sind, aber nicht immer auf Klicks reagieren.
    Aber irgendwie wollte ich dann doch noch anzeigen, dass es gerade inaktiv ist.

    Hast du da vielleicht eine Alternative?


Anmelden zum Antworten