CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
英特尔®游戏设计大赛100美元现金周周送 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

TextOut为什么不能正确显示汉字?

楼主caihong86(caihong86)2003-12-03 15:51:19 在 VC/MFC / 基础类 提问

程序中需要在执行菜单操作“文件->打开”后,将被打开的文件内容在窗口中显示出来,程序如下:  
  void   CTextView::OnDraw(CDC*   pDC)  
  {  
    CDocument*   pDoc   =   GetDocument();  
    //   TODO:   add   draw   code   here  
   
    CString   filepath=pDoc->filepath;     //得到被打开文件的路径和文件名  
   
    FILE   *fpDoc,*fpBkp;  
    char   c;  
    int   hang=0;  
    int   lie=0;  
   
    while(!feof(fpDoc))  
    {  
        fscanf(fpDoc,"%c",&c);  
        if(c!='\n')  
        {  
            pDC->TextOut(lie*10,hang*20,c);  
            lie=lie+1;  
        }  
        else  
        {  
            lie=0;  
            hang=hang+1;  
        }  
    }  
    fclose(fpDoc);  
  }  
   
  为什么文件中的汉字显示出来是乱码?而且文件中但凡有"tab"的地方总是在正确显示"tab"后自动加上"|"?  
  问题点数:10、回复次数:6Top

1 楼ninsenki(流浪鸟)回复于 2003-12-03 15:56:11 得分 2

你是按照1字节读的,汉字是两个字节,要是读了一半,不是乱了嘛Top

2 楼caihong86(caihong86)回复于 2003-12-03 16:07:34 得分 0

我原本是想TextOut的时候一行一行的显示,可不知道如何实现?如何读出一行的内容?Top

3 楼aaasng()回复于 2003-12-03 16:11:31 得分 2

用CStdioFile的ReadString可以很方便的读出一行Top

4 楼bluebohe(薄荷)回复于 2003-12-03 16:16:50 得分 2

我以前遇到这个问题,一般都是一个字一个字地往上textout,凡碰到小于零的字符就和下一个字符组成一个汉字,一般没什么问题Top

5 楼arvid_gs(west)回复于 2003-12-03 16:21:38 得分 3

用CStdioFile的ReadString可以很方便  
  ls1=(const   char   *)c_Text;                                           //文本内容  
  cd=strlen(ls1);                                               //文本字符长度  
   
  while(cd>0)     //绘出所有的字符  
  {  
  c1=*ls1;  
  c2=*(ls1+1);  
  if(c1>127&&c2>127)     //如果是一个汉字  
  {  
  strncpy(bz,ls1,2);//拷贝一个汉字到bz中  
  bz[2]=0;  
  ls1=ls1+2;                 //跳过汉字指向下一个字符位置  
  pDC->TextOut(cc1,cc2,bz);   //在屏幕上写这个汉字  
  cd=cd-2;                                     //字符数减2  
   
  }  
  else   //如果是一个西文字符  
  {  
  strncpy(bz,ls1,1);               //拷贝一个字符到bz中  
  bz[1]=0;  
  ls1++;                                       //跳过这一个字符到下一个字符  
  pDC->TextOut(cc1,cc2,bz);//在屏幕上写字符  
  cd=cd-1;                                   //字符数减1  
   
  }  
  }Top

6 楼crystal_heart(笑看风云)回复于 2003-12-03 16:43:27 得分 1

up  
   
  假如你读的数据是unicode呢?utf8呢?  
  Top

相关问题

  • 为什么不正确显示汉字?
  • 显示汉字?
  • JAVA程序里不能正确显示汉字
  • 急!!!Jbuilder中汉字不能正确显示,怎么解决???
  • 为什么JInternalFrame标题中不能正确显示汉字
  • 为什么dreamweaver里面的汉字不能正确显示呢 ????
  • dreamweaver2004 里面的汉字为什么不能正确显示?
  • qt中如何正确显示其界面中的汉字
  • pDC->TextOut(xx,xx,ss)多行显示汉字时,出现乱码的问题。。。。。。
  • 怎样让form.caption中的汉字跑马灯似的正确显示?急急急!

关键词

  • 字符
  • 汉字
  • 文件
  • 内容
  • textout
  • fpdoc
  • bz
  • lie
  • ls
  • hang

得分解答快速导航

  • 帖主:caihong86
  • ninsenki
  • aaasng
  • bluebohe
  • arvid_gs
  • crystal_heart

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo