我现在在写的一个东西用到了CListCtrl(关于他的问题真不少)
得到当前选择的item有好几个方法,但是我知道的都不适用
我的要求是不论用键盘选择,还是用鼠标选择,都要得到被选中的item
最好不要和LVN_ITEMCHANGED这个消息有关(这消息发太乱),而且不要对诸如SetItemState(iItem,LVIS_SELECTED,LVIS_SELECTED)这样的人为改变选择的函数有反应。就是说直接收客户的键盘鼠标选中的item,程序自己选中的就不管。。
希望能给出主要代码,谢谢

解决方案 »

  1.   

    workaround:
    set a flag before you call SetItemState, reset the flag after the call. So you know if the item state is changed by your program.
    int nselcount=ListView_GetSelectedCount(hwndListView);
    int nitemcount=ListView_GetItemCount(hwndListView);
    for(int i=nitemcount-1;i>=0;i--)
    {
    if(ListView_GetItemState(hwndListView,i,LVIS_SELECTED))
    {
    }
    }
      

  2.   

    OnLvnItemActivate在MFC中没有,在SDK中却有不知道为什么。
    还有,这个消息要双击才有效,单击没用。
      

  3.   

    CListCtrl可以设置成单击激活。
      

  4.   

    但是键盘怎么办
    OnLvnItemActivate对键盘没反应