VC MFC List Control控件的使用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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()函数,也可以加在负责插入数据的代码部分。