MFC里面的重要控件CListCtrl 对象
外观有四种模式
1 图标(Icon)
2 小图标(Small Icon)
3 列表(List)
4 报表(Report)
如何修改他的模式呢 ? 在视图哪里选择 属性-> View->Report
CListCtrl 对象的可以使用的函数
GetBkColor 获取背景颜色
SetBkColor 设置背景颜色
GetImageList 获取列表图像
SetImageList 设置列表图像
GetItemCount 获取ltem个数
Getltem 获取ltem属性
Setltem 设置ltem属性
GetCallbackMask 获取Mask
SetCallbackMask 设置Mask
GetNextItem 获取下一个Item
GetFirstSelectedItemPosition 获取首选项
GetNextSelectedItem 转换为int
GetItemRect 获取Item矩形
SetItemPosition 设置 Item 位置
GetItemPosition 获取 Item 位置
GetStringWidth 获取字符串宽带
InsertColumn 插入一个标题拦
GetEditControl 获取输入框
GetColumn 获取标题
SetColumn 设置标题
GetColumnWidth 获取一列的宽度
SetColumnWidth 设置一列的宽度
GetCheck 获取选择 SetCheck 设置选择 GetViewRect 获取矩形 GetTextColor 获取字体颜色 SetTextColor 设置字体颜色 GetTextBkColor 获取字体背景颜色 SetTextBkColor 设置字体背景颜色 GetTopIndex 获取顶部下标 不会用 GetCountPerPage 获取当前显示最大行 GetOrigin 获取起源 不会用。 SetItemState 设置ltem状态 GetItemState 获取ltem状态 GetItemText 获取ltem内容 SetItemText 设置ltem内容 SetItemCount 设置他的个数 SetItemData 获取与某项相关的应用所指定的值 GetItemData 设置项的应用指定的值 GetSelectedCount 获取选中的数量 SetColumnOrderArray 设置列表视图控件的列序(左或右) GetColumnOrderArray 获取列表视图控件的列序(左或右) SetIconSpacing 图标间距值 GetHeaderCtrl 获取头 GetHotCursor 获取在热调试对列表视图控件有效时使用的游标 SetHotCursor 设置在热调试对列表视图控件有效时使用的游标 GetSubItemRect 获取列表视图控件中某项的有界矩形 GetHotItem 获取当前在游标下的列表视图项 SetHotItem 设置列表视图控件的当前热项 GetSelectionMark 获取选中的位置 SetSelectionMark 设置选择 GetExtendedStyle 获取扩展风格 SetExtendedStyle 设置扩展风格 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 为指定的项构造一个拖动图象列表
CListCtrl 函数使用
GetBkColor 获取背景颜色
COLORREF cr = m_list.GetBkColor(); COLORREF 是什么类型 COLORREF ->DWORD -> unsigned long 实际上就是保存一个 RGB的值
获取到的数是16711680 why? 查了一下资料才发现是RGB(255,255,255) 为什么会是这样的呢?
RGB函数计算公式: 颜色值 = (65536 * Blue) + (256 * Green) + (Red)
SetBkColor 设置背景颜色
需要设置COLORREF类型的变量 但是我懒得计算或者不会计算怎么办?
m_list.SetBkColor(RGB(255, 0, 255))GetImageList 获取列表图像
CImageList *Imagelist = m_list.GetImageList(LVSIL_NORMAL); 首先设置里面有三个选项
LVSIL_NORMAL 一般的图标
LVSIL_SMALL 小图标
LVSIL_STATE大图标
CImageList 开单张来讲
SetImageList 设置列表图像
m_list.SetImageList(Imagelist, LVSIL_SMALL); 传递一个需要设置的 CImageList
LVSIL_SMALL 需要给什么类型图标设置
GetItemCount 获取ltem个数
int nCount = m_list.GetItemCount();
Getltem获取ltem属性
Setltem设置ltem属性
//修改某行某列的信息 LVITEMW item = { 0 }; if (m_list.GetItem(&item)) { item.mask = LVIF_TEXT; item.iItem = m_list.GetItemCount()-1;//设置多少行 item.iSubItem = 1;//第多少列 item.pszText = L"第八列"; //显示的内容 item.cchTextMax = MAX_PATH; m_list.SetItem(&item); }
GetFirstSelectedItemPosition 获取首选项
GetNextSelectedItem 转换为int
POSITION pos = m_list.GetFirstSelectedItemPosition();//获取点击的首位pos if (pos == NULL) TRACE0("No items were selected!\n");//在输出显示 else { while (pos) { int nItem = m_list.GetNextSelectedItem(pos);//转换为 int TRACE1("Item %d was selected!\n", nItem); } } GetItemRect RECT rect; m_list.GetItemRect(1, &rect, LVIR_LABEL); LVIR_BOUNDS 返回整个项目的边界矩形, 包括图标和标签。 LVIR_ICON 返回的边界矩形图标或小图标 LVIR_LABEL 返回的项目的边界矩形文本。 ret BOOL
GetStringWidth 获取字符串宽带
InsertColumn 插入一个标题拦
CString str(L"color"); int width = 3 * m_list.GetStringWidth(str) / 2; m_list.InsertColumn(0, //插入位置 pos str,//插入内容 LVCFMT_LEFT, //插入的属性 width//宽度 ); GetColumn 获取标题SetColumn 设置标题
TCHAR strlvc[MAX_PATH]={0}; ZeroMemory(&lvc, sizeof(lvc)); LVCOLUMN lvc; lvc.mask = LVCF_TEXT; lvc.pszText = strlvc; //显示的内容 lvc.cchTextMax = MAX_PATH; if (m_list.GetColumn(0, &lvc)) { lvc.pszText = L"color"; m_list.SetColumn(0, &lvc); } GetColumnWidth SetColumnWidth 设置一列的宽度
TCHAR strlvc[MAX_PATH] = { 0 }; LVCOLUMN lvc; ZeroMemory(&lvc, sizeof(lvc)); lvc.mask = LVCF_TEXT; lvc.pszText = strlvc; //显示的内容 lvc.cchTextMax = MAX_PATH; if (m_list.GetColumn(0, &lvc)) { int width= m_list.GetStringWidth(strlvc) * 3 / 2; m_list.SetColumnWidth(0, width); } GetCheck 获取选择
SetCheck 全部选择
m_list.SetExtendedStyle(LVS_EX_CHECKBOXES); 必须设置的 CString str; for (int i = 0; i < m_list.GetItemCount(); i++) { m_list.SetCheck(i); }GetItemState 删除选中状态
DeletItem
int nCount = m_list.GetItemCount(); for (int i = nCount - 1; i >= 0; --i) { if (m_list.GetItemState(i, LVIS_SELECTED) == LVIS_SELECTED) { m_list.DeleteItem(i); break; } }