标题:数组变换的问题
取消只看楼主
kaitianjian
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2011-10-16
结帖率:25%
已结贴  问题点数:20 回复次数:10 
数组变换的问题
用c语言写了个读取hzk16字库的程序,现在读出来的字是“立”着的,
 现在想变换下读取的字模,让字“躺”着,

新建文件夹.rar (138.67 KB)
搜索更多相关主题的帖子: c语言 字模 
2012-04-07 15:28
kaitianjian
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2011-10-16
得分:0 
2012-04-07 15:28
kaitianjian
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2011-10-16
得分:0 
2012-04-07 15:29
kaitianjian
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2011-10-16
得分:0 
好看?谁帮知道我下该怎么弄啊
2012-04-07 15:35
kaitianjian
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2011-10-16
得分:0 
多谢T大哥教导,琢磨了下,差不多可以躺着了
还需改进下!
2012-04-07 23:19
kaitianjian
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2011-10-16
得分:0 
新建文件夹.rar (138.85 KB)
2012-04-07 23:21
kaitianjian
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2011-10-16
得分:0 
再请教你一个问题:
  VC6.0中,给一个编辑框定义了一个控件变量:CString m_strSendData;m_strSendData = _T(""); 网上说_T是支持Unicode编码的,但是我输入汉字,
m_strSendData 存储的是汉字的区位码,若输入字母或数字,貌似就成了ASC,我要想让m_strSendData存储的也是字母或数字的Unicode区位码,
该怎么实现?

      CMSComDlg(CWnd* pParent = NULL);    // standard constructor
// Dialog Data
    //{{AFX_DATA(CMSComDlg)
    enum { IDD = IDD_MSCOM_DIALOG };
    CMSComm    m_ctrMSCom;
    CString    m_strComNo;
    CString    m_strCheckBit;
    CString    m_strRecvData;
    CString m_strSendData;   //编辑框控件变量


CMSComDlg::CMSComDlg(CWnd* pParent /*=NULL*/)
    : CDialog(CMSComDlg::IDD, pParent)
{
    //{{AFX_DATA_INIT(CMSComDlg)
    m_strComNo = _T("");
    m_strBps = _T("");
    m_strDataBit = _T("");
    m_strStopBit = _T("");
    m_strCheckBit = _T("");
    m_strRecvData = _T("");
    m_strSendData = _T("");   //编辑框控件变量
2012-04-09 11:59
kaitianjian
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2011-10-16
得分:0 
我将那改为m_strSendData = L"";还是不行,每当发送单个字母或数字时程序就会卡主,网上搜了下,说MFC默认是ASC,可以将它改为Unicode,我试着改了下,
出现了好多错误。
2012-04-09 20:00
kaitianjian
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2011-10-16
得分:0 
这样改的太多了,想了个办法,将字母和数字的区位码单独放到数组里,然后判断输入的与0xA0作比较,大于的就是汉字输入,否则是字母或数字,再从数组里拿取相应的区位码,去读取字模,但是发送数字结果正确,而无论输入什么汉字,都显示的是“烫”,搞不懂了~
  void CMSComDlg::ReadDataFromFile()
{   
    unsigned char num[2][10] = {
        {0xA3,0xA3,0xA3,0xA3,0xA3,0xA3,0xA3,0xA3,0xA3,0xA3},   //0~9的区位码
        {0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9}
    };
     char *p = m_strSendData.GetBuffer(m_strSendData.GetLength());  //输入字符的存储区域
     unsigned   char i=0, j=0;
     unsigned   char   n,qh,wh;
     unsigned   long   offset;
     FILE *fd;
     fd=fopen( "HZK16 ", "rb ");
     memset(cBuf, 0, 1024);
     while(p[i])
  for(j = 0; j < m_strSendData.GetLength()/2; j++)    //getlength返回字节数
     {
     if (p[i] <=0xA0)     //小于0xA0,输入的是数字
    {
          i++;
      n = p[i++] - '0';
       qh =num[0][n] - 0xA0;
    wh =num[1][n] - 0xA0;        
     }
    else {            //否则是汉字
    qh=p[i++]-0xa0;
     wh=p[i++]-0xa0;
      }
2012-04-16 12:20
kaitianjian
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2011-10-16
得分:0 
唉……我不是搞这方面的,为了用单片做个点阵才照着书上的例子、网上搜了些资料,去搞这个!
2012-04-16 20:12



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-365319-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.447055 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved