代码如下
=======================================================
void ItemDialog::OnLoadItem() 
{
struct item_data * item_unit;
m_ItemList.ResetContent();
for(i=0;i<10000;i++)
{
item_unit = si->itemdb_exists(i);
if(item_unit==NULL) continue;
if(item_unit->nameid==0) continue;
m_ItemList.AddString(_T(item_unit->jname));
m_ItemList.SetItemData(i_index,item_unit->nameid);//这里设置值
int test_res = m_ItemList.GetItemData(i_index);//这里检查结果,跟踪了几次都是正确的
i_index++;
// int error_code = GetLastError();
}
}
============================================================
然后在双击的消息函数里取值的时候总是得到0
代码如下
============================================================
void ItemDialog::OnDblclkItemList() 
{
struct item_data * item_unit;
int i_index=m_ItemList.GetCurSel();
int i_data=m_ItemList.GetItemData(i_index);//这里得到的值总是为0
}
============================================================
已经可以确认index没有错,对单独的项做过实验
比如在void ItemDialog::OnLoadItem() 写明
m_ItemList.SetItemData(128,643);//list的中的项目数大于128的时候设的然而到void ItemDialog::OnDblclkItemList() 里取值的时候就不对了
int i_data=m_ItemList.GetItemData(128);//这里得到的值总是为0不知为何会这样,请求高手解答

解决方案 »

  1.   

    建议:
    m_ItemList.SetItemData(i_index,(LPARAM)&item_unit->nameid);
      

  2.   

    >>如果返回值是0,说明执行没有问题,如果有问题,返回值就是-1了
    >>
    >>看来是设置值的问题,是不是因为你的条目太多,数目太大?我一共加入了1553个字符串,是不是太大了?
      

  3.   

    添加的个数好像也有点关系,我只添加一个的时候是正常的,一个以上就不对了>>建议:
    >>m_ItemList.SetItemData(i_index,(LPARAM)&item_unit->nameid);这样试过了,好像还是没有效果
      

  4.   

    int i_data=m_ItemList.GetItemData(128);//这里得到的值总是为0
    不错。你没有用SetItemData设置,返回就是0。你自己设置吧:SetItemData(i, j),就返回j了。
    // The pointer to my list box.
    extern CListBox* pmyListBox;// If any item's data is equal to zero then reset it to -1.
    for (int i=0;i < pmyListBox->GetCount();i++)
    {
       if (pmyListBox->GetItemData(i) == 0)
       {
          pmyListBox->SetItemData(i, (DWORD) i);
       }
    }
      

  5.   

    这样看看:
    m_ItemList.SetItemData(i_index,(DWORD)item_unit->nameid);
    DWORD dwdata = m_ItemList.GetItemData(i_index);DWORD直接转换成int,不知道是不是丢失数据了
      

  6.   

    决定放弃用SetItemData的方法了
    改用其他方法
    多谢各位热心帮助和解答