需求:
在CEdit中查找指定文本然后选中,当然CEdit中会包含汉子以及英文字符,也包括回车换行符,
然后进行查找,第一次标识并选中第一次出现的位置,再次点查找要标识并选中第二次出现位置,如果到达最后一次要从头重新查找。
解答:
问题很简单可能会使用CString来获取窗口的内容
GetWindowText 然后在获取到的CString中进行查找,然后使用SetSel来选中区域,
但是在使用过程中会发现查找到字串后用SetSel并不能正确的选中所要查找内容,
原因就是在用CString的Find查找时会自动把英文字符按一个位置来计算,而汉字为两个,但在使用SetSel时会将汉字和字符都当做一个字符来计算。
于是在用计算方式不同的两个函数后为导致选中区域有所偏差。
解决办法就是讲CString的字串转换为wchar_t,此后英文和汉字都会按一个字符来计算,之后再查找出目标字符(当然也要转换为wchar_t)的位置。然后使用SetSel选中。即可
来源http://hi.baidu.com/try2crack/item/2d1ceedaf76f5c3a49e1ddc5