MFC入门学习之控件(6)标签控件List Control的添加和使用(下)

本文介绍了在Windows编程中如何使用ListCtrl控件获取行的Checkbox状态及选中行的序号,包括两种不同的方法,并探讨了它们之间的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        前面对listctrl进行了理论描述,但是在实际的工程中,我们一定是希望能够通过listctrl的各种状态来进行代码的编写从而完成一定的任务。那么首先来看一下listctrl中item的选择。

功能1 得到listctrl中所有行的checkbox的状态



      m_list.SetExtendedStyle(LVS_EX_CHECKBOXES);
      CString str;
      for(int i=0; i<m_list.GetItemCount(); i++)
      {

          // if( m_list.GetItemState(i, LVIS_SELECTED) == LVIS_SELECTED || m_list.GetCheck(i))

           if(  m_list.GetCheck(i))

           {
                str.Format(_T("第%d行的checkbox为选中状态"), i);
                AfxMessageBox(str);
           }
      }
功能2 得到listctrl中所有选中行的序号

      方法一:
      CString str;
      for(int i=0; i<m_list.GetItemCount(); i++)
      {
           if( m_list.GetItemState(i, LVIS_SELECTED) == LVIS_SELECTED )
           {
                str.Format(_T("选中了第%d行"), i);
                AfxMessageBox(str);
           }
      }


      方法二:
      POSITION pos = m_list.GetFirstSelectedItemPosition();
      if (pos == NULL)
           TRACE0("No items were selected!\n");
      else
      {
           while (pos)
           {
                int nItem = m_list.GetNextSelectedItem(pos);
                TRACE1("Item %d was selected!\n", nItem);
                // you could do your own processing on nItem here
           }
      }

        两者的区别是什么呢?区别就在于在实际的应用中查看你的鼠标点击了那一行,和checkbox是否选中的状态上。具体来讲,如果你要通过自己的选择来完成某些特殊的任务,例如选择了某几个文件进行文件的打包和烧写工作,那么就需要的是看checkbox是否选中来决定而不是看选中了哪一行。另外一种场景,比如你想添加对某一行的内容的注解,那么就选择功能2

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值