从串口获取到:
*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进制转换为字符串来显示。求大神解惑!
*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进制转换为字符串来显示。求大神解惑!
str.Format("%x",rcprep.Repdata );
这样str就是16进制的字符串,然后再插入到控件里显示
然后用str.Format函数转换
这样写:
str = rcprep.Repdata;
居然编译通过了。
假设长度为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;
}
CString str;
str.Format("%x",rcprep.Repdata );
这样str就是16进制的字符串,然后再插入到控件里显示vs2008运行失败,显示:
不能将参数 1 从“const char [5]”转换为“LPCTSTR”这是是因为vs 2005之后项目使用的是unicode字符集,在“项目-属性”中将"unicode字符集"换成"多字节字符集"就行了,也可以将文本内容放在_T()里面,不变字符集。
改过之后,运行成功。不过生成的界面比原来更丑了……