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?
-
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; }