2024年4月19日发(作者:)
MFCCListCtrl控件使用总结整理
一、基本操作:
1. 创建CListCtrl实例,可以通过对话框资源添加控件或代码创建:
```cpp
CListCtrl m_listCtrl;
```
2.设置列表样式,例如设置为报表样式:
```cpp
m_(WS_VISIBLE , WS_CHILD , LVS_REPORT,
CRect(10, 10, 500, 300), this, IDC_LIST_CTRL);
```
3.设置列表列头:
```cpp
m_Column(0, _T("序号"), LVCFMT_LEFT, 50);
m_Column(1, _T("姓名"), LVCFMT_LEFT, 100);
m_Column(2, _T("年龄"), LVCFMT_LEFT, 50);
```
4.添加行数据:
```cpp
int nItemIndex = m_Item(0, _T("1"));
m_mText(nItemIndex, 1, _T("张三"));
m_mText(nItemIndex, 2, _T("20"));
```
```cpp
m_Item(nItemIndex); // 删除
```
二、高级操作:
1.设置列宽:
```cpp
m_umnWidth(0, LVSCW_AUTOSIZE_USEHEADER);
m_umnWidth(1, LVSCW_AUTOSIZE);
m_umnWidth(2, LVSCW_AUTOSIZE);
```
2.设置行高:
```cpp
m_mHeight(0, 50);
```
3.设置行选中状态:
```cpp
m_mState(0, LVIS_SELECTED, LVIS_SELECTED);
```
4.设置行背景色:
```cpp
m_mState(0, LVIS_SELECTED , LVIS_FOCUSED,
LVIS_SELECTED , LVIS_FOCUSED);
m_ectionMark(0);
m_mState(0, LVIS_SELECTED, LVIS_SELECTED);
```
5.设置行图标:
```cpp
m_mImage(nItemIndex, nImageIndex);
```
6.获取行数和列数:
```cpp
int nItemCount = m_mCount(;
int nColumnCount = m_derCtrl(->GetItemCount(;
```
7.获取行数据:
```cpp
CString strItemText = m_mText(nItemIndex,
nSubItemIndex);
```
三、自定义操作:
1.列排序:
```cpp
```
2.行拖拽排序:
```cpp
m_endedStyle(LVS_EX_FULLROWSELECT ,
LVS_EX_GRIDLINES , LVS_EX_HEADERDRAGDROP);
```
```cpp
m_Style(0, LVS_EDITLABELS);
```
4.行点击事件:
```cpp
ON_NOTIFY(NM_CLICK, IDC_LIST_CTRL, OnLButtonDown)
```
5.自定义绘制:
```cpp
ON_WM_DRAWITEM
```
四、注意事项和优化建议:
1. 大量数据时,慎用SetRedraw方法来控制刷新。
2. 尽量使用GetItem和SetItem方法代替GetItemText和
SetItemText方法,效率更高。
4. 通过CListCtrl::GetHeaderCtrl(方法获取列头控件,并对列头
进行自定义操作。
5. 使用CImageList来管理列表中的图标资源。


发布评论