MFC ListControl控件用法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MFC ListControl控件用法
开发环境:visual studio 2008
1、新建一个基于对话框的MFC应用程序。在对话框上拖放一个listcontrol控件和一个button控件,给listcontrol控件添加一个名为m_StoreItems的变量。添加button的点击响应函数。
void CDepartmentStoreDlg::OnBnClickedNewitem()
{
// TODO: 在此添加控件通知处理程序代码
srand((unsigned)time(NULL));
TCHAR strNumber[20];//这里不要定义为char或者CString类型,不然后面lvItem.pszText会报错。
int number1 = rand() % 100;
int number2 = rand() % 100;
wsprintf(strNumber,_T("%d-%d"), number1, number2);
LVITEM lvItem;
lvItem.mask = LVIF_TEXT;
lvItem.iItem = 0;
lvItem.iSubItem = 0;
lvItem.pszText = strNumber;
m_StoreItems.InsertItem(&lvItem);
}
运行效果如下,效果相当于listbox控件,就是一个列表,一行一行的:
现在设置为报表视图,显示成表格形式。
在初始化函数里添加:
BOOL CDepartmentStoreDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: 在此添加额外的初始化代码
m_StoreItems.SetView(LVS_REPORT);//如果在属性里面设置了listview的view是report,这里就没必要了,默认的是icon
LVCOLUMN lvColumn;
lvColumn.mask = LVCF_FMT | LVCF_TEXT | LVCF_WIDTH; //掩码设置了fmt值、显示列标题和指定宽度
lvColumn.fmt = LVCFMT_LEFT; //设置作对其模式
lvColumn.cx = 120; //设置标题的宽度为120个像素
lvColumn.pszText = _T("Full Name"); //设置标题(列名)
m_StoreItems.InsertColumn(0, &lvColumn); //添加列,索引为0 lvColumn.mask = LVCF_FMT | LVCF_TEXT | LVCF_WIDTH; lvColumn.fmt = LVCFMT_LEFT;
lvColumn.cx = 100;
lvColumn.pszText = _T("Profession");
m_StoreItems.InsertColumn(1, &lvColumn);
lvColumn.mask = LVCF_FMT | LVCF_TEXT | LVCF_WIDTH; lvColumn.fmt = LVCFMT_LEFT;
lvColumn.cx = 80;
lvColumn.pszText = _T("Fav Sport");
m_StoreItems.InsertColumn(2, &lvColumn);
lvColumn.mask = LVCF_FMT | LVCF_TEXT | LVCF_WIDTH; lvColumn.fmt = LVCFMT_LEFT;
lvColumn.cx = 75;
lvColumn.pszText = _T("Hobby");
m_StoreItems.InsertColumn(3, &lvColumn);
}
下面给报表添加点实际的内容。
继续在初始化函数里添加:
LVITEM lvItem;
int nItem;
lvItem.mask = LVIF_TEXT;//这里的掩码设置一定要注意,因为item和column的掩码值很像,例如LVIF_TEXT和LVCF_TEXT,I对应的item,C对应的column,不然的话会显示不出来的,这个地方害死我了,因为有插件自动补全代码,补全后没注意看,结果没有对应,郁闷了好一会
lvItem.iItem = 0;//行号(索引,从0开始),报表相当于二维数组的模式,添加行内容时要指定行号和列号
lvItem.iSubItem = 0;//列号(索引,从0开始)
lvItem.pszText = _T("Sandra C. Anschwitz");//内容
nItem = m_StoreItems.InsertItem(&lvItem);//插入这一行,返回行号(索引)
m_StoreItems.SetItemText(nItem, 1, _T("Singer"));//设置行索引(行号)和列索引(列号)的值
m_StoreItems.SetItemText(nItem, 2, _T("HandBall"));
m_StoreItems.SetItemText(nItem, 3, _T("Beach")); lvItem.mask = LVIF_TEXT;
lvItem.iItem = 1;
lvItem.iSubItem = 0;
lvItem.pszText = _T("Roger A. Miller");
nItem = m_StoreItems.InsertItem(&lvItem);
m_StoreItems.SetItemText(nItem, 1, _T("Footballer"));
m_StoreItems.SetItemText(nItem, 2, _T("Tennis"));
m_StoreItems.SetItemText(nItem, 3, _T("Teaching")); lvItem.mask = LVIF_TEXT;
lvItem.iItem = 2;
lvItem.iSubItem = 0;
lvItem.pszText = _T("Marie-Julie W. Gross");
nItem = m_StoreItems.InsertItem(&lvItem);
m_StoreItems.SetItemText(nItem, 1, _T("Student"));
m_StoreItems.SetItemText(nItem, 2, _T("Boxing"));
m_StoreItems.SetItemText(nItem, 3, _T("Programming")); lvItem.mask = LVIF_TEXT;
lvItem.iItem = 3;
lvItem.iSubItem = 0;
lvItem.pszText = _T("Ella Pius Roger");