CRichEditCtrl系列讲堂8 解决CEdit/CRichEdit中SetSel错位或者位置判断错误的问题

需求:

在CEdit中查找指定文本然后选中,当然CEdit中会包含汉子以及英文字符,也包括回车换行符,

然后进行查找,第一次标识并选中第一次出现的位置,再次点查找要标识并选中第二次出现位置,如果到达最后一次要从头重新查找。

 

解答:

问题很简单可能会使用CString来获取窗口的内容

GetWindowText 然后在获取到的CString中进行查找,然后使用SetSel来选中区域,

但是在使用过程中会发现查找到字串后用SetSel并不能正确的选中所要查找内容,

原因就是在用CString的Find查找时会自动把英文字符按一个位置来计算,而汉字为两个,但在使用SetSel时会将汉字和字符都当做一个字符来计算。

于是在用计算方式不同的两个函数后为导致选中区域有所偏差。

解决办法就是讲CString的字串转换为wchar_t,此后英文和汉字都会按一个字符来计算,之后再查找出目标字符(当然也要转换为wchar_t)的位置。然后使用SetSel选中。即可

来源http://hi.baidu.com/try2crack/item/2d1ceedaf76f5c3a49e1ddc5

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值