我有一个CListCtrl
并且我想存储一个UINT32值,但是当我用GetItemData
我有这段代码:
UINT CMyDialog::MyThread(LPVOID pArg)
for (int nItem=0; nItem<50; nItem++)
{
UINT32 nNum=100;
pDlg->m_listCtrl.InsertItem(0, _T("text")); // this works
pDlg->m_listCtrl.SetItemData(nItem, nNum); // this not
}
}
/// this is called from a Dialog member function when a button is pressed
void CMyDialog::OnBtnClicked()
{
UINT32 nRead=0;
nRead=m_listCtrl.GetItemData(5);
// nRead always returns 0
}
即使我使用int或DWORD而不是UINT,我也会得到相同的结果。
答案 0 :(得分:4)
请小心发布您的代码。这是所以使用剪切和粘贴简单,没有理由在错误后发生错误。由于你不接受很多答案,所以很难帮助你而且几乎不值得。
无论如何,我确实发现你的循环有问题。您应该使用InsertItem()
的返回值,如下所示:
UINT CMyDialog::MyThread(LPVOID pArg)
{
for (int nItem=0; nItem<50; nItem++)
{
UINT32 nNum=100;
int nIndex = pDlg->m_listCtrl.InsertItem(0, _T("text"));
pDlg->m_listCtrl.SetItemData(nIndex, nNum);
}
}