Textfarbe in EditBox auf Klick ändern
-
hallo!
ich hab ein dialog mit textfeldern und buttons. wenn ich auf einen button drücke öffnet sich eine kleine farbdialogbox (CColorDialog). wenn ich nun in diesem farb dialog auf ok drücke soll sich die schriftfarbe in dem entsprechenden textfeld ändern.
bis auf eine kleinigkeit funktioniert das auch sehr gut. wenn ich in der Colorbox auf ok drücke, schließt sie sich zwar, aber meine änderungen werden nicht übernommen, erst wenn ich noch einmal kurz in das textfeld klicke werden meine farbänderungen übernommen. gibts da einen kleinen trick oder sowas?
so rufe ich den Colordialog auf:void CEreignissDlg::OnBColorAlarm() { CColorDialog m_CColorDialog; UpdateData(true); // könnte auch entfallen, spielt keine rolle m_CColorDialog.DoModal(); ColorAlarm=m_CColorDialog.GetColor(); // ColorAlarm ist public und COLORREF UpdateData(false); //spielt auch keine rolle }
und so sieht meine funktion aus welche die farbe ändern soll:
HBRUSH CEreignissDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); if(nCtlColor == CTLCOLOR_EDIT) { int nID = pWnd->GetDlgCtrlID(); switch(nID) { case IDC_EDIT_ALARM: pDC->SetTextColor(ColorAlarm); break; .... } return hbr; }
ich bräuchte vielleicht was das auf mein feld klickt wenn der colordialog mit ok beendet wird.
hat jemand eine idee?
vielen dank schonmal für eure mühe!Jens
-
das Editcontrol muss nach der Änderung neugezeichnet werden, das geht entweder mit CWnd::InvalidateRect oder mit CWnd::UpdateWindow falls der Clientbereich nicht leer ist.
-
hat geklappt
!
vielen dank!Jens