插入列:(行和列都是从0开始)
m_list.InsertColumn(0, "执行时间", LVCFMT_LEFT , 80 ,-1);
m_list.InsertColumn(1, "描述", LVCFMT_LEFT , 80 , -1);
m_list.InsertColumn(2, "程序路径", LVCFMT_LEFT , 150 , -1);
m_list.InsertColumn(3, "执行状态", LVCFMT_LEFT , 100 , -1);
插入行:
int n = m_list.GetItemCount();
m_list.InsertItem(n, str_time ,0);
m_list.SetItemText(n, 1, dlg.m_edit);
m_list.SetItemText(n, 2, dlg.m_filepath);
m_list.SetItemText(n, 3, "未执行");
获取第i行,第3列的值:
m_list.GetItemText(i, 3);
删除时要注意一点:
m_listctrl.DeleteItem(0)
m_listctrl.DeleteItem(1)
因为你删除第0行以后,下面的行会往上移,那么原来的第1行就变成了第0行,那么你再 m_listctrl.DeleteItem(1),那么删除的是原来的第2行
所以,只有从下往上删,才是安全的
可以使用下面代码:
POSITION sSelPos = NULL;
while(sSelPos = m_listctrl.GetFirstSelectedItemPosition())
{
int nSelItem = -1;
nSelItem = m_listctrl.GetNextSelectedItem(sSelPos);
if(nSelItem 〉= 0 && nSelItem〈m_listctrl.GetItemCount())
{
这个nSelItem 就是我们要的DD
}
}
获得选中项:
方法一:
POSITION pos = pList->GetFirstSelectedItemPosition();
if (pos == NULL)
TRACE0("No items were selected!/n");
else
{
while (pos)
{
int nItem = pList->GetNextSelectedItem(pos);
TRACE1("Item %d was selected!/n", nItem);
}
}
方法二:
int i=m_oldins.GetCurSel(); //得到在第一个ListCtrl列表中选择项的索引
CString str;
if(i==LB_ERR) //表示没有选择
{
return;
}
方法三:
int i=m_list.GetSelectionMark();
删除CListCtrl中选定的项:
POSITION pos;
int nIndex;
for(; pos= GetFirstSelectedItemPosition();)
{
nIndex = GetNextSelectedItem(pos);
DeleteItem(nIndex);
}
用程序选中某一行,使之选中
m_listctrl.SetItemState(nIndex,LVIS_SELECTED|LVIS_FOCUSED,LVIS_SELECTED|LVIS_FOCUSED);
不选中,取消选中之
m_listctrl.SetItemState(nIndex,0,LVIS_SELECTED|LVIS_FOCUSED);
设置背景颜色:
m_list.SetBkColor( RGB( 100, 180, 250 ) );
设置字体颜色:
m_list.SetTextBkColor( RGB( 100, 180, 250 ) );