mfc获取CListCtrl控件的选中表头和内容

15 篇文章 1 订阅
3 篇文章 1 订阅

1.获取表头

CString strNitemContent;
	CString strColumnName;
	int n=listCtrl.GetHeaderCtrl()->GetItemCount();
	if(bNeedHead)
	{
		CHeaderCtrl* pHead = listCtrl.GetHeaderCtrl();//其中m_list为CListCtrl列表控件
		HDITEM   hdi;  
		TCHAR     lpBuffer[256];  
		LPCTSTR   lpszmyString; 
		hdi.mask   =   HDI_TEXT;  
		hdi.pszText   =   lpBuffer;  
		hdi.cchTextMax   =   256; 
		for (int i=0;i<n;i++)
		{
			pHead->GetItem( i, &hdi );
			strColumnName += hdi.pszText; //其中strColumnName 为index=0 即第1列的列名
			strColumnName+="\t";			
		}
		strNitemContent+=strColumnName;
		strNitemContent+="\n";
	}

2.获取内容

//获得列名

int nSelect=m_listCtrl.GetSelectedCount();
{
	if(nSelect==1)
	{
		int nCount=m_listCtrl.GetSelectionMark();//得到单选的行号
	}
	if(nSelect>1)
	{
		CString str;
		POSITION pos=m_listCtrl.GetFirstSelectedItemPosition(); //pos选中的首行位置
		while(pos)   //如果你选择多行
		{
			int nIdx=-1;
			nIdx= m_listCtrl.GetNextSelectedItem(pos);
			if(nIdx >=0&&nIdx<m_listCtrl.GetItemCount())
			{	
				for (int i=0;i<n;i++)
				{
					str +=m_listCtrl.GetItemText(nIdx,i);
					str+="\t";
				}
				str+="\n";
			}
		}
		strNitemContent+=str;
		
	}
	
}



MFC CListCtrl控件可以响应多种事件,以下是常见的事件及其处理函数: 1. LVN_ITEMCHANGED:当列表项的选中状态改变时触发。可以使用以下代码处理: ``` void CMyDialog::OnItemChangedListCtrl(NMHDR* pNMHDR, LRESULT* pResult) { NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR; if ((pNMListView->uChanged & LVIF_STATE) && (pNMListView->uNewState & LVIS_SELECTED)) { // 处理选中项改变事件 } *pResult = 0; } ``` 2. LVN_COLUMNCLICK:当列表头的某一列被单击时触发。可以使用以下代码处理: ``` void CMyDialog::OnColumnClickListCtrl(NMHDR* pNMHDR, LRESULT* pResult) { NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR; int nColumn = pNMListView->iSubItem; // 处理列单击事件 *pResult = 0; } ``` 3. LVN_BEGINLABELEDIT:当用户开始编辑某一项时触发。可以使用以下代码处理: ``` void CMyDialog::OnBeginLabelEditListCtrl(NMHDR* pNMHDR, LRESULT* pResult) { LV_DISPINFO* pLvdi = (LV_DISPINFO*)pNMHDR; LVITEM* pItem = &(pLvdi->item); *pResult = FALSE; // 设置为TRUE表示禁止编辑 } ``` 4. LVN_ENDLABELEDIT:当用户完成编辑某一项时触发。可以使用以下代码处理: ``` void CMyDialog::OnEndLabelEditListCtrl(NMHDR* pNMHDR, LRESULT* pResult) { LV_DISPINFO* pLvdi = (LV_DISPINFO*)pNMHDR; LVITEM* pItem = &(pLvdi->item); // 处理编辑完成事件 *pResult = 0; } ``` 5. LVN_ITEMACTIVATE:当用户双击某一项或按下回车键时触发。可以使用以下代码处理: ``` void CMyDialog::OnItemActivateListCtrl(NMHDR* pNMHDR, LRESULT* pResult) { NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR; // 处理项激活事件 *pResult = 0; } ``` 6. LVN_GETDISPINFO:当控件需要获取某一项的信息时触发。可以使用以下代码处理: ``` void CMyDialog::OnGetDispInfoListCtrl(NMHDR* pNMHDR, LRESULT* pResult) { NMLVDISPINFO* pDispInfo = reinterpret_cast<NMLVDISPINFO*>(pNMHDR); LVITEM& lvItem = pDispInfo->item; // 设置项的信息 *pResult = 0; } ``` 7. LVN_DELETEITEM:当某一项被删除时触发。可以使用以下代码处理: ``` void CMyDialog::OnDeleteItemListCtrl(NMHDR* pNMHDR, LRESULT* pResult) { NMLISTVIEW* pNMLV = reinterpret_cast<NMLISTVIEW*>(pNMHDR); // 处理删除项事件 *pResult = 0; } ``` 以上是常见的事件及其处理函数,开发者可以根据实际需求选择相应的事件进行处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值