
你需要计算被删除字符所在的区域(搭仔CRect),并使用InvalidateRect函数刷新这个区知猜汪域来清除区域;
根据你当前代码,并不能保证在一行的中间删除和中间插入可以正常(这需要更多计算和兆余处理),另外,也不能保证窗口最小化(或被遮盖)后重新显示可以正常(尤其多行)。
其实在视图中处理文本,应该使用CEditView更方便,使用标准CView基类,太多事情需要自己处理了,不划算。
跟你的编码方式有关,将二进制位流与字符串之间的转换,必须使用同一种编解码方法,就是说字符串转化为笑毁二进制位时使用的何种编码方式,在将二进制解码为字符串时,要使用对应的解颂族码方式。出现碰樱备错位,不对应就是乱码。常用的有ascii码,gb2312,utf8等,楼主自行查阅。这个不是你MFC的Edit造成的,而是别的软件中的文本选择是按照单个字节来选取的,导致你在选择时,少选了前面一字节。最典型的例子就是袭搭芦Keil 软件的代码编辑区,输入中文后,用鼠标选择,会出现一个汉字是分两个部分的(高、低字节)。请看下面图片:
上面这张是未选中状态
下面这张是前面的“载”字只选中一半,即一个字节,就会出现乱码枝正,复制后也是乱码。
从以上可知,拍带是由双字节在选中时少选了一个字节造成的。英文或数字就不会出现乱码。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)