Button Farbe Mit OnCtlColor()



  • Hallo

    Ich möchte die Farbe des Buttons ändern.
    Der untere code Funktioniert mit TextFeld Aber keine wirkung bei einem Button.

    Was mache ich da Falsch.. Hilfe dankeeeeee!

    HBRUSH CSetupDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
    {
    HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
    // TODO: Ändern Sie hier alle Attribute für den DC.

    if(pWnd->GetDlgCtrlID()==/*IDC_TEXTFELD*/IDC_BUTTON1)
    {
    hbr = CreateSolidBrush(RGB(0, 128, 0));//Button soll grün werden
    pDC->SetBkMode(TRANSPARENT);
    pDC->SetTextColor(RGB(255, 255, 255));//Schrift soll weiss werden
    return hbr;
    }

    else
    return hbr;
    }

    Grüße Can



  • Hallo,

    leider kann man die Farbe eines "Standard-Button" nicht mit dieser Methode ändern, siehe dazu

    http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/q132/0/80.asp&NoWebContent=1

    es wird dort empfohlen, der Einfachheit wegen mit CBitmapButton zu arbeiten. Eine andere Möglichkeit wäre ein "owner-drawn" button, ist allerdings etwas aufwändiger, weil man sich hier um alle Aspekte des Zeichnens des Buttons in den verschiedenen Zuständen selber kümmern muß.

    MfG



  • Danke Probe-Nutzer

    Dann werde ich es mit Bitmap programmieren.

    Kann ich CBitmapButton einfach mit der Maus aus dem Steuerelementen liste auf mein Dialog Ziehen? oder wie bekomme ich so ein Button ?

    Grüße Can



  • es ist eigentlich ein ganz normaler Button, den du zuerst auf den Dialog ziehst. Dann mußt du "Besitzerzeichnung" (es ist also auch ein "owner-drawn" button, aber es wird einem etwas Arbeit abgenommen) unter "Formate" bei den Eigenschaften des Buttons einstellen. Dann eine Member-Variable vom Typ CBitmapButton von Hand (geht nicht mit dem Assistenten) in die Dialogklasse einfügen, und Bitmap mit der Bezeichnung erstellen. Mit AutoLoad kann dann die Bitmap zugewiesen werden. Ein kleiner Überblick über einige Aspekte ist hier:

    http://home.arcor.de/cpp_kurs/mfc/mfc/kap8/tut/tut3.htm

    MfG


Anmelden zum Antworten