2012-12-10 4 views
0

는 내가 CListCtrl이 있고 나는 UINT32 값을 저장하려면,하지만 난 GetItemDataCListCtrl SetItemData는

읽을 때 항상 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 
} 

을 UINT 대신 int 또는 DWORD를 사용합니다. 동일한 결과를 얻습니다.

+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

감사합니다! 그건 문제가 :) –

관련 문제