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来管理列表中的图标资源。