从串口获取到:
*rcprep.Repdata = 0x0123456789ABCDEF;
想将其显示在listcontrol中。listcontrol选择的是报表,显示字符串:
CString m_Type;
CString m_RCP;
CString m_Details;
m_Type= "MSG";
m_RCP = *rcprep.Repdata;  //这里是错的。
     m_Details="success";
int nRow = m_list.InsertItem(0, m_times());
m_list.SetItemText(nRow, 1, m_Type);
m_list.SetItemText(nRow, 2, m_RCP);            (将数据显示在该列)
m_list.SetItemText(nRow, 3, m_Details);所以有两个想法:
1、利用listcontrol直接显示。
2、将16进制转换为字符串来显示。求大神解惑!

解决方案 »

  1.   

    *rcprep.Repdata 的格式是unsigned char
      

  2.   

    CString str;
    str.Format("%x",rcprep.Repdata );
    这样str就是16进制的字符串,然后再插入到控件里显示
      

  3.   

    首先 要弄清楚  Repdata 是什么类型?
    然后用str.Format函数转换
      

  4.   

    2楼正解。可以看看printf输出格式的方法。
      

  5.   

    unsigned char *rcprep.Repdata是这个格式,二楼的方法调试后错误。
    这样写:
    str = rcprep.Repdata;
    居然编译通过了。
      

  6.   


    假设长度为iLenCString str;
    for(int i=0; i<iLen; i++)

      str.AppendFormat(_T("%02X"), rcprep.Repdata[i]);
    }如果低版本的CString不支持AppendFormat的话
    CString str, subStr;
    for(int i=0; i<iLen; i++)

      subStr.Format(_T("%02X"), rcprep.Repdata[i]);
      str += subStr;
    }
      

  7.   

    用二楼的方法:
    CString str;
    str.Format("%x",rcprep.Repdata );
    这样str就是16进制的字符串,然后再插入到控件里显示vs2008运行失败,显示:
    不能将参数 1 从“const char [5]”转换为“LPCTSTR”这是是因为vs 2005之后项目使用的是unicode字符集,在“项目-属性”中将"unicode字符集"换成"多字节字符集"就行了,也可以将文本内容放在_T()里面,不变字符集。
    改过之后,运行成功。不过生成的界面比原来更丑了……