void CPage1::ExchangeEdit(void)
{
int i=0,j;
CString Line("\r\n");
j = m_edit.GetLength();
for(i=152; i < j; i+=136)
{
m_edit.Insert(i,Line);
}
}
插入换行符之后可能会截断中文字符,显示乱码,要怎样解决这个问题,那位知道的说一说怎样做才能不截断中文字符!
谢谢!!

解决方案 »

  1.   

    1、MultiByteToWideChar,将字符串转为Unicode,每个字符由2个字节组成,插入Unicode编码的"\r\n"后,再用WideCharToMultiByte转为ANSI字符串
    或者
    2、用循环一个字节一个字节读入,读到>0x7F的值,记录个数,如果正好要插入时,个数为奇数,则插入在前一个后者后一个处。
      

  2.   

    其实CEditBox本身有换行的功能,
    在style中选中MultiLine和Want Return,去掉Auto HScroll就会自动换行了。
      

  3.   

    其实上面没有问题,应为插入的位置都是偶数位
    //1中,偶数为就出问题了?//你是怎么解决的?但是它不能自动换行啊!
    //按照我说的style,会自动换行的。
      

  4.   

    我里面的m_edit开始的时候给了一字节数喂奇数的内容,后来修改了就好了。
    //按照我说的style,会自动换行的
    这个不会自动换行,如果字符数超过宽度会显示在隐藏的文本区(我也说得不是很清但是事实),有没有水平滚动条都是一样,用鼠标选中字体往右托就可以看到了
    ,所以必须手动插入即处理m_edit
      

  5.   

    会显示在隐藏的文本区
    //去掉Auto HScroll,不是水平滚动条。
      

  6.   

    是不是 Horizontal Scroll -->false???
    我用的是vc2008
    没有Auto HScroll
      

  7.   

    我找到了Auto HScroll 
    你是正确的,呵呵!!!