常用操作: 1、添加列標(biāo)題頭:InsertColumn 2、獲取與設(shè)置列寬:GetColumnWidth、SetColumnWidth 3、添加一行:InsertItem、SetItemText 4、獲取與設(shè)置單元文本:GetItemText、SetItemText 5、允許多行選中時(shí),獲取選中的行數(shù):GetSelectedCount 6、單行選中時(shí),獲取選中的行:GetSelectionMark 7、選中某行:SetItemState(n, LVIS_SELECTED, LVIS_SELECTED);取消選中的行SetItemState(n,0,-1);使用此函數(shù)前需要先調(diào)用SetFocus(); 8、獲取某行的狀態(tài)是否為選中:GetItemState(n, LVIS_SELECTED) == LVIS_SELECTED 9、刪除所有行:DeleteAllItems 10、刪除指定列:DeleteColumn 11、刪除指定行:DeleteItem 12、獲取與設(shè)置列表控件的背景色:GetBkColor、SetBkColor 13、獲取與設(shè)置文字背景色:GetTextBkColor、SetTextBkColor 14、獲取與設(shè)置文字前景色:GetTextColor、SetTextColor 15、獲取與設(shè)置Check:GetCheck、SetCheck,使用前需要設(shè)置控件屬性SetExtendedStyle(LVS_EX_CHECKBOXES);使控件有勾選功能 16、獲取與設(shè)置圖標(biāo)列表:GetImageList、SetImageList 17、獲取與設(shè)置行附加數(shù)據(jù):GetItemData、SetItemData 18、獲取與設(shè)置擴(kuò)展風(fēng)格樣式:GetExtendedStyle、SetExtendedStyle 19、設(shè)置正行選中與網(wǎng)格線:SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES); 20、讓ListCtrl支持編輯的功能: ①、將屬性中的 Edit Labels 設(shè)置為 True; ②、響應(yīng)控件的 LVN_EDNLABELEDIT 消息,添加如下代碼: CString strText; m_ListCtrl.GetEditControl()->GetWindowText(strText); m_ListCtrl.SetItemText(pDispInfo->item.iItem, pDispInfo->item.iSubItem, strText);
21、多行可選時(shí),跳到第一個(gè)被選中的行,即使第一個(gè)被選中的行可視。
POSITION pos = pView->GetListCtrl().GetFirstSelectedItemPosition(); int nFirstSel = pView->GetListCtrl().GetNextSelectedItem(pos); if (nFirstSel != -1) { pView->GetListCtrl().EnsureVisible(nFirstSel,FALSE); }
列表中添加圖標(biāo)代碼:
UINT nIconID[] = {IDI_ICON1,IDI_ICON2,IDI_ICON3,IDI_ICON4,IDI_ICON5};//圖標(biāo)ID m_ImageList.Create(16,16,ILC_COLOR24,sizeof(nIconID)/sizeof(UINT),0);//初始化CImageList類(lèi),sizeof(nIconID)/sizeof(UINT)為圖標(biāo)個(gè)數(shù),后面的0表示CImageList在sizeof(nIconID)/sizeof(UINT)個(gè)圖標(biāo)個(gè)數(shù)的基礎(chǔ)上可再添加多少個(gè)圖標(biāo)。 m_ImageList.SetBkColor(RGB(255,255,255));//設(shè)置背景色為白色 for(int i = 0; i < sizeof(nIconID)/sizeof(UINT); i++) { m_ImageList.Add(AfxGetApp()->LoadIcon(nIconID[i]));//將圖標(biāo)添加到CImageList } m_ListCtrl.SetImageList(&m_ImageList,LVSIL_SMALL);//設(shè)置列表控件顯示圖標(biāo)
m_ListCtrl.InsertColumn(0,_T("第1列"),0,100); m_ListCtrl.InsertColumn(1,_T("第2列"),0,100); m_ListCtrl.InsertColumn(2,_T("第3列"),0,100); m_ListCtrl.InsertItem(0,_T("數(shù)據(jù)1"),0);//后面的0表示添加CImageList中的第0個(gè)圖標(biāo) m_ListCtrl.InsertItem(1,_T("數(shù)據(jù)2"),1);//后面的1表示添加CImageList中的第1個(gè)圖標(biāo) m_ListCtrl.InsertItem(2,_T("數(shù)據(jù)3"),2); m_ListCtrl.SetItemText(0,1,_T("01")); m_ListCtrl.SetExtendedStyle(LVS_EX_CHECKBOXES);//設(shè)置控件有勾選功能 DWORD dwStyle = m_ListCtrl.GetExtendedStyle(); m_ListCtrl.SetExtendedStyle(dwStyle|LVS_EX_FULLROWSELECT);設(shè)置控件選中行的功能

遍歷文件夾并顯示文件名與圖標(biāo):
CFileFind fileFind; CString szDir("D:\\Tools"); BOOL bRet = fileFind.FindFile(szDir+"\\*.*"); while(bRet) { bRet = fileFind.FindNextFile(); if(fileFind.IsDots()) continue; if(!fileFind.IsDirectory()) { SHFILEINFO shfi; SHGetFileInfo(fileFind.GetFilePath(),FILE_ATTRIBUTE_NORMAL,&shfi,sizeof(shfi),SHGFI_ICON|SHGFI_USEFILEATTRIBUTES|SHGFI_TYPENAME); int nImageID = m_ImageList.Add(shfi.hIcon); m_ListCtrl.InsertItem(m_ListCtrl.GetItemCount(),fileFind.GetFileName(),nImageID); } }

復(fù)制列表內(nèi)容
void CXXXView::OnCopydataToClipboard() { int nSelectCount = GetListCtrl().GetSelectedCount(); int nSelect = -1; CString strData = _T(""); for (int i = 0; i < nSelectCount; i++) { //找到選擇的行號(hào) nSelect = GetListCtrl().GetNextItem(nSelect,LVNI_ALL | LVNI_SELECTED); //列數(shù) int nColumnCount = GetListCtrl().GetHeaderCtrl()->GetItemCount(); for (int j = 0; j < nColumnCount; j++) { CString text; text = GetListCtrl().GetItemText(nSelect,j); if (j != 0) strData += "\t"; strData += text; } //用\r\n來(lái)控制回車(chē)和換行 if (i != nSelectCount - 1) strData += "\r\n"; } //復(fù)制到剪貼板 HGLOBAL clipbordBuf = GlobalAlloc(GMEM_DDESHARE,2*(strData.GetLength() + 1)); TCHAR *pBuf = (TCHAR*)GlobalLock(clipbordBuf); lstrcpy((LPTSTR)pBuf,(LPCTSTR)strData); GlobalUnlock(clipbordBuf);
OpenClipboard(); EmptyClipboard(); SetClipboardData(CF_TEXT,pBuf); CloseClipboard(); }
在非第一列中添加圖標(biāo)
m_List.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES|LVS_EX_SUBITEMIMAGES);
m_List.SetItem(0,1,LVIF_TEXT|LVIF_IMAGE,“aaa”,0,0,0,0);//在第一行第二列加入第1個(gè)圖標(biāo)
m_List.SetItem(i,1,LVIF_TEXT|LVIF_IMAGE,szBuffer,i,0,0,0);

|