VC MFC List Control控件的使用

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于对话框的MFC程序中添加List Control控件的步骤。

1.新加ListControl 控件,属性中的style属性页下的View选择Report。并设置其对应的控制变量如:m_ListCtrl。

2.初始化,即设置列。

m_ListCtrl.InsertColumn(0,"参数名"); //插入列

m_ListCtrl.InsertColumn(1,"参数值");

m_ListCtrl.InsertColumn(2,"备注");

CRect rect3;

m_ListCtrl.GetClientRect(rect3); //获得当前客户区信息

m_ListCtrl.SetColumnWidth(0,rect3.Width()/4); //设置列的宽度。

m_ListCtrl.SetColumnWidth(1,rect3.Width()*2/4);

m_ListCtrl.SetColumnWidth(2,rect3.Width()/4);

这部分初始化操作,最好放在对话框类的OnInitDialog()函数里,自动初始化。

3.插入数据

m_ListCtrl.InsertItem(0,"参数1"); //插入第一个数据,即第0条数据。先插入,然后在修改其他的信息。

m_ListCtrl.SetItemText(0,1,"参数1值"); //修改第0条数据的其他信息。

m_ListCtrl.SetItemText(0,2,"无");

SetItemText()函数负责向列表里添加字符串。当需要添加的是非字符串的数据类型时,需要先转换为字符串类型再用SetItemText()完成添加。假设所需要添加的是double类型的浮点数。

double dbl=1.2345678;

char str[16]={0};

sprintf(str, "%lf", dbl);

m_ListCtrl.InsertItem(0,"参数1");

m_ListCtrl.SetItemText(0,1,str); //等价于

m_ListCtrl.SetItemText(0,1,“1.2345678”);

需要注意的是用sprintf族函数时,char数组一定要足够大,否则程序运行时会出现错误提示“ Stack around the variable 'str' was corrupted ”,解决方法是把数组改大一些。

4.删除所有数据。

有些程序中需要刷新显示数据,如果直接利用上述方法,则会将当前显示数据追加在前一次数据行的后面,造成随着刷新次数的增加数据行线性增加的问题。解决方法是每次在插入数据之前删除已有数据,使用下面语句:

m_ListCtrl.DeleteAllItems();

5.如何设置ListView控件的完全行(Full Row)选项。

这个控件有个地方常常很恼人,那就是在报告视图中选中一行时,它只加亮最左边的一个栏目。解决方法:向ListView控件发送一个

VM_SETEXTENDEDLISTVIEWSTYLE消息。

::SendMessage(m_ListCtrl.m_hWnd,

LVM_SETEXTENDEDLISTVIEWSTYLE,LVS_EX_FULLROWSELECT,

LVS_EX_FULLROWSELECT);

这条语句可以加在OnInitDialog()函数,也可以加在负责插入数据的代码部分。

相关文档
最新文档