4390|6

75

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

EVC下作HZK16点阵读取,但显示是乱码,英文的读取的出来,郁闷了,请大侠们帮忙看看。 [复制链接]

    本人在做在CE下,读取HZK16和ASC16,然后显示点阵图,我是想做中英文都能显示的,现在英文的可以完全显示点阵图,中文的读取时点阵图就显示乱码了,有点急啊。看了很多前辈的文章和所提到的问题。我的模拟器已经是中文的了,而且我也用过WideCharToMultiByte之类的函数了,但还是不行,不知道是我用错了,还是什么的,贴上 大家帮忙看看
void CDianzhenDlg::ProcessChinese()
{
        CFile myfile;

        //开辟字库缓冲区大小,一个字节8个点
        unsigned char Libbuff[POINTER_WIDTH*POINTER_HEIGHT>>3];
        unsigned char VerLibbuff[POINTER_WIDTH*POINTER_HEIGHT>>3];
        ULONG    address;
        UCHAR    BitIndex;


     char th = strinput.GetAt(0);
     char tl = strinput.GetAt(1);
        //清空显示缓冲区
    m_HorizonLib.Empty();
        m_VerticalLib.Empty();
       

        //根据汉字内码计算在文件中地址
        address = ((th-0xa1)*94+(tl-0xa1))*32;


        //打开字库文件
        if(!myfile.Open(_T("HZK16"),CFile::typeBinary|CFile::modeReadWrite,NULL))
        {
                AfxMessageBox(_T("error"));
                return ;
        }
        //读取字模缓冲区
        myfile.Seek(address,CFile::begin);
        myfile.Read(Libbuff,sizeof(Libbuff));
        myfile.Close();

   
        //横排----->竖排
        for(int i = 0;i         {
                BitIndex = 0x01;
                UINT HorizonRow;
                UINT HorizonCol;
                VerLibbuff = 0;

                //找出列号
                if(i<(sizeof(VerLibbuff)>>1))
                {
                        HorizonCol = i;
                }
                else
                {
                        HorizonCol = i -  (sizeof(VerLibbuff)>>1);
                }
                for(int j=0;j<8;j++)
                {
                        //找出行号
                        if(i<(sizeof(VerLibbuff)>>1))
                        {
                                HorizonRow = j;
                        }
                        else
                        {
                                HorizonRow = j+8;
                        }
                        UCHAR temp2 = 0x80;
                        //找到对应位置位
                        if(Libbuff[HorizonRow*2+(HorizonCol>>3)]&(temp2>>(HorizonCol%8)))
                        {
                                VerLibbuff = VerLibbuff | BitIndex;
                        }
                        BitIndex = BitIndex<<1;
                       
                }
        }
       

        //将字模显示出来
        DisplayResult(Libbuff,POINTER_WIDTH,POINTER_HEIGHT);

        //显示横排结果
        for(i=0;i         {
                char temp[3];
                unsigned char Value = Libbuff;
                if(((i%8)==0)&&(i!=0))
                {
                        m_HorizonLib += "\r\n" ;
                }
                m_HorizonLib += " 0x" ;
                if(Value<16)
                {
                        temp[0] = '0';
                        _itoa(Value,&temp[1],16);
                }
                else
                {

                        _itoa(Value,temp,16);
                }
                m_HorizonLib += temp;
               
        }
       
        //显示竖排结果
        for(i=0;i         {
                char temp[3];
                unsigned char Value = VerLibbuff;
                if(((i%8)==0)&&(i!=0))
                {
                        m_VerticalLib += "\r\n" ;
                }
                m_VerticalLib += " 0x" ;
                if(Value<16)
                {
                        temp[0] = '0';
                        _itoa(Value,&temp[1],16);
                }
                else
                {

                        _itoa(Value,temp,16);
                }
                m_VerticalLib += temp;
               
        }
        UpdateData(FALSE);
}

最新回复

请问下楼主,可否帮我下。我的连调用都不成功。我不知道如何调用。谢谢你了。  详情 回复 发表于 2009-11-25 07:28
点赞 关注

回复
举报

69

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
EVC不支持中文 你只能从你的PB中导出SDK 然后在EVC中设置-》先在你的对话框属性里有个语言设置Chinese(P.R.C),然后在Project->Setting->Resources->Language中选择中文。然后在WinCe中编译就是中文了
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
既然是用汉字库,就和是否是中文系统没有关系。
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

4
 
我在已经做了中文SDK了啊
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

5
 
点阵显示的方式跟PC端是一样的,你在PC端用VC编写调试看看,要么是算法错了(好像也称不上算法),要么是你的点阵字库有问题。
测试OK了再移植到CE下。
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

6
 
   vc编译过了 可行的,汉字点阵都出的来,应该是移植时,在CE情况下的一些API不支持,或者是WINCE是UNICODE环境的原因,所以有点摸不着头脑。
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

7
 
请问下楼主,可否帮我下。我的连调用都不成功。我不知道如何调用。谢谢你了。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表