색칠 된 텍스트 줄을 RichEdit 컨트롤에 추가하고 싶습니다. 하지만 나는 colorchange가 내가 선택한 텍스트에만 국한되지 않는다는 문제에 직면 해있다. 내가 뭘하는지 :
현재 커서 위치 가져 오기 -> 텍스트 삽입 -> 커서 위치 가져 오기 -> 범위 선택 -> 색상 선택 -> 선택 취소
어떤 이유로 기본 색상도 변경되는 것 같습니다. 나는 그 선을 착색 한 후에 구 CHARFORMAT
을 저장하고 그것을 복원하려고 시도했는데 (마지막 문자로 SCF_DEFAULT
과 SCF_SELECTION
), 작동하지 않았다. 내가 놓친 게 있니?
선택 항목의 리치 헷드 변경 색상
내가있어 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