我单击CListCtrl选中某行后得到该行索引,再点击时,就得不到索引了!!!
代码如下:
ON_NOTIFY_REFLECT(LVN_ITEMCHANGED, OnItemchanged) //点击某行时的消息响应函数//响应函数的定义
void CMyListView::OnItemchanged(NMHDR *pNMHDR, LRESULT *pResult)   //函数放在mainfram里
{
     int i;  //存储索引值
    for (int n = 0; n< GetListCtrl().GetItemCount(); n++)
    {
UINT state = GetListCtrl().GetItemState(n , LVIS_SELECTED);
if (state == LVIS_SELECTED)
{
 i = n;
 break;
}
    }    . . .}第一次点击可以得到索引值,再点击时列表中的所有元素状态都不是LVIS_SELECTED的了,怎么回事???
希望哪位老大能赐教!!!!!!!!!!!!

解决方案 »

  1.   

    点击一下会有多个LVN_ITEMCHANGED通知,中间状态经常会有都没选中的情况。
      

  2.   

    void CMyListView::OnItemchanged(NMHDR *pNMHDR, LRESULT *pResult)   //函数放在mainfram里
    这个看不懂了,明明是CMyListView的函数,“函数放在mainfram里”什么意思?
      

  3.   

    你这样点击换选中会进这个消息4次,每一次有不同的意义,你仔细看一下,涉及到两个ITem的两种状态之间的两两组合就是四种状态