Edit-Controls / Textfarbe ändern



  • Ich verwende in einem Dialog vier Edit-Controls. Drei beliebige davon dienen als Benutzereingabe. Das jeweils vierte Control dient zur Ausgabe einer damit durchzuführenden Berechnung. Jetzt möchte ich mit einer geänderten Textfarbe (z.B. blau statt schwarz) kenntlich machen, welcher Wert berechnet worden ist. Die Messages WM_DRAWITEM, WM_CTLCOLOREDIT bekomme ich in DlgProc nicht zu sehen. Einfach SetTextColor und InvalidateRect läuft auch nicht.



  • Im Eventhadler des Dialogfensters folgenden Code eintragen, entsprechende Konstanten sind auszutauschen, aber das musst du schon selbern machen:

    case WM_CTLCOLORSTATIC:
    		if((HWND)lParam == GetDlgItem(hWnd, EDIT_1)){
    			SetTextColor((HDC)wParam, RGB(0,0,0));		//setzt die Textfarbe
    			SetBkColor((HDC)wParam, RGB(255,255,255));	//den Hintergrund des Textes
    			return (BOOL)CreateSolidBrush(RGB(255,255,255));	//und den Hintergrund des Fensters
    		}
    		break;
    


  • WM_CTLCOLORSTATIC
    A static control, or an edit control that is read-only or disabled, sends the WM_CTLCOLORSTATIC message to its parent window when the control is about to be drawn. By responding to this message, the parent window can use the specified device context handle to set the text and background colors of the static control.

    WM_CTLCOLOREDIT
    An edit control that is not read-only or disabled sends the WM_CTLCOLOREDIT message to its parent window when the control is about to be drawn. By responding to this message, the parent window can use the specified device context handle to set the text and background colors of the edit control.



  • Zur Verdeutlichung: Ich schreibe etwas in ein edit-control, was auch standardisiert mit schwarzer Textfarbe ankommt. Nur möchte ich z.B. blau haben. Alle selbst probierten und hier genannten Messages kommen im Parent-Fenster von DlgProc nicht an. Also bekomme ich die Textfarbe nicht geändert.



  • Ich denke mal du brauchst ein rich-edit-Fenster statt eines edit-Fensters.



  • berniebutt schrieb:

    Zur Verdeutlichung: Ich schreibe etwas in ein edit-control, was auch standardisiert mit schwarzer Textfarbe ankommt. Nur möchte ich z.B. blau haben. Alle selbst probierten und hier genannten Messages kommen im Parent-Fenster von DlgProc nicht an. Also bekomme ich die Textfarbe nicht geändert.

    Zeig mal deinen Eventhandler für den Dialog. Bei mir klappt es genau so wie ich es dir zuvor gepostet habe.
    Willst du jedoch nur bestimmte Textteile des Editfeldes "einfärben" so stimme ich nwp2 zu, dann ist ein Rich-Editfeld die einfachere Wahl.



  • Ist im Moment zu aufwendig, mehr zu posten. Man kann ja auch mit der Standardfarbe schwarz gut leben. Ich habe den Edit-Fenstern 'subclasses' verpasst, um frühzeitig evtl. Benutzerfehler abzufangen. Möglicherweise liegt hier das Problem, dass ich in der Dialog-Prozedur nicht mehr alles zu sehen bekomme. Das will ich einmal in Ruhe testen.
    Jedenfalls Danke für Eure Bemühungen!


Anmelden zum Antworten