• Clistctrl多行删除总结


    http://blog.csdn.net/vlily/article/details/7739483

    备注:第五种方法已经试过,其余没试过,感觉是对的(第二种方法是错误的 )

    CListCtrl选中行有两种属性情况,如果设置了Single Selection为TRUE,则只能单选,否则为多选(默认)。

    方法一:

    int CListCtrl::GetSelectionMark();

    返回值:返回选中索引号,否则返回-1

    说明:这个函数可以处理单行的情况,但是有一个缺点,它会保留你上次选中的项,所以当你单击空白的地方时,还会返回上次选中的项。因此在使用快捷键实现删除操作时需要注意这个情况,一般可以配合UINT GetItemState(int nItem,
    UINT nMask) const;来判断。

    单行:int nItem = m_listCtrl.GetSelectionMark();
    m_listCtrl.DeleteItem(nItem);

    方法二:
    此种方法完全错误!!!!!!!!!!!
    说明:这个可以处理单行和多行(连续)的情况

    POSITION pos = m_listCtrl.GetFirstSelectedItemPosition();
    if (pos == NULL)
    {
    TRACE(_T("No items were selected!
    "));
    }
    else
    {
    while (pos)
    {
    int nItem = m_listCtrl.GetNextSelectedItem(pos);
    m_listCtrl.DeleteItem(nItem);
    // you could do your own processing on nItem here
    }
    }



    方法三:

    说明:可以处理单行和多行的情况,个人一般用这种方法

    while(m_listCtrl.GetNextItem(-1,LVNI_ALL | LVNI_SELECTED) != -1)
    {
    int nItem = m_listCtrl.GetNextItem(-1,LVNI_ALL | LVNI_SELECTED);
    m_listCtrl.DeleteItem(nItem);
    }
    
    方法四:
    
    说明:可以处理单行和多行的情况
    
    for(int i = 0; i<m_listCtrl.GetItemCount(); i++)
    {
    if(m_listCtrl.GetItemState(i, LVNI_ALL | LVNI_SELECTED) == LVIS_SELECTED)
    m_listCtrl.DeleteItem(i);
    }
    
    方法五:
    
     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
    
         }
    
    }
    发现自己的不足,善于利用找到的方法去扬长避短。行动起来。
  • 相关阅读:
    LeetCode 75. Sort Colors(按颜色进行排序)
    LeetCode 451. Sort Characters By Frequency(按照字符出现次数对字符串排序)
    LeetCode 347. Top K Frequent Elements(出现频率最多的 k 个元素)
    LeetCode 215. Kth Largest Element in an Array(数组求第k大)
    CF #629 Div.3 E(LCA)F
    系统函数
    CASE表达式
    循环得出数据库中所有的 DB_ID,DB_NAME
    数据库的编码问题
    检验临时表是否存在
  • 原文地址:https://www.cnblogs.com/rechen/p/5100314.html
Copyright © 2020-2023  润新知