报文结构如下:
目的单元号
源单元号
命令码
帧长
数据起始地址
设备类型
信息
校验码
接收的报文中信息部分2个BYTE代表一个数据,数据量不定,我接收到后怎么显示到客户区中,用ListView还是其他?如何刷新客户区显示?
我是VC初学者,老大又偏偏说一定要用VC,高手救救我!
请指点一下界面部分,数据接收解析已经完成。
12 个解决方案
#1
用CFormView
#2
顶
#3
这么点内容,自己画到客户区,可以设计美观一点
#4
就用CView, 就可以了,你在OnDraw中刷新你的数据就行,你想用什么方式显示就在于你自己怎么写了。你可以找点例子看看,好像有一本关于vc数据图像编程的书能提供你图像显示的知识,如果是文字显示就没有这么麻烦,看看MSDN就能搞定了
#5
用ListView就可以
sstr.Format("%d",GetListCtrl().GetItemCount());
GetListCtrl().InsertItem(GetListCtrl().GetItemCount(),sstr);
GetListCtrl().SetItem(GetListCtrl().GetItemCount()-1,1,LVIF_TEXT,目的单元号 ,0,0,0,0);
GetListCtrl().SetItem(GetListCtrl().GetItemCount()-1,2,LVIF_TEXT,源单元号 ,0,0,0,0);
GetListCtrl().SetItem(GetListCtrl().GetItemCount()-1,3,LVIF_TEXT,命令码,0,0,0,0);
。。。。
sstr.Format("%d",GetListCtrl().GetItemCount());
GetListCtrl().InsertItem(GetListCtrl().GetItemCount(),sstr);
GetListCtrl().SetItem(GetListCtrl().GetItemCount()-1,1,LVIF_TEXT,目的单元号 ,0,0,0,0);
GetListCtrl().SetItem(GetListCtrl().GetItemCount()-1,2,LVIF_TEXT,源单元号 ,0,0,0,0);
GetListCtrl().SetItem(GetListCtrl().GetItemCount()-1,3,LVIF_TEXT,命令码,0,0,0,0);
。。。。
#6
OnInitialUpdate() 中添加
GetListCtrl().SetExtendedStyle(GetListCtrl().GetExtendedStyle()|LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
LV_COLUMN lvcol;
lvcol.mask=LVCF_FMT|LVCF_SUBITEM|LVCF_TEXT|LVCF_WIDTH;
lvcol.fmt=LVCFMT_CENTER;//居中
int i=0;
lvcol.pszText="序号";
lvcol.iSubItem=i;
lvcol.cx=50;
GetListCtrl().InsertColumn(i++,&lvcol);
lvcol.pszText="目的单元号";
lvcol.iSubItem=i;
lvcol.cx=150;
GetListCtrl().InsertColumn(i++,&lvcol);
。。。。。。
GetListCtrl().SetExtendedStyle(GetListCtrl().GetExtendedStyle()|LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
LV_COLUMN lvcol;
lvcol.mask=LVCF_FMT|LVCF_SUBITEM|LVCF_TEXT|LVCF_WIDTH;
lvcol.fmt=LVCFMT_CENTER;//居中
int i=0;
lvcol.pszText="序号";
lvcol.iSubItem=i;
lvcol.cx=50;
GetListCtrl().InsertColumn(i++,&lvcol);
lvcol.pszText="目的单元号";
lvcol.iSubItem=i;
lvcol.cx=150;
GetListCtrl().InsertColumn(i++,&lvcol);
。。。。。。
#7
客户区要求显示如下:
数据点名称 十进制表示 十六进制表示 备注
数据点名称 十进制表示 十六进制表示 备注
……
……
……
数据点名称 十进制表示 十六进制表示 备注
客户区用什么比较好?FormView?ListView?其他……
接收解析完数据后如何通知重画?
数据点名称 十进制表示 十六进制表示 备注
数据点名称 十进制表示 十六进制表示 备注
……
……
……
数据点名称 十进制表示 十六进制表示 备注
客户区用什么比较好?FormView?ListView?其他……
接收解析完数据后如何通知重画?
#8
我的表达有点问题,gaoyag(光明) 朋友误解我的意思了,我不想显示报文结构,只想按楼上的样式显示报文中的数据部分。
#9
FormView,在上面加入控件就行了.
#10
UpdateData(FALSE);和普通控件一样的.
#11
能不能给个简单的例子?
alexmayer@sina.com
alexmayer@sina.com
#12
mark
#1
用CFormView
#2
顶
#3
这么点内容,自己画到客户区,可以设计美观一点
#4
就用CView, 就可以了,你在OnDraw中刷新你的数据就行,你想用什么方式显示就在于你自己怎么写了。你可以找点例子看看,好像有一本关于vc数据图像编程的书能提供你图像显示的知识,如果是文字显示就没有这么麻烦,看看MSDN就能搞定了
#5
用ListView就可以
sstr.Format("%d",GetListCtrl().GetItemCount());
GetListCtrl().InsertItem(GetListCtrl().GetItemCount(),sstr);
GetListCtrl().SetItem(GetListCtrl().GetItemCount()-1,1,LVIF_TEXT,目的单元号 ,0,0,0,0);
GetListCtrl().SetItem(GetListCtrl().GetItemCount()-1,2,LVIF_TEXT,源单元号 ,0,0,0,0);
GetListCtrl().SetItem(GetListCtrl().GetItemCount()-1,3,LVIF_TEXT,命令码,0,0,0,0);
。。。。
sstr.Format("%d",GetListCtrl().GetItemCount());
GetListCtrl().InsertItem(GetListCtrl().GetItemCount(),sstr);
GetListCtrl().SetItem(GetListCtrl().GetItemCount()-1,1,LVIF_TEXT,目的单元号 ,0,0,0,0);
GetListCtrl().SetItem(GetListCtrl().GetItemCount()-1,2,LVIF_TEXT,源单元号 ,0,0,0,0);
GetListCtrl().SetItem(GetListCtrl().GetItemCount()-1,3,LVIF_TEXT,命令码,0,0,0,0);
。。。。
#6
OnInitialUpdate() 中添加
GetListCtrl().SetExtendedStyle(GetListCtrl().GetExtendedStyle()|LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
LV_COLUMN lvcol;
lvcol.mask=LVCF_FMT|LVCF_SUBITEM|LVCF_TEXT|LVCF_WIDTH;
lvcol.fmt=LVCFMT_CENTER;//居中
int i=0;
lvcol.pszText="序号";
lvcol.iSubItem=i;
lvcol.cx=50;
GetListCtrl().InsertColumn(i++,&lvcol);
lvcol.pszText="目的单元号";
lvcol.iSubItem=i;
lvcol.cx=150;
GetListCtrl().InsertColumn(i++,&lvcol);
。。。。。。
GetListCtrl().SetExtendedStyle(GetListCtrl().GetExtendedStyle()|LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
LV_COLUMN lvcol;
lvcol.mask=LVCF_FMT|LVCF_SUBITEM|LVCF_TEXT|LVCF_WIDTH;
lvcol.fmt=LVCFMT_CENTER;//居中
int i=0;
lvcol.pszText="序号";
lvcol.iSubItem=i;
lvcol.cx=50;
GetListCtrl().InsertColumn(i++,&lvcol);
lvcol.pszText="目的单元号";
lvcol.iSubItem=i;
lvcol.cx=150;
GetListCtrl().InsertColumn(i++,&lvcol);
。。。。。。
#7
客户区要求显示如下:
数据点名称 十进制表示 十六进制表示 备注
数据点名称 十进制表示 十六进制表示 备注
……
……
……
数据点名称 十进制表示 十六进制表示 备注
客户区用什么比较好?FormView?ListView?其他……
接收解析完数据后如何通知重画?
数据点名称 十进制表示 十六进制表示 备注
数据点名称 十进制表示 十六进制表示 备注
……
……
……
数据点名称 十进制表示 十六进制表示 备注
客户区用什么比较好?FormView?ListView?其他……
接收解析完数据后如何通知重画?
#8
我的表达有点问题,gaoyag(光明) 朋友误解我的意思了,我不想显示报文结构,只想按楼上的样式显示报文中的数据部分。
#9
FormView,在上面加入控件就行了.
#10
UpdateData(FALSE);和普通控件一样的.
#11
能不能给个简单的例子?
alexmayer@sina.com
alexmayer@sina.com
#12
mark