2012-12-10 31 views
0

我有一個CListCtrl,我想存儲UINT32值,但它總是返回0,當我和GetItemData的CListCtrl SetItemData與UINT32值

閱讀我有這樣的代碼:

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

請張貼更多的代碼,因爲我知道這個工作的 - 從來就使用它。很多現有的代碼都沒有意義。例如:'m_ListCtrl = GetItemData(nItem)',你怎樣才能給控件分配一個整數? (並開始接受更多的答案,如果你需要幫助。) –

+0

這是它在我的代碼看起來如何 –

+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); 
    } 
} 
+0

謝謝!這是問題:) –