向Edit控件设置文本的2种方法
来源:互联网 发布:环评工程师 知乎 编辑:程序博客网 时间:2024/06/13 03:32
序
在cm中对SetWindowText下了断点,发现并不是每个Edit控件的内容设置都拦截到了。
怀疑是用SendMessage设置的文本,用Spy++看到了消息是EM_REPLACESEL.
去查资料,可以用SendMessage(EM_REPLACESEL)设置消息。
再去cm中查调用点,果真每次Edit中设置文本,都会被断下.
用SendMessage(EM_REPLACESEL)来向原始内容后附加内容比较方便, 不需要用DDX.也不需要自己拼装内容, 只需要附加文本内容就可以.
以前向Edit附加内容,都是先将原始内容取回来,再拼新内容,再将新内容设置到Edit.
在cm中看到的这种实现,效率高很多.
实验
void Ctest_edit_controlDlg::OnBnClickedButton1(){ // TODO: Add your control notification handler code here CWnd* pWnd = GetDlgItem(IDC_EDIT_TEST); if (NULL != pWnd) { // 向Edit控件设置文本的2种方法 // 1. call SetWindowText or SendMessageA(WM_SETTEXT) // #define WM_SETTEXT 0x000C // ::SendMessageA(pWnd->m_hWnd, WM_SETTEXT, (WPARAM)NULL, (LPARAM)"helloEdit"); // 2. call SendMessage(EM_SETSEL) then call EM_REPLACESEL // #define EM_SETSEL 0x00B1 // #define EM_REPLACESEL 0x00C2 // 在原始内容上附加文本消息 // Edit控件要设置风格:多行,允许回车 // 搜索”push 0c2h“, 可以找到SendMessage调用 ::SendMessage(pWnd->m_hWnd, EM_SETSEL, WPARAM(-1), LPARAM(-1) ); ::SendMessage(pWnd->m_hWnd, EM_REPLACESEL, WPARAM(TRUE), LPARAM("1_helloEdit\r\n")); }}
cm中的写法
cm中的写法和我做的实验不同,应该是我的实验效率高吧? SendMessage只调用了2次。
cm中附加数据调用了SendMessage3次.
::SendMessage(pWnd->m_hWnd, EM_SETSEL, WPARAM(0), LPARAM(0) ); ::SendMessage(pWnd->m_hWnd, EM_SCROLLCARET, WPARAM(0), LPARAM(0) ); ::SendMessage(pWnd->m_hWnd, EM_REPLACESEL, WPARAM(TRUE), LPARAM("text"));
阅读全文
0 0
- 向Edit控件设置文本的2种方法
- 几种获取EDIT文本的方法
- 实现点击按钮获取和设置edit文本的方法
- android控件文本样式的设置方法
- 选中Edit控件中的文本
- 文本向量化的方法
- MFC中设置EDIT控件中光标显示在字符串末尾的方法
- Edit控件文字居右的方法
- 判断Edit控件Enabled状态的方法。
- 利用DoDataExchange函数获取Edit控件的文本信息
- MFC中通过SendMessage修改Edit控件的文本
- 动态设置Edit控件的背景及字体颜色
- 设置、获得对话框中 编辑框控件 EDIT 的内容
- 动态设置Edit控件的背景及字体颜色
- 【LibUIDK界面库系列文章】设置Edit控件的Margin
- EDIT 控件文本内容右对齐
- GetDlgItemText 用于获取一个控件的文本(如Edit控件)
- EDIT控件的用法
- spring框架学习(五)注解
- Spring cloud sleuth rabbitmq zipkin mysql分布式服务跟踪分析
- docker安装
- 【OpenCV3图像处理】边缘检测:Sobel算子,Laplace算子,Canny算子
- Kotlin 资源大全
- 向Edit控件设置文本的2种方法
- ROS with V-rep (2) (ROS学习笔记五)
- java代码块执行顺序
- 在windows10 下 安装PHPstorm7.1利用composer 命令行安装Laravel
- 提交含有文件的表单集合的时候使用
- 简单总结easyUI中datagrid的用法
- CentOS nfs文件挂载
- Struts2校验
- 给 Android 开发者的 RxJava 详解