读取ES_MULTILINE样式的EDIT的一部分Text
来源:互联网 发布:代销下单与传淘宝 编辑:程序博客网 时间:2024/05/24 02:24
想读取一个Multi-Line EDIT从第N个TCHARS开始,长度为L的一段TEXT,怎么做呢?
当然最简单的办法可以先把整个EDIT里面的Text都读取出来,然后就可以直接定位了,但是如果EDIT里面的Text很大,那么这个办法将需要申请较大的内存,这是我这个偏执狂是不允许。
我原本的定位起始行代码如下:
l0表示第N个字符。count = Edit_GetLineCount(hwnd);
for (i = 0; i < count; i++)
{
l1 = Edit_LineLength(hwnd, Edit_LineIndex(hwnd, i));
// 2是_T("\r\n")
if (l0 > l1 + 2){
l0 -= l1 + 2;
}
else
{
break;
}
}
使用了好久,都不知道有问题。今天遇到计算结果错误的情况。
原来在EDIT不显示水平滚动条的时候,一行过长,EDIT自动换行了,之前的代码却当作回车换行。
导致计算结果不正确。
怎么样才知道一行是EDIT为了显示换行,还是回车换行呢?
群里面问,网上搜索了挺久,都找不到答案。用SDK的人可能太少了。或者搜索不得要领。
最后反复的看MSDN,并看日志记录的偏移。
"Salvation lies within."
Edit_LineIndex这个宏有玄机.它获得的是某行第一个TCHAR在整个Text中的偏移。
于是修改的代码如下:
l2 = 0;
count = Edit_GetLineCount(hwnd);
for (i = 0; i < count; i++)
{
l1 = Edit_LineIndex(hwnd, i);
if (l0<=l1)
{
break;
}
l2 = l1;
}
if(l0>0)
{
i--;
}
l0 -= l2; // 由整段Text转为行偏移
...
剩下的就容易办了,完美解决。
0 0
- 读取ES_MULTILINE样式的EDIT的一部分Text
- 读取bmp图片的一部分
- array_slice 数组的 读取一部分
- 样式表必须是当前项目的一部分
- vc++读取edit的值及赋值
- 清空Form上的Edit、Memo、Combobox的Text
- 解决Android的Edit Text不显示光标的问题
- 新定义的样式的一部分不能与前面的样式名重复
- MATLAB GUI中Edit Text的Callback函数何时执行
- 分享一下Edit Text动态获取字数的方法
- 全局改变text及Button 的样式
- 设置Sublime Text 3的光标样式
- ReactNative Text的属性和样式
- (六)View和Text组件的样式
- 截取字串的一部分
- 课改的一部分
- 收藏的一部分笑话!
- 显示背景图片的一部分
- [8] Undefined index: UserId 错误 解决方案 thinkphp3.2
- VB MSHFlexGrid控件:CellAlignment 属性
- 《初入linux》--第二部分-系统结构与基本文件管理
- selenium之定位页面元素
- MockWebServer使用指南
- 读取ES_MULTILINE样式的EDIT的一部分Text
- 在自定义类中如何正确输出自定义类的属性值 objective-c的description
- Ubuntu启用root账户后,登录root账户时报错:读取/root/.profile时发现错误:mesg:ttyname failed:对设备不适当的ioctl操作 作为结果,会话不会被正确配置
- 【Android】真机调试新姿势:无线连接
- 1040-简单的游戏
- SlidingMenu使用简介
- 花生壳域名绑定tomcat里的网站
- JavaScript之闭包
- 欢迎使用CSDN-markdown编辑器