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);
		}
	}
}
  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: MFC ListControl控件的颜色可以通过以下方法进行设置: 1. 设置整个ListControl的背景颜色: 可以使用CListCtrl类的SetBkColor()函数来设置ListControl的背景颜色,例如: m_ListCtrl.SetBkColor(RGB(255, 255, 255)); // 设置背景颜色为白色 2. 设置ListControl中某一行或某一列的颜色: 可以使用CListCtrl类的SetItem()函数来设置ListControl中某一行或某一列的颜色,例如: m_ListCtrl.SetItem(, , LVIF_TEXT | LVIF_STATE, _T("第一行第一列"), , , , , LVIS_SELECTED, LVIS_SELECTED); // 设置第一行第一列的文本和选中状态 m_ListCtrl.SetItemText(, 1, _T("第一行第二列")); // 设置第一行第二列的文本 m_ListCtrl.SetItemState(, LVIS_SELECTED, LVIS_SELECTED); // 设置第一行选中状态 m_ListCtrl.SetItemData(, (DWORD_PTR)&m_Data); // 设置第一行的数据 可以在SetItem()函数中设置LVITEM结构体的iItem、iSubItem、pszText、state、stateMask等参数来设置行或列的颜色和状态。 3. 设置ListControl中某一单元格的颜色: 可以使用CListCtrl类的SetCell()函数来设置ListControl中某一单元格的颜色,例如: m_ListCtrl.SetCell(, , RGB(255, , ), RGB(255, 255, 255)); // 设置第一行第一列的前景色为红色,背景色为白色 可以在SetCell()函数中设置行、列、前景色和背景色等参数来设置单元格的颜色。 以上是MFC ListControl控件颜色设置的一些方法,希望能对您有所帮助。 ### 回答2: MFC ListControl 控件是非常常用的控件之一,可以用于展示大量数据。在使用 ListControl 控件的过程中,我们可能会遇到需要修改控件颜色的需求。下面就来介绍一下 MFC ListControl 控件的颜色设置方法MFC ListControl 控件的颜色可以通过属性编辑器或代码进行设置。在属性编辑器中,我们可以找到相应的属性(如:Background Color、Text Color、Selected Text Color、Selected Background Color 等),并通过改变相应的属性值来修改控件的颜色。同样地,在代码中,我们也可以通过修改相应的控件属性值来实现对控件颜色的修改。例如: // 获取 ListControl 控件指针 CListCtrl* pListCtrl = (CListCtrl*)GetDlgItem(IDC_LIST_CONTROL); // 设置控件的背景色 pListCtrl->SetBkColor(RGB(255, 0, 0)); // 设置控件文本颜色 pListCtrl->SetTextColor(RGB(0, 255, 0)); // 设置选中行的背景色和文本颜色 pListCtrl->SetItemState(0, LVIS_SELECTED | LVIS_FOCUSED, LVIS_SELECTED | LVIS_FOCUSED); pListCtrl->SetSelectionMark(0); pListCtrl->SetItemState(0, LVIS_SELECTED, LVIS_SELECTED); 以上代码中,通过调用 SetBkColor() 函数和 SetTextColor() 函数分别对控件的背景色和文本颜色进行设置。同时,代码也演示了如何设置选中行的背景色和文本颜色。需要注意的是,当设置控件的颜色时,如果控件已经被创建,需要先调用控件的 RedrawItems() 函数进行重绘操作,否则,新设置的颜色可能不会立即生效。 总之,MFC ListControl 控件是非常强大的控件之一,灵活的颜色设置能够更好地满足各种需求,开发者需要注意控件的颜色设置时需要先重绘才会生效。 ### 回答3: MFC ListControl控件MFC中非常常用的控件之一,它可以用于显示列表、图形视图等。在使用ListControl控件时,有时候需要对列表中的某些行或列进行颜色的设置以达到更好的视觉效果。下面我们来了解一下MFC ListControl控件的颜色设置。 MFC ListControl控件的背景颜色是由ListControl的背景色和父窗口的背景色共同决定的。用户可以在资源编辑器中或运行时使用CListCtrl类的SetBackgroundColor()函数来设置ListControl的背景颜色。 MFC ListControl控件的前景颜色是由用户在添加数据时指定的。在使用CListCtrl类的InsertItem()函数添加行的时候,可以指定该行的前景颜色和背景颜色;在使用CListCtrl类的SetItemText()函数设置列的时候,也可以指定该列的前景颜色和背景颜色。 如果需要动态地设置某一行或某一列的颜色,可以使用CListCtrl类的SetItem()函数。例如,设置第一行红色,第二行蓝色,可以用以下代码: ``` m_ListCtrl.SetItem(0, 0, LVIF_TEXT | LVIF_STATE, _T("第一行"), 0, LVIS_SELECTED, LVIS_SELECTED, 0); m_ListCtrl.SetItemText(0, 1, _T("第一列")); m_ListCtrl.SetItemData(0, 100); m_ListCtrl.SetItemState(0, LVIS_SELECTED | LVIS_FOCUSED, LVIS_SELECTED | LVIS_FOCUSED); m_ListCtrl.SetItemText(1, 0, _T("第二行")); m_ListCtrl.SetItem(1, 0, LVIF_TEXT | LVIF_STATE, _T("第二行"), 0, LVIS_SELECTED, LVIS_SELECTED, 0); m_ListCtrl.SetItemText(1, 1, _T("第二列")); m_ListCtrl.SetItemData(1, 200); m_ListCtrl.SetItemState(1, LVIS_SELECTED | LVIS_FOCUSED, LVIS_SELECTED | LVIS_FOCUSED); m_ListCtrl.SetItemText(2, 0, _T("第三行")); m_ListCtrl.SetItemText(2, 1, _T("第三列")); m_ListCtrl.SetItemText(0, 0, _T("第一行")); m_ListCtrl.SetItemText(0, 1, _T("第一列")); m_ListCtrl.SetItemState(0, LVIS_SELECTED | LVIS_FOCUSED, LVIS_SELECTED | LVIS_FOCUSED); m_ListCtrl.SetTextColor(0, RGB(255, 0, 0)); // 设置第1行红色 m_ListCtrl.SetItem(1, 0, LVIF_TEXT | LVIF_STATE, _T("第二行"), 0, LVIS_SELECTED, LVIS_SELECTED, 0); m_ListCtrl.SetItemText(1, 1, _T("第二列")); m_ListCtrl.SetItemState(1, LVIS_SELECTED | LVIS_FOCUSED, LVIS_SELECTED | LVIS_FOCUSED); m_ListCtrl.SetTextColor(1, RGB(0, 0, 255)); // 设置第2行蓝色 ``` 除了设置整行或整列的颜色,还可以为不同的单元格设置不同的颜色。可以在添加行时使用LVITEM结构体的iItem、iSubItem、mask、pszText等成员,分别指定行号、列号、要设置的属性和单元格中要显示的文本。在通过CListCtrl类的GetItem()函数获取某一行列时,也可以获得单元格的前景色和背景色等属性信息。 通过上述方法,可以实现对MFC ListControl控件的颜色自定义设置。至于要如何设置出美观的颜色组合,需要根据实际情况和个人喜好来决定。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值