求大神帮小弟我看看关于列表的有关问题
求大神帮我看看关于列表的问题
我小白,做毕业设计有点问题想向大家请教。
这个是我想做成的目标。我现在是这个样的不知道问题出在了哪里
,请大家帮我看看。谢谢。代码如下,
void CTest3Dlg::OnRead()
{
// TODO: Add your control notification handler code here
UpdateData(); //将界面的数据更新到对应的变量中
char *buf;
CString str;
GetDlgItem(IDC_EDIT1)-> GetWindowText(str); //读取码流到str字符串中
str.Replace(_T("7E"),_T("H")); //将码流字符串中的7E替换为H
buf= new char[str.GetLength()+1]; //将char*转换为buf[]
memset(buf, 0, str.GetLength()+1); //buf[]初始化
strcpy(buf, str); //buf[]赋值
CString StrNum; // 列表控件的行标
CString strItem; //向控件中插入的字符串内容
int i=1;
char *seps="H"; //分隔符'H'
char *token=NULL;
token=strtok(buf,seps); //以'H'为分隔符分割字符串buf
while(token!=NULL)
{
strItem.Format ("%s%s%s","7E",token,"7E");
token=strtok(NULL,seps);
StrNum.Format(_T("%d"),i); //将整形变量i以字符型输出
int count=m_list.GetItemCount(); //获取列表控件当前存在的数据总量
m_list.InsertItem(count,StrNum); //插入一行
m_list.SetItemText(count,1,strItem); //为第一列插入字符串
}
}
后面的是list的代码
m_list.InsertColumn(0, _T("序号"), 60);
m_list.InsertColumn(1, _T("各个信令单元"), 100);
m_list.SetColumnWidth(0, 50);//设置列宽
m_list.SetColumnWidth(1, 300);
------解决思路----------------------
前面的序号不会累加全是1,那是因为你写的是StrNum.Format(_T("%d"),i); 改成i++
------解决思路----------------------
CString str="7E xx yy zz 66 77 88 7E 1b 2c 3d 4e 7E 1a 2B 3z 7E";
int start=2;
int end=0;
while((end=str.Find("7E",start)) >=0 )
{
CString oneline="7E";
// afxDump << start << ";" << end << "\n";
oneline += str.Mid(start,end-start);
oneline += "7E\r\n";// 这里就是一行可以加到list中
afxDump << oneline ;
start = end+2;
}
结果'
7E xx yy zz 66 77 88 7E
7E 1b 2c 3d 4e 7E
7E 1a 2B 3z 7E
我小白,做毕业设计有点问题想向大家请教。
void CTest3Dlg::OnRead()
{
// TODO: Add your control notification handler code here
UpdateData(); //将界面的数据更新到对应的变量中
char *buf;
CString str;
GetDlgItem(IDC_EDIT1)-> GetWindowText(str); //读取码流到str字符串中
str.Replace(_T("7E"),_T("H")); //将码流字符串中的7E替换为H
buf= new char[str.GetLength()+1]; //将char*转换为buf[]
memset(buf, 0, str.GetLength()+1); //buf[]初始化
strcpy(buf, str); //buf[]赋值
CString StrNum; // 列表控件的行标
CString strItem; //向控件中插入的字符串内容
int i=1;
char *seps="H"; //分隔符'H'
char *token=NULL;
token=strtok(buf,seps); //以'H'为分隔符分割字符串buf
while(token!=NULL)
{
strItem.Format ("%s%s%s","7E",token,"7E");
token=strtok(NULL,seps);
StrNum.Format(_T("%d"),i); //将整形变量i以字符型输出
int count=m_list.GetItemCount(); //获取列表控件当前存在的数据总量
m_list.InsertItem(count,StrNum); //插入一行
m_list.SetItemText(count,1,strItem); //为第一列插入字符串
}
}
后面的是list的代码
m_list.InsertColumn(0, _T("序号"), 60);
m_list.InsertColumn(1, _T("各个信令单元"), 100);
m_list.SetColumnWidth(0, 50);//设置列宽
m_list.SetColumnWidth(1, 300);
------解决思路----------------------
前面的序号不会累加全是1,那是因为你写的是StrNum.Format(_T("%d"),i); 改成i++
------解决思路----------------------
CString str="7E xx yy zz 66 77 88 7E 1b 2c 3d 4e 7E 1a 2B 3z 7E";
int start=2;
int end=0;
while((end=str.Find("7E",start)) >=0 )
{
CString oneline="7E";
// afxDump << start << ";" << end << "\n";
oneline += str.Mid(start,end-start);
oneline += "7E\r\n";// 这里就是一行可以加到list中
afxDump << oneline ;
start = end+2;
}
结果'
7E xx yy zz 66 77 88 7E
7E 1b 2c 3d 4e 7E
7E 1a 2B 3z 7E