0

我有一个CListCtrl并且我想存储一个 UINT32 值,但是当我阅读时它总是返回 0GetItemData

我有这个代码:

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

4

1 回答 1

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);
    }
}
于 2012-12-10T21:52:27.220 回答