1、在对话框创建ListControl控件,修改View属性为Report;
2、映射ListControl控件成员变量m_listTest;
3、初始化m_listTest:
LONG lStyle = m_listTest.SendMessage(LVM_GETEXTENDEDLISTVIEWSTYLE);
lStyle |= LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES | LVS_EX_CHECKBOXES | LVS_EX_HEADERDRAGDROP;
m_listTest.SendMessage(LVM_SETEXTENDEDLISTVIEWSTYLE, 0, (LPARAM)lStyle);
4、增加标题栏:
LV_COLUMN lvc;
lvc.mask = LVCF_TEXT | LVCF_SUBITEM | LVCF_WIDTH;
lvc.iSubItem = 0; // 列序号
lvc.pszText = "列表头"; // 列名称
lvc.cx = 150; // 列宽度
m_listTest.InsertColumn(0, &lvc); // 插入列
5、增加数据:
for (int i=0; i<10; ++i)
{
int nItemCount = m_listTest.GetItemCount() + 1;
LV_ITEM lvItem;
lvItem.mask = LVIF_TEXT | LVIF_IMAGE | LVIF_STATE;
lvItem.iSubItem = 0;
lvItem.state = 0;
lvItem.stateMask = 0;
lvItem.iItem = nItemCount;
lvItem.iSubItem = 0;
lvItem.pszText = "数据";
m_listTest.InsertItem(&lvItem);
m_listTest.SetItemText(nItemCount, 1, "数据2"); // 设置数据
}
6、设置复选框:
m_listTest.SetCheck(0, TRUE); // TRUE选择,FALSE不选,适用于LVS_EX_CHECKBOXES格式
7、遍历选中的数据行:
POSITION pos = m_listTest.GetFirstSelectedItemPosition();
if (pos == NULL)
{
return;
}
while (pos)
{
int nItem = m_listTest.GetNextSelectedItem(pos);
// 处理数据
}
8、遍历列标题栏:
int nHeadItemCount = m_listTest.GetHeaderCtrl()->GetItemCount();
if (nHeadItemCount > 0)
{
HDITEM hdi;
TCHAR lpBuffer[256];
hdi.mask = HDI_TEXT;
hdi.pszText = lpBuffer;
hdi.cchTextMax = 256;
for ( int i=0; i<m_listTest.GetHeaderCtrl()->GetItemCount(); ++i )
{
m_listTest.GetHeaderCtrl()->GetItem(i, &hdi);
AfxMessageBox(hdi.pszText); // hdi.pszText列名称
}
}
9、删除数据行:
m_listTest.DeleteItem(0);
10、删除列标题栏:
m_listTest.DeleteColumn(0);
11、CListView初始化:
CListView在CExcelListView::OnCreate初始化:
CListCtrl& listCtrl = GetListCtrl();
LONG lStyle;
lStyle = GetWindowLong(listCtrl.m_hWnd, GWL_STYLE); // 获取当前窗口格式
lStyle |= LVS_REPORT | LVS_SHOWSELALWAYS; // 设置报表格式
SetWindowLong(listCtrl.m_hWnd, GWL_STYLE, lStyle); // 设置窗口格式
DWORD dwListStyle = listCtrl.GetExtendedStyle();
// 设置扩展格式
dwListStyle |= LVS_EX_FULLROWSELECT | LVS_EX_INFOTIP | LVS_EX_GRIDLINES;
listCtrl.SetExtendedStyle(dwListStyle);
listCtrl.EnableToolTips(TRUE);
--后续待补充