0

がありCListCtrl、UINT32値を格納したいのですが、で読み取ると常に0が返されます。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
 }

UINTの代わりにintまたはDWORDを使用しても、同じ結果が得られます。

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 に答える