VC++如何区分点击的是ListControl的哪个item?

来源:百度知道 编辑:UC知道 时间:2024/05/24 19:15:18
如题

消息处理函数有参数吗?

=======修改答复=======================
晕。。
第一个参数就是点击的item啊,这么一问,难道没人想想?
哎,回去看看通知消息是什么吧。

用以下for循环就可以了:

for(int i=0;i<m_MyList.GetItemCount();i++)
{
if(m_MyList.GetItemState(i,LVIS_SELECTED)==LVIS_SELECTED)
{
.....操作代码
}
}

原理就是对每个item一次检测其状态,如果是LVIS_SELECTED,即被选中,则执行操作代码。
代码中m_MyList是与ListControl关联的CListCtrl 变量。
这段代码对单选和多选均适用

调用CListCtrl的GetSelectionMark就返回选中选的索引值了,返回-1表示没有选中任何项

我比较喜欢用GetFirstSelectedItemPosition,GetNextSelectedItem,,,

POSITION pos = pList->GetFirstSelectedItemPosition();
if (pos == NULL)
TRACE0("No items were selected!\n");
else
{
while (pos)
{
int nItem = pList->GetNextSelectedItem(pos);
TRACE1("Item %d was selected!\n", nItem);
// you could do your own processing on nItem here
}
}

POSITION ps;<