Elemente in Dialog unterschied einfärben
-
Hallo,
habe ein kleines Problem. Ich möchte mehrere Steuerelemente in verschiedenen Farben darstellen
oder den Text einfärben. Nachdem aber die erste if-Schleife mit einer Return-Anweisung kommt,
kehrt die Funktion zurück (ist ja klar) wird aber nicht noch einmal gestartet. Somit bleiben
alle nachfolgenden Anweisungen unausgeführt.Habe ich einen Denkfehler? Eigentlich wird die Funktion OnCtlColor doch für jedes
Steuerelement aufgerufen, oder nicht?...sehr komisch.HBRUSH CFarbeDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { // Brush für den Dialog Hintergrund anlegen HBRUSH hBGBrush = CreateSolidBrush(RGB(128, 184, 223)); // Brush für den Hintergrund des Eingabefeld festlegen HBRUSH hBGEdit = CreateSolidBrush(RGB(0, 0, 0)); if(pWnd->GetDlgCtrlID() == IDC_TEXT) { // Hintergrund für Text auf weiss setzen pDC->SetBkColor(RGB(255, 255, 255)); // Textfarbe ändern pDC->SetTextColor(RGB(255, 0, 0)); } if(pWnd->GetDlgCtrlID() == IDC_EDIT1) { // Hintergrund für Text transparent setzen pDC->SetBkMode(TRANSPARENT); // Textfarbe ändern pDC->SetTextColor(RGB(0, 255, 0)); // Brush für Hintergrund des Eingabefelds zurückgeben return hBGEdit; } if(pWnd->GetDlgCtrlID() == IDC_LIST1) { pDC->SetBkMode(TRANSPARENT); pDC->SetTextColor(RGB(0, 0, 255)); } // Brush für Dialog Hintergrund zurückgeben return hBGBrush; }schönen Dank,
Krommi
-
Ich sehe nichts was Deiner Beschreibung gleich kommt!
Bist Du sicher, dass alle die IDC's unterschiedlich und korrekt sind?Das einzige Problem was ich sehe ist, dass Du permanent neue Brushes erzeugst und diese natürlich niemals entsorgt werden. Auf kurz oder lang führt dies zu einem katastophalen Ressourcen Leak!
Die Brushes nur einmal in der Diaog Klasse erzeugen und speichern.