我在ListView_InsertItem的时候,把LVITEM的lParam设定为了自己的一个参数~~但是我为什么在这个行上面点击右键从NMITEMACTIVATE中取lParam却取不出来~~~是不是我的方法有问题?如果有问题,请大家告诉我一个正确的方法~~我的目的很简单,就是插入的时候携带一个自己的参数,通过点击右键取出这一行中所携带的参数~

解决方案 »

  1.   

    void C...View::OnLvnItemActivateCommandList(NMHDR *pNMHDR, LRESULT *pResult)
    {
    LPNMITEMACTIVATE pNMIA = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
    // TODO: 在此添加控件通知处理程序代码
    DWORD dwData = GetItemData(pNMIA->iItem); *pResult = 0;
    }
      

  2.   

    HRESULT GetItemData(          LPCSHCOLUMNID pscid,
        LPCSHCOLUMNDATA pscd,
        VARIANT *pvarData
    );
    我用的时SDK编程~~~可否详细说一下
      

  3.   

    可能原因如下:
    1.LVITEM的lParam需要开辟空间
      

  4.   

    SDK用ListView_GetItem。
    你查的什么东西呦。
      

  5.   

    不行的~~~~ListView_GetItem这个函数早就试过了~
      

  6.   

    ListView_GetItem只能取出最后一次的lParam
      

  7.   

    你要设置LVITEM里面的iItem为你要取出的那个项目的编号。
      

  8.   

    设置了~~取的时候也设置了~但是取出来还是最后一次的lParam
      

  9.   

    LVITEM的mask呢?把你的代码发上来看看好不好?求你了。
      

  10.   

    lvi.iItem = 0;
    lvi.mask = LVIF_TEXT | LVIF_PARAM; lvi.iItem = lvi.iItem;
    lvi.pszText = "test";
    //lvi.lParam = (LPARAM)lpParam ;
    ListView_InsertItem(h_list,&lvi); ListView_SetItemText(h_list,lvi.iItem,1,"temp"); lvi.iItem++;
      

  11.   

    还有,你这里注释掉了?
    //lvi.lParam = (LPARAM)lpParam ;
      

  12.   

    lvi.iItem = 0;
    ListView_GetItem(h_list,&lvi);其实这里已经插入了好行数据了,索引可能已经到了10左右,但是我要取第一行的lParam,结果取出来的是最后一次插入的数据~~上面那个注释是后来注释上去的,在测试的时候没有
      

  13.   

    lvi.iItem = 0;
    lvi.mask = LVIF_PARAM;
    ListView_GetItem(h_list,&lvi);