请问怎样获得当前ListCtrl控件选中了哪一行、双击了哪一行?我已经重载了该控件的单击事件和双击事件```

解决方案 »

  1.   

    DWORD dwPos = ::GetMessagePos();
    CPoint point((int)LOWORD(dwPos), (int)HIWORD(dwPos));
    ListCtrl.ScreenToClient( &point );
    LONG iSelectionIndex = ListCtrl.HitTest( point );
    ListCtrl为你的列表控件
    iSelectionIndex为所选的行
      

  2.   

    可以用CListCtrl类的成员函数GetFirstSelectedItemPosition(),及GetNextSelectedItem(pos)
    例子如下:
    // 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
      }
    }