一个关于GetItemData(nItem)的问题?

suguanqun 2004-07-26 10:32:08
listview中目前有5个元素:那么nItem的值应该为:0 1 2 3 4. 我在初始化时给每个元素赋值(ItemData),1 2 3 4 5。
int i= m_listctrldv.SubItemHitTest(&info);
int j=m_listview.GetItemData(i);

一般每个“j”都可以正常获得初始化时附的值,删除其中任一项时也可以正常获得其他项的"j"值,但是就是在删除一项,再增加一项,获得新增加项的“j”时,无法正确得到,而是得到0。如果不删除项再增加时就没问题。

例如,我删除了第5项,又增加了一项,给它的ItemData附值为“6”,可是当我点击,新增加项时,int j=m_listview.GetItemData(i);其中i=4(实际上是第5项);可是j却为“0”。正常应为“6”。
这是为什么,是哪里有错误那?大家帮着看看,提供个思路也好!




...全文
891 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Phourm 2004-07-30
  • 打赏
  • 举报
回复
例如,我删除了第5项,又增加了一项,给它的ItemData附值为“6”,可是当我点击,新增加项时,int j=m_listview.GetItemData(i);其中i=4(实际上是第5项);可是j却为“0”。正常应为“6”。


添加一行的时候有没有SetItemData?
mfmmfc 2004-07-26
  • 打赏
  • 举报
回复
我想阁下有点误解,GetItemData得到的并不是当前item的序号,而是与这个item相关联的一个属性值,你也可以把它设为一个句柄值或地址值
月光莫利亚 2004-07-26
  • 打赏
  • 举报
回复
GetItemData()和SetItemData()都是常用的函数,应该不会有什么错的,建议你新建一个小程序,单独试验这连个函数,一面受其它影响。
名牌大灰狼 2004-07-26
  • 打赏
  • 举报
回复
void CMyFormView::OnSelchangedTree(NMHDR pNMHDR, LRESULT pResult)
{
HTREEITEM SelItem;
MyStructure ItemData; //MyStructure为用户定义的结构类型
SelItem=m_MyTree.GetSelectedItem ();
ItemData=GetItemData(SelItem);
//获得该节点的数据指针
Switch (ItemData-〉value1)
{
case 0:{……}
//用户指定的操作
case 1:{……}
……
}
名牌大灰狼 2004-07-26
  • 打赏
  • 举报
回复
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/wcemfc/htm/clistctr_27.asp
bestbear 2004-07-26
  • 打赏
  • 举报
回复
对头,是那么回事情

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧