RichEdit
-
Sers,
Ich habe ein Textfeld (Edit) nun möchte ich aber Farbe ins Spiel bringen und daher dachte ich mir benutz doch einfach ein RichEdit. Nur sobald ich ein Richedit auf meinen Dialog plaziere (Resourceneditor) wird mein kompletter Dialog nicht mehr angezeigt, was mach ich falsch?cu para
-
du mußt die Rich-Edit DLL erst mit LoadLibrary() in deinen Prozess laden! Ich glaub die DLL heisst riched32.dll. gibt glaub ich 3 verschiedene versionen davon
-
danke!
-
Könnte mir bitte jemand sagen was hieran falsch ist?
// function to add a text void utilAppendTextToWindow(HWND hWnd, char *szText, COLORREF crTextColor) { // private char *szOldText; char *szNewText; int tl; CHARFORMAT cf; // get len of text tl = GetWindowTextLength(hWnd); // allocate szOldText = new char[tl+2]; szNewText = new char[tl+strlen(szText)+2]; // get old text GetWindowText(hWnd, szOldText, tl+2); // append wsprintf(szNewText, "%s%s", szOldText, szText); SetWindowText(hWnd, szNewText); // fill struct cf.cbSize = sizeof(CHARFORMAT); cf.dwEffects &= ~CFE_AUTOCOLOR; cf.dwMask = CFM_COLOR; cf.crTextColor = crTextColor; cf.yHeight = 32; strcpy( cf.szFaceName, "Arial"); // 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); // set cusor to end of text SendMessage(hWnd, EM_SCROLL, SB_PAGEDOWN, 0); }
Aufgerufen wird die Funktion so:
utilAppendTextToWindow(GetDlgItem(hMainWnd, ID_TXT_TEXT), "> ", RGB(255, 0, 0)); utilAppendTextToWindow(GetDlgItem(hMainWnd, ID_TXT_TEXT), szSendText, RGB(0, 0, 0)); utilAppendTextToWindow(GetDlgItem(hMainWnd, ID_TXT_TEXT), "\r\n", RGB(0, 0, 0));
Aber es erscheint alles in der roten Farbe.
Was ist falsch?danke
cu para
-
Der farbige Text der schon dasteht wird nämlich irgentwie überschrieben, also mit der Farbe.
-
Wenn ich den Text mit GetText auslese wird in der Variable szOldText die Farbe ja nicht gespeicher. Und wenn ich den Text dann mit SetText wieder dran hänge ist es wieder farblos.
Wie kann ich das jetzt machen?!
-
SO habs jetzt:
// function to add a text 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); SendMessage(hWnd, EM_REPLACESEL, FALSE, (LPARAM)szText); // 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); SetFocus(hWnd); SendMessage(hWnd, EM_SETSEL, (WPARAM)(tl-strlen(szText)), (LPARAM)tl); // set color SendMessage(hWnd, EM_SETCHARFORMAT ,SCF_SELECTION, (LPARAM)&cf); // set cusor to end of text SendMessage(hWnd, EM_SCROLL, SB_PAGEDOWN, 0); }
[ Dieser Beitrag wurde am 25.12.2002 um 17:33 Uhr von paranoiac.org editiert. ]