MFC listCtrl的基本使用

删除:
m_list.DeleteItem(0); //删除第0行数据
m_list.DeleteColumn(0); //删除 第0列数据
m_list.DeleteAllItems(); //删除所有数据
添加:
m_list.InsertColumn(i,str[i],LVCFMT_CENTER,100); //插入头部,原本有5个参数,后面三个可以省略
m_list.InsertItem(i,str[i]);
m_list.SetItemText(i,1,b[i]);

构造函数ClistCtrl 构造一个CListCtrl对象
Create 创建列表控件并将其附加给CListCtrl对象

属性GetBkColor 获取列表视图控件的背景色 
SetBkColor 设置列表视图控件的背景色 
GetImageList 获取用于绘制列表视图项的图象列表的句柄 
SetImageList 指定一个图象列表到列表视图控件 
GetItemCount 获取列表视图控件中的项的数量 
GetItem 获取列表视图项的属性 
GetCallbackMask 获取列表视图控件的回调掩码 
SetCallbackMask 设置列表视图控件的回调掩码 
GetNextItem 查找指定特性和指定指定项关系的列表视图项 
GetFirstSeletedItemPosition 在列表视图控件中获取第一个选择的列表视图项的位置 
GetNextSeletedItem 为重复而获取下一个选择的列表视图 
GetItemRect 获取项的有界矩形 
SetItemPosition 在列表视图控件中移动一项到指定位置 
GetItemPosition 获取列表视图项的位置 
GetStringWidth 指定需要显示所有指定字符串的最小列宽 
GetEditControl 获取用于编辑一个项文本的编辑控件的句柄 
GetColumn 获取控件的列的属性 
SetColumn 设置列表视图列的属性 
GetColumnWidth 获取报表视图或列表视图中的列的宽度 
SetColumnWidth 改变报表视图或列表视图中的列的宽度 
GetCheck 获取与某项相关的状态图象的当前显示状态 
SetCheck 设置与某项相关的状态图象的当前显示状态 
GetViewRect 获取列表视图控件中所有项的有界矩形 
GetTextColor 获取列表视图控件的文本颜色 
SetTextColor 设置列表视图控件的文本颜色 
GetTextBkColor 获取列表视图控件的文本背景色 
SetTextBkColor 设置列表视图控件的文本背景色 
GetTopIndex 获取最高级项的索引 
GetCountPerPage 计算可正好垂直放入列表视图控件中的项的数目 
GetOrigin 获取列表视图控件的最初的当前视图 
SetItemState 改变列表视图控件的项的状态 
GetItemState 获取列表视图控件的项的状态 
GetItemText 获取列表视图项或子项的文本 
SetItemText 设置列表视图项或子项的文本 
SetItemCount 准备一个列表视图控件以添加大量的项 
GetItemData 获取与某项相关的应用所指定的值 
SetItemData 设置项的应用指定的值 
GetSelectedCount 获取列表视图控件中选择项的数量 
SetColumnOrderArray 设置列表视图控件的列序(左或右) 
GetColumnOrderArray 获取列表视图控件的列序(左或右) 
SetIconSpacing 设置列表视图控件中的图标的距离 
GetHeaderCtrl 获取列表视图控件的标题控件 
GetHotCursor 获取在热调试对列表视图控件有效时使用的游标 
SetHotCursor 设置在热调试对列表视图控件有效时使用的游标 
GetSubItemRect 获取列表视图控件中某项的有界矩形 
GetHotItem 获取当前在游标下的列表视图项 
SetHotItem 设置列表视图控件的当前热项 
GetSelectionMark 获取列表视图控件的选择屏蔽 
SetSelectionMark 设置列表视图控件的选择屏蔽 
GetExtendedStyle 获取列表视图控件的当前扩展风格 
SetExtendedStyle 设置列表视图控件的当前扩展风格 
SubItemHitTest 指定哪个列表视图项在指定位置,若存在 
GetWorkAreas 获取列表视图控件的当前工作区 
GetNumberOfWorkAreas 获取列表视图控件的当前工作区数量 
SetItemCountEx 设置虚列表视图控件的项的数量 
SetWorkAreas 设置列表视图控件中图标可以显示的区域 
ApproximateViewRect 指定显示列表视图控件项所需的宽度和高度 
GetBkImage 获取列表视图控件的当前背景图象 
SetBkImage 设置列表视图控件的当前背景图象 
GetHoverTime 获取列表视图控件的当前逗留时间 
SetHoverTime 设置列表视图控件的当前逗留时间 
操作
InsertItem 在列表视图控件中插入一个新项 
DeleteItem 从控件中删除一项 
DeleteAllItems 从控件中删除所有项 
FindItem 查找具有指定的字符的列表视图项 
SortItems 使用应用定义的比较函数排序列表视图项 
HitTest 指定哪个列表视图在指定的位置上 
EnsureVisible 保证项是可见的 
Scroll 滚动列表视图控件的内容 
ReDrawItems 强迫列表视图控件刷新一些项 
Update 强迫控件刷新一个指定的项 
Arrange 调整一栏里的项 
EditLabel 开始项文本该处编辑 
InsertColumn 插入列表视图控件中的新列 
DeleteColumn 从列表视图控件中删除一列 
CreateDragImage 为指定的项构造一个拖动图象列表 

可覆盖的函数DrawItem 当自绘制控件的可视部分改变时被调用

CListCtrl控件主要事件及LVN_ITEMCHANGED消息和鼠标双击列表项事件的处理
LVN_BEGINDRAG 鼠标左键正在被触发以便进行拖放操作(当鼠标左键开始拖拽列表视图控件中的项目时产生)
LVN_BEGINRDRAG 鼠标右键正在被触发以便进行拖放操作(当鼠标右键开始拖拽列表视图控件中的项目时产生)
LVN_BEGINLABELEDIT 开始编辑项的文本
LVN_COLUMNCLICK 单击列(当鼠标单击列表视图控件列标题时产生)
NM_CLICK 当鼠标单击列表视图控件时产生
LVN_COLUMNCLICK 单击列
LVN_DELETEALLITEMS 删除所有项
LVN_DELETEITEM 删除某个项
NM_DBLCLK 当鼠标双击列表视图控件时产生
LVN_ENDLABELEDIT 结束对项文本的编辑
LVN_GETDISPINFO 请求需要显示的信息
LVN_GETINFOTIP 请求显示在工具提示窗口内的附加的文本信息
LVN_HOTTRACK 鼠标滑过某个项
LVN_INSERTITEM 当向列表视图控件插入项目时产生
lVN_ITEMACTIVATE 激活某个项
LVN_ITEMCHANGED 某个项已经发生变化
LVN_ITEMCHANGING 某个项目正在发生变化
NM_KILLFOCUS 当视表列图控件失去焦点时产生
LVN_KEYDOWN 某个键被按下
LVN_MARQUEEBEGIN 开始某个边框选择
NM_OUTOFMEMORY 当内存溢出时产生
LVN_ODCACHEHINT 虚拟列表控件的显示区域的内容发生了变化
LVN_ODSTATECHANGED 虚拟列表的控件的某个项或某个范围内的项已经发生变化
LVN_ODFINDITEM 需要拥有者查找一个特定的回调项
NM_RCLICK 当鼠标右键单击列表视图控件时产生
NM_RDBLCLK 当鼠标右键双击列表视图控件时产生
NM_SETFOCUS 当列表视图控件获得焦点时产生
LVN_SETDISPINFO 父窗口必须更新控件为项所维护的信息

注解:
HDN:Header Notify
LVN:ListView control Notify
NM:Notify Message
TVN:TreeView control Notify

LVN_ITEMCHANGED消息的处理
消息处理函数:
void CDlg::OnItemchangedList(NMHDR pNMHDR, LRESULT pResult)
{
NM_LISTVIEW
pNMListView = (NM_LISTVIEW*)pNMHDR;
if(pNMListView->uChanged==LVIF_STATE)
{
if(pNMListView->uNewState & LVIS_SELECTED)
{
//处理内容
int nItem=pNMListView->iItem;
CString value[6];
for(int i=0;i<6;i++)
{
value[i]=m_List.GetItemText(nItem,i);
}
}
}
*pResult = 0;
}

消息处理函数中的两个if条件句一定要有,否则可能出现多次进入处理内容的问题。

鼠标双击列表项事件的处理
响应NM_DBLCLK消息:
void CDisSalaryDlg::OnDblclkList(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_LISTVIEW *pNMListView=(NM_LISTVIEW *)pNMHDR;
int nItem=pNMListView->iItem;
if(nItem>=0 && nItem {

}

  *pResult = 0;

}

消息处理函数中的if语句很重要,用于判断双击位置是否在有数据的列表项上面。因为NM_DBLCLK消息是CListCtrl控件(整体)消息,只要是在CListCtrl控件范围之内执行此事件就会产生该消息,而不一定要在有数据的列表项上面。

后面的借鉴了https://www.cnblogs.com/LuckyRookie/p/3368188.html做个笔记方便下次使用

你可能感兴趣的:(mfc)