Richedit Text adden bunt
-
Hallo.
Ich nutze ein Richedit und möchte dort text hinzufügen.
Ich hab in diesem Forum dazu schon etwas gefunden gehabt aber bekomme da beim adden fehler mit der farben.void utilAppendTextToWindow(HWND hWnd, char *szText, COLORREF crTextColor) { // private int tl; CHARFORMAT cf; tl = GetWindowTextLength(hWnd); // add new text SendMessage(hWnd, EM_SETSEL, tl, tl); //letzte stelle wird markiert SendMessage(hWnd, EM_REPLACESEL, FALSE, (LPARAM)szText); //text wird an die markierte stelle gehängt // fill struct memset( &cf, 0, sizeof(CHARFORMAT) ); cf.cbSize = sizeof(CHARFORMAT); cf.dwMask = CFM_COLOR; cf.crTextColor = crTextColor; // select last text inserted tl = GetWindowTextLength(hWnd); SendMessage(hWnd, EM_SETSEL, (WPARAM)(tl-strlen(szText)), (LPARAM)tl); // set color SendMessage(hWnd, EM_SETCHARFORMAT ,SCF_SELECTION, (LPARAM)&cf); // remove bracket entfernt die markierung tl = GetWindowTextLength(hWnd); SendMessage(hWnd, EM_SETSEL, tl, tl); // set cusor to end of text for(int l=0; l<SendMessage(hWnd, EM_GETLINECOUNT, 0, 0); l++) SendMessage(hWnd, EM_SCROLL, SB_LINEDOWN, 0); }Wenn ich einfach immer hintenran hänge, funktioniert es, befindet sich aber ein \n hintendran und der neue text kommt in eine neue zeile, gibt es fehler mit den farben. dann hat ein teil der zeile drüber die aktuelle farbe und so weiter. ich hatte die funktion auch abgeändert und nen \n drangehängt aber der fehler war exakt der gleiche. gibts keine andere möglichkeit in eine neue zeile zu adden oder den cursor in eine neue zeile zu setzen?
-
Hast du es mal mit \r\n versucht?
-
Ganz klar wieso die Farben nicht stimmen. Da kommt die Länge durcheinander... }\n oder \r\n ist der Übeltäter... Entweder zählt GetWindowTextLength zuviel, oder zu wenig.
Gruß,
Chris
-
Danke, das mit der Länge stimmt. Habs lösen können.
-
Jap so ist's halt...
Gut ist, wenn jemand schonmal das Prob hatte
Muss mal nen Beispiel für 'ne Addfunktion uppen...
-
Hallo
Mal nur so ne Frage :
Wie hast du das denn gelöst ?Gruß Linus