Hintergrundfare eines Gruppenfeldes



  • Hallo,
    ich würde gerne die Hintergrundfarbe eines Gruppenfeldes einfärben und habe deshalb folgendes probiert:

    HBRUSH CHSIDepotmanagerDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
    {
    	// Hintergrund einfärben
        HBRUSH hbr = CreateSolidBrush(RGB(255, 255, 255));
    
        // Texthintergrund transparent machen
        pDC->SetBkMode(TRANSPARENT);
    
       // Hintergrund für Text transparent setzen
        if(pWnd->GetDlgCtrlID() == IDC_Navigation)
        {      
    		// Hintergrund für Text auf weiss setzen
          pDC->SetBkColor(RGB(255, 255, 255));
          // Textfarbe ändern
          pDC->SetTextColor(RGB(255, 0, 0));
        }
    
        return hbr;
    }
    

    Wo liegt mein Fehler bzw. kann man das bei Gruppenfeldern so nicht machen und braucht einen Workaround?


  • Mod

    Gruppenfelder haben keinen IMHO Hintergrund. Sie zeichnen selbst keinen Hintergrund sondern übernehmen den des Parents. Wenn Sie einen Hintergrund hätten würden Sie ja alle eingeschlossenen Child-Windows überlagern.



  • Falls ich die Aufgabenstellung richtig verstanden habe musst du folgenden code verwenden:

    HBRUSH CdertDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
    {
    	HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
    
    	CRect r;
    	if (pWnd->GetDlgCtrlID() == IDC_STATIC_COLOR)
    	{
    		CBrush br;
    		br.CreateSolidBrush(RGB(200,0,0));
    		this->GetDlgItem(IDC_STATIC_COLOR)->GetClientRect(r);
    		pDC->FillRect(r,&br);
    		br.DeleteObject();
    
    	}
    	return hbr;
    }
    

Anmelden zum Antworten