Report风格的ListCtrl,我想在通过上下键改变选中Item的时候,获取选中的Item号。我在LVN_ITEMCHANGED消息中int itemIndex = m_SceModListCtrl.GetNextItem( -1, LVNI_ALL | LVNI_SELECTED )后,为什么每次我用方向键改变选中Item的时候,这个响应函数响应三次,前两次的itemIndex都是-1 ?

解决方案 »

  1.   

    http://blog.csdn.net/VisualEleven/archive/2011/04/14/6322466.aspx
      

  2.   


    那这个问题要怎么解决呢?还是CListCtrl就是这样,我们要写代码来适应它?
      

  3.   

    部长的代码有进行过滤:
    if(LVIF_STATE == pNMListView->uChanged && (pNMListView->uNewState & LVIS_SELECTED))
    前两次是LVIF_STATE: uOldState
    最后次是LVIF_STATE: uNewState 
    这里只执行uNewState 的
      

  4.   


    明白了
    还想再问一个问题。ListCtrl里按上下键是改变选中Item,怎么能在一定条件下禁止掉这个响应?我想定义‘M’键和上下键组合按下时做其它工作,而不改变选中Item