MFC控件的使用方法(十四、列表控件(List Control))

十四、列表控件(List Control)

作用:

以列表的形式显示一组信息,显示每个包含图标(列表视图中)和标签的收集。除图标和标签外,每一项还能有显示在图标和标签的右边的列中的信息。

消息映射函数:

  • LVN_DELETEALLITEM :删除视图中所有的项
  • LVN_COLUMNCLICK : 单击了其中的一列
  • HDN_ENDTRACK : 指示用户已经完成对视图中的标题分隔符的拖动。
  • HDN_ITEMCLICK : 指示用户单击来了标题中的某一项
  • HDN_ITEMKEYDOWN :通知标头控件的父窗口在选择了某一项时按下了某个建
  • HDN_TRACK :指示用户正在拖动视图中的分隔符
  • LVN_DELETEITEM : 删除了项
  • HDN_ITEMDBCLICK : 双击标题中的某一项
  • LVN_INSERTITEM : 空间中插入某一项
  • NM_CLICK : 指示用户在控件中单击鼠标
  • NM_DBLICK : 指示用户在控件中双击了一下鼠标
  • NM_HOVER : 鼠标悬停在某一项上
  • NM_RCLICK : 用户已在控件内单击了鼠标右键

列表控件的属性:

· LVS_ALIGNLEFT 在图标和小图标视图中指定项左对齐。
· LVS_ALIGNTOP 在图标和小图标视图中指定项在控件的顶端对齐。
· LVS_AUTOARRANGE 在图标或小图标视图中指定图标自动保持对齐。
· LVS_EDITABELS 允许项文本能够适本地进行编辑。父窗口必须运行了LVN_ENDLABLEDIT通知消息。
· LVS_ICON 指定为图标视图。
· LVS_LIST 指定为列表视图。
· LVS_NOCOLUMNHEADER 指定在报表视图中不显示列标题。缺省时,在报表视图中列有标题。
· LVS_NOLABELWRAP 在图标视图的单行中显示项文本,缺省时,在图标视图中项文本有可能被遮住。
· LVS_NOSCROLL 不允许滚动,所有项都必须在客户可视的区域内。
· LVS_NOSORTHEADER 指定列标题不象按钮那样工作。这种风格是有用的,例如,当在报表视图中单击列标题,将不会带来例如排序那样的动作。
· LVS_OWNERDRAWFIXED 在报表视图中允许所有者窗口为项着色。列表视图控件发送一条WM_DRAWITWM 消息来为每一项着色;但它不为每一子项发送独立的消息。DRAWITEMSTRUCT结构中的itemDate成员则包含了指定列表视图项的项数据。
· LVS_REPORT 指定报表视图。
· LVS_SHAREIMAGELISTS 指定控件没有归属于它的图象列表的所有权(也就是说,当控件被销毁后,图象列表不会被销毁)。该风格能够是同一个图象列表用于多个列表视图控件中。
· LVS_SHOWSELALWAYS 总是显示选择框,即使任何控件都没有焦点。
· LVS_SINGLESEL 允许每次只能选择一个项。缺省时,同时能选择多项。
· LVS_SMALLICON 指定为小图标视图。
· LVS_SORTASCENDING 使项按照项文本的升序方式排列。
· LVS_SORTDESCENDING 使项按照项文本的降序方式排列。

列表控件的显示方式:

LVS_ICON; 大图标
LVS_SMALLICON; 小图标
LVS_LIST; 列表
LVS_REPORT;详细信息

使用方法:

1、创建列表控件的控件型变量或者使用GetDlgItem()函数获取控件的句柄。

CListCtrl m_list;

2、初始化标题栏,如果是详细信息,需要在对话框初始化的时候添加列表标题。

m_list.ModifyStyle(LVS_TYPEMASK,LVS_REPORT);
m_list.InsertColumn(0,_T("第一列"),LVCFMT_LEFT,120);
m_list.InsertColumn(1, _T("第二列"), LVCFMT_LEFT, 120);

3、也可以向列表框中的显示中添加图标。
(1)创建图片列表CImageList m_illarge;
(2)加载位图,将位图添加到图片列表当中

m_illarge.Create(IDB_BIG,32,1,RGB(255,0,255));
m_ilSmall.Create(IDB_SMALLDOC, 16, 1, RGB(255, 0, 255));

m_list.SetImageList(&m_illarge,LVSIL_NORMAL);
m_list.SetImageList(&m_ilSmall, LVSIL_SMALL);

4、向列表控件添加值

void C列表控件Dlg::OnBnClickedAdd()
{
	// TODO:  在此添加控件通知处理程序代码
	int nCount = m_list.GetItemCount();
	CString str;
	str.Format(_T("第%d行,第一列"),nCount+1);
	m_list.InsertItem(nCount,str,0);//0这个参数就代表插入的图片列表中的索引
	str.Format(_T("第%d行,第二列"), nCount + 1);
	m_list.SetItemText(nCount, 1, str);
}

5、删除列表中的值

void C列表控件Dlg::OnBnClickedDel()
{
	// TODO:  在此添加控件通知处理程序代码
	int nCount = m_list.GetItemCount();
	for (int i = nCount; i >= 0; i--)
	{
		if (m_list.GetItemState(i,LVIS_SELECTED) == LVIS_SELECTED)
		{
			m_list.DeleteItem(i);
		}
	}
}

你可能感兴趣的:(MFC笔记,mfc,c++)