简单的界面问题,高人来指导一下菜鸟?

时间:2022-08-15 21:11:05
老大要这么一个程序:SDI,通过网络接收的数据显示于客户区,用什么控件比较好?

报文结构如下:
目的单元号  
源单元号    
命令码
帧长
数据起始地址
设备类型
信息
校验码

接收的报文中信息部分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);
。。。。

#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);
。。。。。。

#7


客户区要求显示如下:

数据点名称   十进制表示   十六进制表示  备注
数据点名称   十进制表示   十六进制表示  备注
……
……
……
数据点名称   十进制表示   十六进制表示  备注

客户区用什么比较好?FormView?ListView?其他……
接收解析完数据后如何通知重画?

#8


我的表达有点问题,gaoyag(光明) 朋友误解我的意思了,我不想显示报文结构,只想按楼上的样式显示报文中的数据部分。

#9


FormView,在上面加入控件就行了.

#10


UpdateData(FALSE);和普通控件一样的.

#11


能不能给个简单的例子?

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);
。。。。

#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);
。。。。。。

#7


客户区要求显示如下:

数据点名称   十进制表示   十六进制表示  备注
数据点名称   十进制表示   十六进制表示  备注
……
……
……
数据点名称   十进制表示   十六进制表示  备注

客户区用什么比较好?FormView?ListView?其他……
接收解析完数据后如何通知重画?

#8


我的表达有点问题,gaoyag(光明) 朋友误解我的意思了,我不想显示报文结构,只想按楼上的样式显示报文中的数据部分。

#9


FormView,在上面加入控件就行了.

#10


UpdateData(FALSE);和普通控件一样的.

#11


能不能给个简单的例子?

alexmayer@sina.com

#12


mark