用MFC写的程序输入汉字乱码,而且按退格键还有竖线残留

用MFC写的程序输入汉字乱码,而且按退格键还有竖线残留,第1张

你需要计算被删除字符所在的区域(搭仔CRect),并使用InvalidateRect函数刷新这个区知猜汪域来清除区域;

根据你当前代码,并不能保证在一行的中间删除和中间插入可以正常(这需要更多计算和兆余处理),另外,也不能保证窗口最小化(或被遮盖)后重新显示可以正常(尤其多行)。

其实在视图中处理文本,应该使用CEditView更方便,使用标准CView基类,太多事情需要自己处理了,不划算。

跟你的编码方式有关,将二进制位流与字符串之间的转换,必须使用同一种编解码方法,就是说字符串转化为笑毁二进制位时使用的何种编码方式,在将二进制解码为字符串时,要使用对应的解颂族码方式。出现碰樱备错位,不对应就是乱码。常用的有ascii码,gb2312,utf8等,楼主自行查阅。

这个不是你MFC的Edit造成的,而是别的软件中的文本选择是按照单个字节来选取的,导致你在选择时,少选了前面一字节。最典型的例子就是袭搭芦Keil 软件的代码编辑区,输入中文后,用鼠标选择,会出现一个汉字是分两个部分的(高、低字节)。请看下面图片:

上面这张是未选中状态

下面这张是前面的“载”字只选中一半,即一个字节,就会出现乱码枝正,复制后也是乱码。

从以上可知,拍带是由双字节在选中时少选了一个字节造成的。英文或数字就不会出现乱码。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8201380.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-14
下一篇2023-04-14

发表评论

登录后才能评论

评论列表(0条)

    保存