代码如下
=======================================================
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不知为何会这样,请求高手解答
=======================================================
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不知为何会这样,请求高手解答
解决方案 »
- IOCP 关于GetNextReadBuffer的问题 pBuffer->next总是为空
- Win32 API 五子棋画棋盘后,落子只能显示一个棋子
- 一个连接oracle数据源的问题,急~~求助各位大神
- 求救,怎么使用导出类的dll
- 用过CTreeView的各位高手请近!!
- OnAccept并没有被自动调用,为什么?
- 关于ListCtrl
- 字符类型大串烧(求:分解 LPSTR,LPCTSTR,CString,Char *)多参与多意见:)
- 急救!在线等待!怎么改变主窗口的标题 50分
- 在vb控件中如何控制容器或父窗口的中的控件属性
- 为何包含了<winuser.h>和<windows.h>还是无法声明KBDLLHOOKSTRUCT结构(关于low level Keyboard hook)?谢谢!
- 请问error LNK2001: unresolved external symbol _va_g729a_init_decoder@0这啥问题啊
m_ItemList.SetItemData(i_index,(LPARAM)&item_unit->nameid);
>>
>>看来是设置值的问题,是不是因为你的条目太多,数目太大?我一共加入了1553个字符串,是不是太大了?
>>m_ItemList.SetItemData(i_index,(LPARAM)&item_unit->nameid);这样试过了,好像还是没有效果
不错。你没有用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);
}
}
m_ItemList.SetItemData(i_index,(DWORD)item_unit->nameid);
DWORD dwdata = m_ItemList.GetItemData(i_index);DWORD直接转换成int,不知道是不是丢失数据了
改用其他方法
多谢各位热心帮助和解答