Windows编辑类
来源:互联网 发布:手机制作软件 编辑:程序博客网 时间:2024/06/05 19:14
编辑类的类名是(edit),然后调用CreateWindow创建一个矩形区域,然后可以在里面编辑文字
例如:
case WM_CREATE: hwndEdit = CreateWindow(TEXT("edit"), NULL, WS_CHILD | WS_VISIBLE|WS_BORDER, 0, 0,100, 100, hwnd, (HMENU)ID_EDIT, hInst, NULL); return 0;
![](http://img.blog.csdn.net/20151227123601374) 这是一个简单的带边框的单行编辑器。一般编辑控件默认只有一行,但是可以通过添加控件的窗口风格来改变
编辑控件的窗口风格:
文本对齐风格:ES_LEFT ES_RIGHT ES_CENTER 多行文本:ES_MULTILINE 例如:
case WM_CREATE: hwndEdit = CreateWindow(TEXT("edit"), NULL, WS_CHILD | WS_VISIBLE|WS_BORDER|ES_LEFT |ES_MULTILINE, 0, 0,100, 100, hwnd, (HMENU)ID_EDIT, hInst, NULL); return 0;
自动水平滚动:ES_AUTOHSCROLL(如果用了这个风格就不会自动换行,必须手动按回车换行) 垂直滚动:ES_AUTOVSCROLL 使用了滚动风格就要使用窗口滚动条风格了,不然就看不到滚动前的字了,添加滚动条风格和 正常窗口一样 例如:
case WM_CREATE: hwndEdit = CreateWindow(TEXT("edit"), NULL, WS_CHILD | WS_VISIBLE|WS_BORDER|ES_LEFT |ES_MULTILINE|WS_HSCROLL|WS_VSCROLL|ES_AUTOHSCROLL |ES_AUTOVSCROLL, 0, 0,100, 100, hwnd, (HMENU)ID_EDIT, hInst, NULL); return 0;
编辑控件中的滚动条已经自动关联键盘和鼠标操作了,所以不必像窗口滚动条一样自己设置。
编辑控件边框:WS_BORDER 失去输入焦点文本仍高亮显示:ES_NOHIDSEL 例如:
case WM_CREATE: hwndEdit = CreateWindow(TEXT("edit"), NULL, WS_CHILD | WS_VISIBLE|WS_BORDER|ES_LEFT |ES_MULTILINE|WS_HSCROLL|WS_VSCROLL|ES_AUTOHSCROLL |ES_AUTOVSCROLL|ES_NOHIDESEL, 0, 0,100, 100, hwnd, (HMENU)ID_EDIT, hInst, NULL);//ID_EDIT是宏定义 1 return 0;
可以让编辑控件窗口和父窗口客户区一样大
例如:
case WM_SIZE: MoveWindow(hwndEdit, 0, 0, LOWORD(lParam), HIWORD(lParam), TRUE); return 0;
这个可以根据父窗口的改变而改变。
如果想窗口一打开编辑控件就有输入焦点
例如:
case WM_SETFOCUS: SetFocus(hwndEdit); return 0;
编辑控件的通知消息:
编辑控件给父窗口消息处理程序发送WM_COMMAND消息, 和按钮控件一样,wParam和lParam变量的含义是相同的: LOWORD (wParam) 子窗口ID HIWORD (wParam) 通知码 lParam 子窗口句柄 编辑控件的发出的通知码: EN_SETFOCUS 编辑控件已经获得输入焦点 EN_KILLFOCUS 编辑控件已经失去输入焦点 EN_CHANGE 编辑控件的内容将改变 EN_UPDATE 编辑控件的内容已经改变 EN_ERRSPACE 编辑控件执行已经超出中间 EN_MAXTEXT 编辑控件在插入时执行超出空间 EN_HSCROLL 编辑控件的水平滚动条已经被按下 EN_VSCROLL 编辑控件的垂直滚动条已经被按下 例如:
case WM_COMMAND: switch (LOWORD(wParam)) { case ID_EDIT: if (HIWORD(wParam) == EN_KILLFOCUS) { MessageBox(hwnd, TEXT("编辑控件已经失去输入焦点"), NULL, 0); } else if (HIWORD(wParam) == EN_CHANGE) { MessageBox(hwnd, TEXT("编辑控件的内容将改变"), NULL, 0); } else if (HIWORD(wParam) == EN_UPDATE) { MessageBox(hwnd, TEXT("编辑控件的内容已经改变"), NULL, 0); } else if (HIWORD(wParam) == EN_ERRSPACE) { MessageBox(hwnd, TEXT("编辑控件执行已经超出中间"), NULL, 0); } else if (HIWORD(wParam) == EN_MAXTEXT) { MessageBox(hwnd, TEXT("编辑控件在插入时执行超出空间"), NULL, 0); } else if (HIWORD(wParam) == EN_HSCROLL) { MessageBox(hwnd, TEXT("编辑控件的水平滚动条已经被按下"), NULL, 0); } else if (HIWORD(wParam) == EN_VSCROLL) { MessageBox(hwnd, TEXT("编辑控件的垂直滚动条已经被按下"), NULL, 0); } break; } return 0;
在编辑框中插入文本,可以使用SetWindowText函数。
获取用GetWindowText函数
例如:
case WM_CREATE: hwndEdit = CreateWindow(TEXT("edit"), NULL, WS_CHILD | WS_VISIBLE|WS_BORDER|ES_LEFT |ES_MULTILINE|WS_HSCROLL|WS_VSCROLL|ES_AUTOHSCROLL |ES_AUTOVSCROLL|ES_NOHIDESEL, 0, 0,100, 100, hwnd, (HMENU)ID_EDIT, hInst, NULL); SetWindowText(hwndEdit, L"请输入文本"); return 0;
编辑控件的消息:
WM_CUT 剪切
WM_COPY 复制
WM_CLEAR 清除
WM_PASTER 粘贴
获取当前选择文本的初始位置和终止位置
SendMessage(hwndEdit,EM_CETSEL,(WPARAM)&iStart,(LPARAM)&iEnd);
终止位置是选择的最后一个字符+1
选择文本
SendMessage(hwndEdit,EM_SETSEL,iStart,iEnd);
用其它文本取代当前选择的文本
SendMessage(hwndEdit,EM_REPLACESEL,0,(LPARAM)szString);
获取编辑器的行数
iCount=SendMessage(hwndEdit,EM_GETLINECOUNT,0,0);
对于某一个指定的行,可以获得从编辑缓冲区的起点到这行的位移量
iOffset=SendMessage(hwndEdit,EM_LINELENGTH,iLine,0);
可以用如下函数来复制某一行到缓冲区
iLength=SendMessage(hwndEdit,EM_GETLINE,iLine,(LPARAM)szBUFFER);
- Windows学习心得【编辑类】
- Windows编辑类
- windows程序设计编辑类 edit
- windows下gvim列编辑
- windows快捷键的使用 编辑
- Windows live writer 编辑 Orchard
- windows下编辑tomcat环境变量
- 运用.NET读写Windows注册编辑表
- 实验3 编辑Windows 2000组策略
- Windows XP 中编辑 Boot.ini 文件
- 运用.NET读写Windows注册编辑表
- WINDOWS MOBILE编辑控件的使用技巧
- Gedit编辑windows文件乱码问题解决
- windows程序设计之编辑框简介
- [转]Windows鼠标右键菜单编辑
- Windows Resx资源文件编辑工具
- Windows下配置GVim的编辑环境
- MFC----windows控件----编辑框控件
- 周末学习线程
- ERROR 1813 -Mysql:Tablespace for table 'xxx`.'xxx` exists.
- 记忆化搜索求解区间型dp
- 编程之美 - 将帅问题
- Java多线程之ThreadGroupDemo
- Windows编辑类
- zk框架使用记录
- Android Studio目录结构浅析
- Python之email
- centos6中安装python2.7 与python3.3
- NOIP2015解题报告 By ljt12138
- LeetCode Spiral Matrix
- 如何正确使用equals方法?
- java标准库中优先队列的使用