button farbe ändern



  • hallo, ich würde gerne wissen, wie ich die farbe von buttons und deren textfarbe zur laufzeit ändern kann.

    ich habe versucht, eine klasse von cbutton abzuleiten und onctlcolor zu überschreiben, was aber nicht funktioniert.
    ich bekomme keine message onctlcolor......

    mache ich das ganze mit einem dialog funzt dergleiche code ganz wunderbar.
    (messagemap exisitiert natürlich - die farben werden auch gesetzt)

    void COwnButton::SetColors(ULONG TextColor, ULONG BackgroundColor)
    {
    	m_ulTextColor = TextColor;
    	m_ulBackgroundColor = BackgroundColor;
    	m_brush.CreateSolidBrush(BackgroundColor); // CBrush-Object
    
    }
    
    HBRUSH COwnButton::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
    {
    	HBRUSH hbr = CButton::OnCtlColor(pDC, pWnd, nCtlColor);
    
    	if(m_ulTextColor || m_ulBackgroundColor)
    	{
    		switch(nCtlColor)
    		{
    		case CTLCOLOR_STATIC: pDC->SetTextColor(m_ulTextColor);
    							  pDC->SetBkColor(m_ulBackgroundColor);
    		case CTLCOLOR_BTN:    return (HBRUSH)m_brush;
    
    		}
    	}
    	return hbr;
    }
    

    ich bitte um hilfe !



  • du musst OnDrawItem überschreiben und den Button selber zeichnen.
    siehe http://www.c-plusplus.net/forum/viewtopic.php?t=45915&highlight=
    da habe ich ein Beispiel von mir gepostet, wie Control sublassing funktioniert.



  • Danke !


Anmelden zum Antworten