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

你可能感兴趣的:(CRichEditCtrl系列)