Änderung der Hintergrundfarbe einer Combobox?



  • Wie kann ich das tun! Ich finde einfach nichts. Geht das überhaupt?


  • Mod

    Für das edit Control bekommst Du eine normale WM_CTLCOLOR Nachricht, die Du mit OnCtlColor behandeln kannst.
    Für das ListCOntrol musst Du Die COmboBox subclassen um die Nachrichten dieser Box abzufangen und die Hintergrundfarbe zu ändern.
    Mit GetComboBoxInfo kannst Du das Handle der Listbox erhalten.



  • Schon mal vielen Dank! Ich bin jetzt schon ein wenig weiter! Folgendes habe ich in der OnCtlColor meiner Listbox-Klasse

    HBRUSH CMyComboBox::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
    {
    	HBRUSH hbr = CComboBox::OnCtlColor(pDC, pWnd, nCtlColor);
    
    	if(nCtlColor==CTLCOLOR_LISTBOX)
    	{
    		HBRUSH Pinsel;
    		Pinsel=CreateSolidBrush(RGB(255,255,0));
    		pDC->SetBkColor(RGB(255,255,0));
    		pDC->SetBkMode(TRANSPARENT);
    		return Pinsel;
    	}
    	if(nCtlColor==CTLCOLOR_EDIT)
    	{
    		HBRUSH Pinsel;
    		Pinsel=CreateSolidBrush(RGB(255,255,0));
    		pDC->SetBkColor(RGB(255,255,0));
    		pDC->SetBkMode(TRANSPARENT);
    		return Pinsel;
    	}
    	return hbr;
    }
    

    Die Elemente werden auch wie gewünscht gelb, außer wenn die Combobox als Dropdown-Listenfeld konfiguriert ist. Dann ist nur die DropDown-Liste gelb, aber die Auswahl bleibt Weiß! Gibt es da noch einen Trick?


Anmelden zum Antworten