大虾大妈们好:
                windows下面我直接用TextOut(…………,“中文字符串”,strelen(“中文字符串”))这样的形式为什么中文字符串后面显示有乱码的撒!知道的留下指导用语,多谢小的

解决方案 »

  1.   

    strlen(chs)统计时用byte作单位,而TextOut计算Len是用word(即双字节)。这样,如果strlen(chs)反回奇数的值,而TextOut会算成偶数的值,即比strlen(chs)的多1byte,这样内存就溢出了。后面当然是乱码了。
      

  2.   

    我说错了。是strlen返回是byte,而TextOut可能会以word(双字节,中文)来处理。即strlen(...)返回值的两倍。
    这样内存溢出了。
    应该与语言的设置有关。
    我是路过的,几年前用VC++,随便说说。
      

  3.   

    本帖最后由 Mackz 于 2009-04-24 06:43:33 编辑
      

  4.   

    strelen对应是Win98以前的非unicode的,还是用新的API吧,一般字符有乱码,就是宽字符的问题!
      

  5.   

    用字串的类CString:
    CString str("中文字符串");
    TextOut( hdc, x, y, str, str.length());Try!