在CListCtrl中同时选中几行,用什么方法可以知道这几行的iItem值?
选中一行可以用控件的消息处理函数,多行怎么办?

解决方案 »

  1.   

    用CListCtrl::GetNextItem()函数;int GetNextItem(int nItem,int nFlags);如:
    int i=list.GetNextItem(-1,LVNI_SELECTED);
    可得到第一个被选中的,
    int i=list.GetNextItem(2,LVNI_SELECTED);
    可得到从第二项开始第一个被选中项的索引。据此原理,可以使用一个循环得到所有被选中项。
      

  2.   

    ExampleThe following code sample demonstrates the usage of this function.CListCtrl* pListCtrl = (CListCtrl*) GetDlgItem(IDC_YOURLISTCONTROL);
    ASSERT(pListCtrl != NULL);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);
          // you could do your own processing on nItem here
       }
    }