1、定义控件ID #define ID_EDIT 1
2、创建控件,并返回控件句柄
hwndEdit = CreateWindow(
TEXT("edit"), NULL,
WS_CHILD|WS_VISIBLE|WS_VSCROLL|WS_HSCROLL|//WS_BORDER|
ES_LEFT|ES_MULTILINE|ES_AUTOHSCROLL|ES_AUTOVSCROLL,
0, 0, 100, 100, hwnd, (HMENU)ID_EDIT,
((LPCREATESTRUCT)lParam)->hInstance, NULL);
3、设置焦点:
case WM_SETFOCUS:
SetFocus(hwndEdit);
return 0;
4、获取消息:
case WM_COMMAND:
if(HIWORD(wParam) == EN_UPDATE && LOWORD(wParam) == ID_EDIT)
edittxt = "";
return 0;
5、编辑控件的通知消息:
编辑控件向父窗口发送WM_COMMAND消息
LOWORD(wParam) 子窗口ID
HIWORD(wParam) 通知码
lParam 子窗口句柄
通知码如下所示:
EN_SETFOCUS 编辑控件得到了输入焦点
EN_KILLFOCUS 编辑控件失去了输入焦点
EN_CHANGE 编辑控件的内容将变化
EN_UPDATE 编辑控件的内容已变化
EN_ERRSPACE 编辑控件没有空间了
EN_MAXTEXT 编辑控件没有空间完成插入了
EN_HSCROLL 编辑控件水平滚动条被单击了
EN_VSCROLL 编辑控件的垂直滚动条被单击了
6、向编辑控件传递消息
SendMessage(hwndEdit, WM_CUT, 0, 0); //剪切
SendMessage(hwndEdit, WM_COPY, 0, 0); //复制
SendMessage(hwndEdit, WM_CLEAR, 0, 0); //清空
SendMessage(hwndEdit, WM_PASTE, 0, 0); //粘贴
//获取当前选择文本的初始位置和终止位置
SendMessage(hwndEdit, EM_GETSEL, (WPARAM)&iStart, (LPARAM)&iEnd);
//用其他文本取代当前选择的文本
SendMessage(hwndEdit, EM_REPLACESEL, 0, (LPARAM)szString);
//对于多行编辑器,得到编辑器的行数
iCount = SendMessage(hwndEdit, EM_GETLINECOUNT, 0, 0);
//对于某一指定行,获取从编辑器缓冲区的起点到这行的位移量
iOffset = SendMessage(hwndEdit, EM_LINEINDEX, iLine, 0);
//获取某行长度
iLength = SendMessage(hwndEdit, EM_LINELENGTH, iLine, 0);
//复制某一行到缓冲区
iLength = SendMessage(hwndEdit, EM_GETLINE, iLine, (LPARAM)szBuffer);
………………………………
后续有遇到的再加上,貌似好多的样子
2、创建控件,并返回控件句柄
hwndEdit = CreateWindow(
TEXT("edit"), NULL,
WS_CHILD|WS_VISIBLE|WS_VSCROLL|WS_HSCROLL|//WS_BORDER|
ES_LEFT|ES_MULTILINE|ES_AUTOHSCROLL|ES_AUTOVSCROLL,
0, 0, 100, 100, hwnd, (HMENU)ID_EDIT,
((LPCREATESTRUCT)lParam)->hInstance, NULL);
3、设置焦点:
case WM_SETFOCUS:
SetFocus(hwndEdit);
return 0;
4、获取消息:
case WM_COMMAND:
if(HIWORD(wParam) == EN_UPDATE && LOWORD(wParam) == ID_EDIT)
edittxt = "";
return 0;
5、编辑控件的通知消息:
编辑控件向父窗口发送WM_COMMAND消息
LOWORD(wParam) 子窗口ID
HIWORD(wParam) 通知码
lParam 子窗口句柄
通知码如下所示:
EN_SETFOCUS 编辑控件得到了输入焦点
EN_KILLFOCUS 编辑控件失去了输入焦点
EN_CHANGE 编辑控件的内容将变化
EN_UPDATE 编辑控件的内容已变化
EN_ERRSPACE 编辑控件没有空间了
EN_MAXTEXT 编辑控件没有空间完成插入了
EN_HSCROLL 编辑控件水平滚动条被单击了
EN_VSCROLL 编辑控件的垂直滚动条被单击了
6、向编辑控件传递消息
SendMessage(hwndEdit, WM_CUT, 0, 0); //剪切
SendMessage(hwndEdit, WM_COPY, 0, 0); //复制
SendMessage(hwndEdit, WM_CLEAR, 0, 0); //清空
SendMessage(hwndEdit, WM_PASTE, 0, 0); //粘贴
//获取当前选择文本的初始位置和终止位置
SendMessage(hwndEdit, EM_GETSEL, (WPARAM)&iStart, (LPARAM)&iEnd);
//用其他文本取代当前选择的文本
SendMessage(hwndEdit, EM_REPLACESEL, 0, (LPARAM)szString);
//对于多行编辑器,得到编辑器的行数
iCount = SendMessage(hwndEdit, EM_GETLINECOUNT, 0, 0);
//对于某一指定行,获取从编辑器缓冲区的起点到这行的位移量
iOffset = SendMessage(hwndEdit, EM_LINEINDEX, iLine, 0);
//获取某行长度
iLength = SendMessage(hwndEdit, EM_LINELENGTH, iLine, 0);
//复制某一行到缓冲区
iLength = SendMessage(hwndEdit, EM_GETLINE, iLine, (LPARAM)szBuffer);
………………………………
后续有遇到的再加上,貌似好多的样子