具有UINT32值的CListCtrl SetItemData

时间:2012-12-10 21:30:50

标签: mfc clistctrl

我有一个CListCtrl并且我想存储一个UINT32值,但是当我用GetItemData

读取时它总是返回0

我有这段代码:

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,我也会得到相同的结果。

1 个答案:

答案 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);
    }
}