怎么获取选中的ListView中某一行的值,并且得到这一行中一列的内容

时间:2021-07-08 15:03:17
怎么获取选中的ListView中某一行的值,并且得到这一行中一列的内容 怎么获取选中的ListView中某一行的值,并且得到这一行中一列的内容

15 个解决方案

#1


我想获得其中的文件名,请问应该怎么得到,要是选中的不只是一行那要怎么得到所有选中的行的文件名呢

#2


ClistCtrl lv;
int i;

while ((i = lv.GetNextItem(-1, LVNI_ALL|LVNI_SELECTED)) != -1)
{
        lv.GetItemText();
}

#3


获取第三方程序控件中的内容需要在其进程空间中分配内存进行操作。涉及到的 API:
1. 根据窗口句柄获取该窗口的进程 ID:GetWindowThreadProcessId
2. 打开指定 ID 的进程:OpenProcess
3. 在该进程空间分配 / 释放内存:VirtualAllocEx、VirtualFreeEx
4. 读取/写入数据:ReadProcessMemory、WriteProcessMemory
5. ListView 相关消息 / 宏:LVM_GETNEXTITEM (ListView_GetNextItem)、LVM_GETITEMTEXT (ListView_GetItemText)

#4


CListCtrl::GetItemText()

#5


CListCtrl::GetItemText()里面的参数需要知道选中的是第几行,这个怎么知道呢

#6


添加CListCtrl的LVN_ITEMCHANGED消息处理函数,

int  nSelectIndex=m_wndList.GetSelectionMark();//获取选择的行号
CString  strContext=m_wndList.GetItemText(nSelectIndex,nColumn);//nColumn代表你要 获取的列所在的索引(0,1,2,3.。。。)

#7


那要是同时选中多行怎么得到选中行的索引

#8


	CListCtrl& listctrl=GetListCtrl();
int nItem = listctrl.GetSelectionMark();
FILE *pf;

if (nItem != -1)
{
CString sFileName=listctrl.GetItemText(nItem,1);
theApp.m_strPrintFile=sFileName;
return 1;

}else
{
return 0;
}


通过这个得到的GetSelectionMark()返回值都是0,请问这是怎么回事呢

#9


	int nClickIndex = 0;
POSITION pos = m_listCtrlOnline.GetFirstSelectedItemPosition();
nClickIndex = m_listCtrlOnline.GetNextSelectedItem(pos);  
if (nClickIndex>=0)
{
//int ipData = GetItemData(nClickIndex);
//m_IPCtl.SetAddress(ipData);
                //GetItemText
}

#10


引用 9 楼 arpnet99 的回复:
	int nClickIndex = 0;
POSITION pos = m_listCtrlOnline.GetFirstSelectedItemPosition();
nClickIndex = m_listCtrlOnline.GetNextSelectedItem(pos);  
if (nClickIndex>=0)
{
//int ipData = GetItemData(nClickIndex);
//m_IPCtl.SetAddress(ipData);
                //GetItemText
}


得到的nClickIndex值还是0.不管选中的是哪一行

#11


nItem = plistctrl.GetNextItem(-1,LVNI_ALL|LVNI_SELECTED))

用这个返回值也都是0,无语了 ……

#12


难道你的列表控件的控制变量没有和控件关联?定义个CListCtrl型变量,用DDX_Control关联一下

#13


我定义了
	CListCtrl& listctrl=GetListCtrl();
int nClickIndex = -1;
POSITION pos = listctrl.GetFirstSelectedItemPosition();
nClickIndex = listctrl.GetNextSelectedItem(pos);  
if (nClickIndex>=0)
{
FILE *pf;
pf=fopen("D:\\filename.txt","a+");
fprintf(pf,"%d  \r\n",nClickIndex);
fclose(pf);
}

#14


但是得到的nClickIndex的值还是0

#15


在 LVN_ITEMCHANGED 里响应。

#1


我想获得其中的文件名,请问应该怎么得到,要是选中的不只是一行那要怎么得到所有选中的行的文件名呢

#2


ClistCtrl lv;
int i;

while ((i = lv.GetNextItem(-1, LVNI_ALL|LVNI_SELECTED)) != -1)
{
        lv.GetItemText();
}

#3


获取第三方程序控件中的内容需要在其进程空间中分配内存进行操作。涉及到的 API:
1. 根据窗口句柄获取该窗口的进程 ID:GetWindowThreadProcessId
2. 打开指定 ID 的进程:OpenProcess
3. 在该进程空间分配 / 释放内存:VirtualAllocEx、VirtualFreeEx
4. 读取/写入数据:ReadProcessMemory、WriteProcessMemory
5. ListView 相关消息 / 宏:LVM_GETNEXTITEM (ListView_GetNextItem)、LVM_GETITEMTEXT (ListView_GetItemText)

#4


CListCtrl::GetItemText()

#5


CListCtrl::GetItemText()里面的参数需要知道选中的是第几行,这个怎么知道呢

#6


添加CListCtrl的LVN_ITEMCHANGED消息处理函数,

int  nSelectIndex=m_wndList.GetSelectionMark();//获取选择的行号
CString  strContext=m_wndList.GetItemText(nSelectIndex,nColumn);//nColumn代表你要 获取的列所在的索引(0,1,2,3.。。。)

#7


那要是同时选中多行怎么得到选中行的索引

#8


	CListCtrl& listctrl=GetListCtrl();
int nItem = listctrl.GetSelectionMark();
FILE *pf;

if (nItem != -1)
{
CString sFileName=listctrl.GetItemText(nItem,1);
theApp.m_strPrintFile=sFileName;
return 1;

}else
{
return 0;
}


通过这个得到的GetSelectionMark()返回值都是0,请问这是怎么回事呢

#9


	int nClickIndex = 0;
POSITION pos = m_listCtrlOnline.GetFirstSelectedItemPosition();
nClickIndex = m_listCtrlOnline.GetNextSelectedItem(pos);  
if (nClickIndex>=0)
{
//int ipData = GetItemData(nClickIndex);
//m_IPCtl.SetAddress(ipData);
                //GetItemText
}

#10


引用 9 楼 arpnet99 的回复:
	int nClickIndex = 0;
POSITION pos = m_listCtrlOnline.GetFirstSelectedItemPosition();
nClickIndex = m_listCtrlOnline.GetNextSelectedItem(pos);  
if (nClickIndex>=0)
{
//int ipData = GetItemData(nClickIndex);
//m_IPCtl.SetAddress(ipData);
                //GetItemText
}


得到的nClickIndex值还是0.不管选中的是哪一行

#11


nItem = plistctrl.GetNextItem(-1,LVNI_ALL|LVNI_SELECTED))

用这个返回值也都是0,无语了 ……

#12


难道你的列表控件的控制变量没有和控件关联?定义个CListCtrl型变量,用DDX_Control关联一下

#13


我定义了
	CListCtrl& listctrl=GetListCtrl();
int nClickIndex = -1;
POSITION pos = listctrl.GetFirstSelectedItemPosition();
nClickIndex = listctrl.GetNextSelectedItem(pos);  
if (nClickIndex>=0)
{
FILE *pf;
pf=fopen("D:\\filename.txt","a+");
fprintf(pf,"%d  \r\n",nClickIndex);
fclose(pf);
}

#14


但是得到的nClickIndex的值还是0

#15


在 LVN_ITEMCHANGED 里响应。