1 使用richedit 控件首先要加載 richedit 的dll.
LoadLibrary(_T("riched20.dll"));
2 加入對 richedit.h 頭文件的引用后,創(chuàng)建窗口
hwndBuffer = CreateWindow(RICHEDIT_CLASS,NULL,WS_CHILD|WS_VISIBLE|ES_MULTILINE|WS_VSCROLL|ES_SUNKEN
|ES_AUTOVSCROLL|ES_READONLY|ES_SAVESEL,6,30,526,354,hWnd,(HMENU)EDIT_ID,hInstance,NULL);
這里創(chuàng)建了一個只讀的窗口,這樣只能通過函數(shù)輸入文字。
3 設(shè)置顏色:
//設(shè)置背景色
SendMessage( hwndBuffer, EM_SETBKGNDCOLOR, 0, RGB(0,0,0) );
//設(shè)置文字顏色
CHARFORMAT2 charFmt;
ZeroMemory(&charFmt,sizeof(charFmt));
charFmt.cbSize = sizeof(charFmt);
charFmt.dwMask = CFM_COLOR; //只修改文字顏色標(biāo)志
charFmt.crTextColor = RGB(0,179,0);//設(shè)置字體顏色
SendMessage(hwndBuffer,EM_SETCHARFORMAT,0,(LPARAM)&charFmt);
//修改部分文字顏色
SendMessage(hwndBuffer,EM_SETSEL,0,10); //選中0-10的文字
charFmt.crTextColor = it->clr;
//修改文字顏色
SendMessage(hwndBuffer,EM_SETCHARFORMAT,SCF_SELECTION,(LPARAM)&charFmt);
注意對于richedit2.0 漢字僅作為一個字符。對于unicode 工程無所謂。但對于多字節(jié)來說一個漢字為2個字符。所以你通過strlen之類計算的字符串長度會比richedit 認(rèn)為的要長如:
"大家好"。計算為6長度。但對于richedit來說為3個.發(fā)送EM_SEL消息,設(shè)置選中消息時必須以richedit為準(zhǔn).
SendMessage(hwndBuffer,EM_SETSEL,0,3); 如果指定為6將超出范圍
4 滾動滾動條:
SendMessage(hwndBuffer,WM_VSCROLL, SB_BOTTOM, 0); //滾動到文檔的最后面
5 游標(biāo)
int temp1,temp2; //獲取起始和結(jié)束位置
SendMessage(hwndBuffer,EM_GETSEL,(WPARAM)&temp1,(LPARAM)&temp2);
//在文檔末尾輸入字符:
SendMessage(hwndBuffer, EM_SETSEL,-1,-1);
SendMessage(hwndBuffer, EM_REPLACESEL, TRUE, (LPARAM) buffer );