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;
}
