我想向RichEdit控件添加彩色文本行。但是我面臨的問題是,colorchange不限於我選擇的文本。我所做的是:
獲取當前光標pos - >插入文本 - >獲取光標pos - >選擇範圍 - >爲它着色 - >取消選擇
出於某種原因,它似乎也會更改默認顏色。我嘗試保存舊的CHARFORMAT
並在爲該行添加顏色後恢復它(SCF_DEFAULT
和SCF_SELECTION
以及最後一個字符),但這不起作用。我錯過了什麼嗎?
Richedit改變顏色的選擇
我有一個的RichEdit 2.0及以下功能:
hEdit_Console = CreateWindow(RICHEDIT_CLASS, "",
WS_CHILD | WS_VISIBLE | WS_BORDER | ES_AUTOVSCROLL | ES_MULTILINE | ES_READONLY | WS_VSCROLL,
10, 100, 260, 120, hWnd, NULL, ((LPCREATESTRUCT) lParam)->hInstance, NULL);
SendMessage(hEdit_Console, WM_SETFONT, (LPARAM)GetStockObject(DEFAULT_GUI_FONT), TRUE);
void AddInfo2(HWND con, char* text)
{
CHARFORMAT cf;
int start, stop;
memset(&cf, 0, sizeof cf);
cf.cbSize = sizeof cf;
cf.dwMask = CFM_COLOR;
cf.crTextColor = RGB(51, 204, 51);
SendMessage(con, EM_SETSEL, -1, -1);
start = SendMessage(con, WM_GETTEXTLENGTH, 0, 0);
SendMessage(con, EM_REPLACESEL, FALSE, (LPARAM)text);
stop = SendMessage(con, WM_GETTEXTLENGTH, 0, 0);
SendMessage(con, EM_SETSEL, start, stop);
SendMessage(con, EM_SETCHARFORMAT, SCF_SELECTION, (LPARAM) &cf);
SendMessage(con, EM_SETSEL, -1, -1);
}
從我的角度來看,你沒有改變任何東西,只是你現在已經有了一個良好的初始化結構。 – xMRi