首先给他绑上一个CListCtrl类型的变量m_Listctrl。
初始化:
// 插入列表控件纵列
m_listctrl.InsertColumn(0, "ID", LVCFMT_LEFT, 110);//第0列
m_listctrl.InsertColumn(1, "Number", LVCFMT_LEFT, 110);//第1列
m_listctrl.InsertColumn(2, "Name", LVCFMT_LEFT, 110);//第2列
// 设置列表控件扩展样式为整行高亮,否则为第0列
m_listctrl.SetExtendedStyle(LVS_EX_FULLROWSELECT);
int i;
int nItem;
CString f1, f2, f3;
for(i=0;i<9;i++){
// 格式化字符串
f1.Format("SerialNum: %d", i+1);
f2.Format("Row %d Column 2", i+1);
f3.Format("Row %d Column 3", i+1);
nItem=m_listctrl.InsertItem(i, f1); //插入第0列
m_listctrl.SetItemText(nItem, 1, f2); // 插入第1列
m_listctrl.SetItemText(nItem, 2, f3); // 插入第2列
}
常用操作:
//单击某一行,行号传递到IndexInFieldList(当前所在行)
void CTest100401Dlg::OnClickList1(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
POSITION pos;
pos = m_listctrl.GetFirstSelectedItemPosition();
IndexInFieldList = m_listctrl.GetNextSelectedItem(pos); // 得到项目索引
*pResult = 0;
}
//获得总行数
m_listctrl.GetItemCount()
//读取当前行第一列
temp1=m_listctrl.GetItemText(IndexInFieldList,0);
//删除当前行
m_listctrl.DeleteItem(IndexInFieldList);
//插入新行
int nitem;
nitem=m_listctrl.InsertItem(IndexInFieldList-1,temp1);
m_listctrl.SetItemText(nitem,1,temp2);
m_listctrl.SetItemText(nitem,2,temp3);
// 使得IndexInFieldList-1位置处项目高亮显示并获得焦点
UINT flag = LVIS_SELECTED|LVIS_FOCUSED;
m_listctrl.SetItemState(IndexInFieldList, flag, flag);