CRichEditCtrl系列讲堂8 解决CEdit/CRichEdit中SetSel错位或者位置判断错误的问题
2013-04-25 11:26
337 查看
需求:
在CEdit中查找指定文本然后选中,当然CEdit中会包含汉子以及英文字符,也包括回车换行符,
然后进行查找,第一次标识并选中第一次出现的位置,再次点查找要标识并选中第二次出现位置,如果到达最后一次要从头重新查找。
解答:
问题很简单可能会使用CString来获取窗口的内容
GetWindowText 然后在获取到的CString中进行查找,然后使用SetSel来选中区域,
但是在使用过程中会发现查找到字串后用SetSel并不能正确的选中所要查找内容,
原因就是在用CString的Find查找时会自动把英文字符按一个位置来计算,而汉字为两个,但在使用SetSel时会将汉字和字符都当做一个字符来计算。
于是在用计算方式不同的两个函数后为导致选中区域有所偏差。
解决办法就是讲CString的字串转换为wchar_t,此后英文和汉字都会按一个字符来计算,之后再查找出目标字符(当然也要转换为wchar_t)的位置。然后使用SetSel选中。即可
来源http://hi.baidu.com/try2crack/item/2d1ceedaf76f5c3a49e1ddc5
在CEdit中查找指定文本然后选中,当然CEdit中会包含汉子以及英文字符,也包括回车换行符,
然后进行查找,第一次标识并选中第一次出现的位置,再次点查找要标识并选中第二次出现位置,如果到达最后一次要从头重新查找。
解答:
问题很简单可能会使用CString来获取窗口的内容
GetWindowText 然后在获取到的CString中进行查找,然后使用SetSel来选中区域,
但是在使用过程中会发现查找到字串后用SetSel并不能正确的选中所要查找内容,
原因就是在用CString的Find查找时会自动把英文字符按一个位置来计算,而汉字为两个,但在使用SetSel时会将汉字和字符都当做一个字符来计算。
于是在用计算方式不同的两个函数后为导致选中区域有所偏差。
解决办法就是讲CString的字串转换为wchar_t,此后英文和汉字都会按一个字符来计算,之后再查找出目标字符(当然也要转换为wchar_t)的位置。然后使用SetSel选中。即可
来源http://hi.baidu.com/try2crack/item/2d1ceedaf76f5c3a49e1ddc5
相关文章推荐
- 【cocos2d-js系列问题】win7 Cocos2d-js 报Uncaught Error: child already added. It can't be added again 错误解决
- CRichEditCtrl系列讲堂3 关于版本和查找错位问题
- 解决用mysql front 或者navicat导入sql脚本时候各种错误问题
- 解决卸载或者安装程序失败的问题,提示:错误 1402。无法打开键UNKNOWN\Components\xxx
- CRichEditCtrl系列讲堂1 VC中在对话框上使用Rich Edit控件相关问题
- CRichEditCtrl系列讲堂4 自己遇到的查找问题及解决方案
- ITFriend创业败局(三):技术人员创业,需要尽可能避免,或者需要解决的5个重要问题
- WCF开发中遇到的问题及解决系列(一):运行WCF客户端时碰到错误“AddressAlreadyInUseException”
- 解决PopupWindow在android7.0弹出位置错误问题
- php出现内存位置访问无效错误问题解决方法
- 解决卸载或者安装程序失败的问题,提示:错误 1402。无法打开键UNKNOWN\Components\xxx
- 解决大批数据判断是否素数及位置的问题
- ITFriend创业败局(三):技术人员创业,需要尽可能避免,或者需要解决的5个重要问题
- 即兴知识点-3 myeclipse中,项目上有个叉报错,文件没有错误,或者没有jre包 解决那别发 注释乱码问题
- 解决卸载或者安装程序失败的问题,提示:错误 1402。无法打开键UNKNOWN\Components\xxx
- 【cocos2d-js系列问题】Cannot read property 'x' of null错误解决办法
- AjaxControlTookit中的AutoCompleteExtender位置错位问题 ListSearchExtender不支持中文的问题
- 解决卸载或者安装程序失败的问题,提示:错误 1402。无法打开键UNKNOWN\Components\xxx
- 读取文本出现 锘 * 系列乱码错误(UTF-8 BOM问题)的原因及解决方法
- IT忍者神龟之双击excel文档出现“向程序发送命令时出现问题”的错误解决