关于listctrl的用法

插入列:(行和列都是从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 ) );

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值