我用一个ListCtrl,我想在它的OnKeydownList事件中做一些操作,但是我在此事件中无法得到ListCtrl的下标,就是在按上下按键时,此控件的光标不是会动吗?我就是想知道,光标移到第几行了?急呀?麻烦各位说的详细些,我是新手

解决方案 »

  1.   

    if(List.GetItemState(i,2) == LVIS_SELECTED)
        return i;
    被选中的项目用这条语句返回在列表框中的索引
      

  2.   

    试试这个!CListCtrl *pList;
    //..........
    POSITION pos = pList->GetFirstSelectedItemPosition();
    if (pos == NULL)
       TRACE0("No items were selected!\n");
    else
    {
       int nItem = pList->GetNextSelectedItem(pos);
       TRACE1("Item %d was selected!\n", nItem);
       // you could do your own processing on nItem here
    }
    得到的nItem就是当前选中行的索引值。
      

  3.   

    第二种办法可以,但是我也不知道为什么有一个程序我怎么也读不出来。
    其实,最简单的话你就用
    POSITION pos = pList->GetFirstSelectedItemPosition();
    int nItem = (int)pos -1;
    反正目前我测试没问题。
      

  4.   


    int k=m_list.GetSelectionMark();
      

  5.   

    int k=m_list.GetSelectionMark();
      

  6.   

    我试验发现怎么GetSelectionMark(); 和 GetFirstSelectedItemPosition();都好像反映慢呢!我在我的m_ctrList中的OnKeydownList中加上TRACE(...输出值,我发现输出的是前一个点的下标呢