具有 UINT32 值的 CListCtrl SetItemData
Posted
技术标签:
【中文标题】具有 UINT32 值的 CListCtrl SetItemData【英文标题】:CListCtrl SetItemData with UINT32 value 【发布时间】:2012-12-10 21:30:50 【问题描述】:我有一个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,我也会得到相同的结果。
【问题讨论】:
请发布更多代码,因为我知道这是可行的——我已经使用过了。而且您现有的许多代码毫无意义。比如:m_ListCtrl=GetItemData(nItem)
,怎么给控件赋值一个整数??? (如果需要帮助,请开始接受更多答案。)
这是我的代码中的样子
我不这么认为。请看我之前的评论
已修复,抱歉,这是帖子中的错字,但代码中没有。
那不应该是nRead = m_ListCtrl.GetItemData(5)
吗?
【参考方案1】:
请更加小心地发布您的代码。 如此使用剪切和粘贴很简单,没有任何借口可以在错误之后犯错。由于您不接受很多答案,因此很难为您提供帮助,也不值得。
无论如何,我确实看到你的循环有问题。您应该像这样使用来自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);
【讨论】:
以上是关于具有 UINT32 值的 CListCtrl SetItemData的主要内容,如果未能解决你的问题,请参考以下文章