OnCtlColor Färbt die Button nicht. Warum?



  • Hallo,

    ich verwende CtlColor und es wird auch alles in Farbe dargestellt ausser die Button.... Die bleiben in Orginalfarbe.

    Was ist da falsch?

    Mein Code

    HBRUSH CKontaktDialog::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
    {
    	HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
    
    	COLORREF colorRed  = RGB(253, 0, 0); 
    	switch (nCtlColor) 
    	{ 
    	case CTLCOLOR_STATIC: // Für alle Statics 
    		pDC->SetTextColor(RGB(253, 0, 0)); 
    		pDC->SetBkColor(RGB(255, 255,215)); 
    
    	case CTLCOLOR_DLG: // Für den Dialog 
    		pDC->SetTextColor(RGB(253, 0, 0)); 
    		pDC->SetBkColor(RGB(255, 255,215)); 
    
    	case CTLCOLOR_BTN: // Für die Button
    		pDC->SetTextColor(RGB(253, 0, 0)); 
    		pDC->SetBkColor(RGB(255, 255,215)); 
    
    	case CTLCOLOR_EDIT:	// Für die Edit
    		pDC->SetTextColor(RGB(0,0,0)); 
    		pDC->SetBkColor(RGB(255, 255,215)); 
    
                    return (HBRUSH)m_brush; 
    
    	default: 
    		return CDialog::OnCtlColor(pDC, pWnd, nCtlColor); 
    	}
    
    	return hbr;
    }
    

    Danke....

    mfg Uwe



  • Buttons with the BS_PUSHBUTTON, BS_DEFPUSHBUTTON, or BS_PUSHLIKE styles do not use the returned brush. Buttons with these styles are always drawn with the default system colors. Drawing push buttons requires several different brushes-face, highlight and shadow-but the WM_CTLCOLORBTN message allows only one brush to be returned. To provide a custom appearance for push buttons, use an owner-drawn button.



  • Danke...!

    mfg Uwe



  • 😞

    ich finde leider die nachricht WM_CTLCOLORBTN nicht in der Nachrichten tabelle im klassen Assistenten ? (V6 C++)

    wie funktioniert diese Nachricht?
    ich würde gerne meine Buttons Färben..

    Ein kleines beispiel wie bei Uwe währe net.
    Oder ein Anhalts punkt. wie ich an die Nachricht WM_CTLCOLORBTN ran komme.

    Dankeeeee...

    Grüße Can



  • Hallo,

    schreib dir eine von CButton abgeleitete Klasse und benutze die WM_DRAWITEM, dort kannst du dann mit SetTextColor bzw. FillSolidRect den Button einfärben !

    Gruß
    :: NoName ::


Log in to reply