如题
解决方案 »
- 关于编写服务程序的问题
- 怎样才算后台运行的程序
- 如何统计应用程序使用的栈的大小?
- 请教:VC编译选项里面如何增加 win32 unicode release项?
- 我被VC活虐,谁拉我一把?
- 一个简单的问题
- 请问怎样使用glut?
- unresolved external symbol "public: static void (__cdecl* CAT_TAPI::Line_msg_fun)(void)"
- MFC的小問題,麻煩大蝦幫忙。
- 绝对菜问题:如果控制Silder控件的最大值、最小值和接受它的数值改变事件??
- 我的BoundChecker怎么检查不到简单的内存泄漏?
- 如何用API将系统的Hibernation功能Enable?
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
}
}msdn上的例子,参考一下吧,获得多个选中的
==GetSelectedCount()
==有两个办法。
一是用GetFirstSelectedItemPosition()和GetNextSelectedItem()两个函数配对,如一楼所例
二是用GetNextItem函数循环。
int nIdx = m_List.GetNextItem(-1,LVNI_SELECTED);
while(nIdx != -1)
{
//nIdx为选中行索引
...
//继续搜索
nIdx = m_List.GetNextItem(nIdx,LVNI_SELECTED);
}
for(int i=0;i<currentItemNum;i++)
{
LV_ITEM lvi;
lvi.mask=LVIF_STATE;
lvi.iItem=i;
lvi.stateMask=0xFFFF;
ListView_GetItem(m_hWnd,&lvi);
DWORD ws = GetWindowLong(m_hWnd, GWL_STYLE);
BOOL bSelected= (lvi.state & LVIS_SELECTED) || (lvi.state & LVIS_DROPHILITED); if(bSelected)
{
CString strIndex;
strIndex.Format(_T("Index = %d"),i);
AfxMessageBox(strIndex);
}
}
int nIdx = m_List.GetNextItem(-1,LVNI_SELECTED);
while(nIdx != -1)
{
//nIdx为选中行索引
m_List.DeleteItem(nIdx);
//继续搜索
nIdx = m_List.GetNextItem(nIdx-1,LVNI_SELECTED);
}
只需要将GetNextItem从nIdx改为nIdx-1即可