RichEdit控件 追加新行
各位前辈:我用Win32 api 写了一个UI,使用RichEdit显示文本。
第一次添加文本时 SendMessage(hwndrich, EM_SETTEXTEX, (WPARAM)&st, (LPARAM)text);
之后再添加文本我想 换一行添加,但是不知道用什么方法了。
随着添加的行数增加,如何实现自动滚动,并且最先添加的自动向上滚动 ?
谢谢!
#include <windows.h> #include <stdio.h> int main() { wchar_t s[]=L"我是第一行数据\n我是第二行数据"; int length1=wcslen(s); //printf("字符串长度为%d\n",length1); if (WinExec("c:\\windows\\notepad.exe",SW_NORMAL)>31) { //printf("成功打开记事本进程\n"); HWND notepadhandle= FindWindow(L"notepad",NULL); if (notepadhandle!=0) { //printf("能够找到记事本主进程主窗体\n"); HWND childhandle=FindWindowEx(notepadhandle,0,L"edit",NULL); if (childhandle!=0) { //printf("能够找到记事本编辑框窗体\n"); int i=0; while (i<length1) { //SendMessage(childhandle,WM_CHAR,s[i]&0XFF,0); SendMessage(childhandle,WM_CHAR,s[i],0); i=i+1; } } } } return 0; }
BOOL AppendTextToRich(TCHAR *text, int len) { HWND hwndrich=GetDlgItem(hWnd, IDC_RICHEDIT2_LOG); if (hwndrich != INVALID_HANDLE_VALUE) { int len = wcslen(text); int i = 0; do { SendMessage(hwndrich, WM_CHAR, text[i++], 0); } while (i < len); //自动滚动到最后一行 SendMessage(hwndrich, WM_VSCROLL, SB_BOTTOM, 0); } }
#include <windows.h> #include <stdio.h> void AppendTextToRich(TCHAR *text, int len,HWND childhandle) { int i=0; while(i<len) { SendMessage(childhandle, WM_CHAR, text[i++], 0); } } int main() { wchar_t s[]=L"我是第一行数据\n我是第二行数据"; int length1=wcslen(s); //printf("字符串长度为%d\n",length1); if (WinExec("c:\\windows\\notepad.exe",SW_NORMAL)>31) { //printf("成功打开记事本进程\n"); HWND notepadhandle= FindWindow(L"notepad",NULL); if (notepadhandle!=0) { //printf("能够找到记事本主进程主窗体\n"); HWND childhandle=FindWindowEx(notepadhandle,0,L"edit",NULL); if (childhandle!=0) { AppendTextToRich(s,length1,childhandle); } } } return 0; }