




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、【精品文檔】如有侵權(quán),請聯(lián)系網(wǎng)站刪除,僅供學習與交流CListCtrl使用技巧大全.精品文檔.CListCtrl使用技巧 1. CListCtrl 風格22. 設置listctrl 風格及擴展風格23. 插入數(shù)據(jù)34. 一直選中item35. 選中和取消選中一行36. 得到listctrl中所有行的checkbox的狀態(tài)37. 得到listctrl中所有選中行的序號48. 得到item的信息49. 得到listctrl的所有列的header字符串內(nèi)容510. 使listctrl中一項可見,即滾動滾動條511. 得到listctrl列數(shù)612. 刪除所有列613. 得到單擊的listctrl的行
2、列號614. 判斷是否點擊在listctrl的checkbox上715. 右鍵點擊listctrl的item彈出菜單816. item切換焦點時(包括用鍵盤和鼠標切換item時),狀態(tài)的一些變化順序817. 得到另一個進程里的listctrl控件的item內(nèi)容918. 選中l(wèi)istview中的item1019. 如何在CListView中使用CListCtrl的派生類1020. listctrl的subitem添加圖標1021. 在CListCtrl顯示文件,并根據(jù)文件類型來顯示圖標1022. listctrl內(nèi)容進行大數(shù)據(jù)量更新時,避免閃爍1323. listctrl排序1324. 在lis
3、tctrl中選中某個item時動態(tài)改變其icon或bitmap1425. 在添加item后,再InsertColumn()后導致整列數(shù)據(jù)移動的問題1426. 關(guān)于listctrl第一列始終居左的問題1427. 鎖定column header的拖動1428. 如何隱藏clistctrl的列1529. listctrl進行大數(shù)據(jù)量操作時,使用virtual list1530. 關(guān)于item只能顯示259個字符的問題1531. 響應在listctrl的column header上的鼠標右鍵單擊1532. 類似于windows資源管理器的listview1633. 在ListCtrl中OnTimer只
4、響應兩次的問題1634. 以下為一些為實現(xiàn)各種自定義功能的listctrl派生類16以下未經(jīng)說明,listctrl默認view 風格為report1. CListCtrl 風格 LVS_ICON: 為每個item顯示大圖標 LVS_SMALLICON: 為每個item顯示小圖標 LVS_LIST: 顯示一列帶有小圖標的item LVS_REPORT: 顯示item詳細資料 直觀的理解:windows資源管理器,“查看”標簽下的“大圖標,小圖標,列表,詳細資料”2. 設置listctrl 風格及擴展風格 LONG lStyle; lStyle = GetWindowLong(m_list.m_h
5、Wnd, GWL_STYLE);/獲取當前窗口style lStyle &= LVS_TYPEMASK; /清除顯示方式位 lStyle |= LVS_REPORT; /設置style SetWindowLong(m_list.m_hWnd, GWL_STYLE, lStyle);/設置style DWORD dwStyle = m_list.GetExtendedStyle(); dwStyle |= LVS_EX_FULLROWSELECT;/選中某行使整行高亮(只適用與report風格的listctrl) dwStyle |= LVS_EX_GRIDLINES;/網(wǎng)格線(只適用與repo
6、rt風格的listctrl) dwStyle |= LVS_EX_CHECKBOXES;/item前生成checkbox控件 m_list.SetExtendedStyle(dwStyle); /設置擴展風格 注:listview的style請查閱msdn 3. 插入數(shù)據(jù) m_list.InsertColumn( 0, ID, LVCFMT_LEFT, 40 );/插入列 m_list.InsertColumn( 1, NAME, LVCFMT_LEFT, 50 ); int nRow = m_list.InsertItem(0, “11”);/插入行 m_list.SetItemText(n
7、Row, 1, “jacky”);/設置數(shù)據(jù)4. 一直選中item 選中style中的Show selection always,或者在上面第2點中設置LVS_SHOWSELALWAYS5. 選中和取消選中一行 int nIndex = 0; /選中 m_list.SetItemState(nIndex, LVIS_SELECTED|LVIS_FOCUSED, LVIS_SELECTED|LVIS_FOCUSED); /取消選中 m_list.SetItemState(nIndex, 0, LVIS_SELECTED|LVIS_FOCUSED);6. 得到listctrl中所有行的checkb
8、ox的狀態(tài) m_list.SetExtendedStyle(LVS_EX_CHECKBOXES); CString str; for(int i=0; im_list.GetItemCount(); i+) if( m_list.GetItemState(i, LVIS_SELECTED) = LVIS_SELECTED | m_list.GetCheck(i) str.Format(_T(第%d行的checkbox為選中狀態(tài)), i); AfxMessageBox(str); 7. 得到listctrl中所有選中行的序號 方法一: CString str; for(int i=0; iGet
9、ItemCount();12. 刪除所有列 方法一: while ( m_list.DeleteColumn (0) 因為你刪除了第一列后,后面的列會依次向上移動。 方法二: int nColumns = 4; for (int i=nColumns-1; i=0; i) m_list.DeleteColumn (i);13. 得到單擊的listctrl的行列號 添加listctrl控件的NM_CLICK消息相應函數(shù) void CTest6Dlg:OnClickList1(NMHDR* pNMHDR, LRESULT* pResult) / 方法一: /* DWORD dwPos = GetM
10、essagePos(); CPoint point( LOWORD(dwPos), HIWORD(dwPos) ); m_list.ScreenToClient(&point); LVHITTESTINFO lvinfo; lvinfo.pt = point; lvinfo.flags = LVHT_ABOVE; int nItem = m_list.SubItemHitTest(&lvinfo); if(nItem != -1) CString strtemp; strtemp.Format(單擊的是第%d行第%d列, lvinfo.iItem, lvinfo.iSubItem); AfxM
11、essageBox(strtemp); */ / 方法二: /* NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR; if(pNMListView-iItem != -1) CString strtemp; strtemp.Format(單擊的是第%d行第%d列, pNMListView-iItem, pNMListView-iSubItem); AfxMessageBox(strtemp); */ *pResult = 0; 14. 判斷是否點擊在listctrl的checkbox上 添加listctrl控件的NM_CLICK消息相應函數(shù) voi
12、d CTest6Dlg:OnClickList1(NMHDR* pNMHDR, LRESULT* pResult) DWORD dwPos = GetMessagePos(); CPoint point( LOWORD(dwPos), HIWORD(dwPos) ); m_list.ScreenToClient(&point); LVHITTESTINFO lvinfo; lvinfo.pt = point; lvinfo.flags = LVHT_ABOVE; UINT nFlag; int nItem = m_list.HitTest(point, &nFlag); /判斷是否點在chec
13、kbox上 if(nFlag = LVHT_ONITEMSTATEICON) AfxMessageBox(點在listctrl的checkbox上); *pResult = 0; 15. 右鍵點擊listctrl的item彈出菜單 添加listctrl控件的NM_RCLICK消息相應函數(shù) void CTest6Dlg:OnRclickList1(NMHDR* pNMHDR, LRESULT* pResult) NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR; if(pNMListView-iItem != -1) DWORD dwPos = Ge
14、tMessagePos(); CPoint point( LOWORD(dwPos), HIWORD(dwPos) ); CMenu menu; VERIFY( menu.LoadMenu( IDR_MENU1 ) ); CMenu* popup = menu.GetSubMenu(0); ASSERT( popup != NULL ); popup-TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y, this ); *pResult = 0; 16. item切換焦點時(包括用鍵盤和鼠標切換item時),狀態(tài)的一
15、些變化順序 添加listctrl控件的LVN_ITEMCHANGED消息相應函數(shù) void CTest6Dlg:OnItemchangedList1(NMHDR* pNMHDR, LRESULT* pResult) NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR; / TODO: Add your control notification handler code here CString sTemp; if(pNMListView-uOldState & LVIS_FOCUSED) = LVIS_FOCUSED & (pNMListView-u
16、NewState & LVIS_FOCUSED) = 0) sTemp.Format(%d losted focus,pNMListView-iItem); else if(pNMListView-uOldState & LVIS_FOCUSED) = 0 & (pNMListView-uNewState & LVIS_FOCUSED) = LVIS_FOCUSED) sTemp.Format(%d got focus,pNMListView-iItem); if(pNMListView-uOldState & LVIS_SELECTED) = LVIS_SELECTED & (pNMList
17、View-uNewState & LVIS_SELECTED) = 0) sTemp.Format(%d losted selected,pNMListView-iItem); else if(pNMListView-uOldState & LVIS_SELECTED) = 0 & (pNMListView-uNewState & LVIS_SELECTED) = LVIS_SELECTED) sTemp.Format(%d got selected,pNMListView-iItem); *pResult = 0; 17. 得到另一個進程里的listctrl控件的item內(nèi)容18. 選中l(wèi)i
18、stview中的item Q131284: How To Select a Listview Item Programmatically19. 如何在CListView中使用CListCtrl的派生類20. listctrl的subitem添加圖標 m_list.SetExtendedStyle(LVS_EX_SUBITEMIMAGES); m_list.SetItem(.); /具體參數(shù)請參考msdn21. 在CListCtrl顯示文件,并根據(jù)文件類型來顯示圖標 網(wǎng)上找到的代碼,share BOOL CTest6Dlg:OnInitDialog() CDialog:OnInitDialog(
19、); HIMAGELIST himlSmall; HIMAGELIST himlLarge; SHFILEINFO sfi; char cSysDirMAX_PATH; CString strBuf; memset(cSysDir, 0, MAX_PATH); GetWindowsDirectory(cSysDir, MAX_PATH); strBuf = cSysDir; sprintf(cSysDir, %s, strBuf.Left(strBuf.Find()+1); himlSmall = (HIMAGELIST)SHGetFileInfo (LPCSTR)cSysDir, 0, &s
20、fi, sizeof(SHFILEINFO), SHGFI_SYSICONINDEX | SHGFI_SMALLICON ); himlLarge = (HIMAGELIST)SHGetFileInfo(LPCSTR)cSysDir, 0, &sfi, sizeof(SHFILEINFO), SHGFI_SYSICONINDEX | SHGFI_LARGEICON); if (himlSmall & himlLarge) :SendMessage(m_list.m_hWnd, LVM_SETIMAGELIST, (WPARAM)LVSIL_SMALL, (LPARAM)himlSmall);
21、:SendMessage(m_list.m_hWnd, LVM_SETIMAGELIST, (WPARAM)LVSIL_NORMAL, (LPARAM)himlLarge); return TRUE; / return TRUE unless you set the focus to a control void CTest6Dlg:AddFiles(LPCTSTR lpszFileName, BOOL bAddToDocument) int nIcon = GetIconIndex(lpszFileName, FALSE, FALSE); CString strSize; CFileFind
22、 filefind; / get file size if (filefind.FindFile(lpszFileName) filefind.FindNextFile(); strSize.Format(%d, filefind.GetLength(); else strSize = 0; / split path and filename CString strFileName = lpszFileName; CString strPath; int nPos = strFileName.ReverseFind(); if (nPos != -1) strPath = strFileNam
23、e.Left(nPos); strFileName = strFileName.Mid(nPos + 1); / insert to list int nItem = m_list.GetItemCount(); m_list.InsertItem(nItem, strFileName, nIcon); m_list.SetItemText(nItem, 1, strSize); m_list.SetItemText(nItem, 2, strFileName.Right(3); m_list.SetItemText(nItem, 3, strPath); int CTest6Dlg:GetI
24、conIndex(LPCTSTR lpszPath, BOOL bIsDir, BOOL bSelected) SHFILEINFO sfi; memset(&sfi, 0, sizeof(sfi); if (bIsDir) SHGetFileInfo(lpszPath, FILE_ATTRIBUTE_DIRECTORY, &sfi, sizeof(sfi), SHGFI_SMALLICON | SHGFI_SYSICONINDEX | SHGFI_USEFILEATTRIBUTES |(bSelected ? SHGFI_OPENICON : 0); return sfi.iIcon; el
25、se SHGetFileInfo (lpszPath, FILE_ATTRIBUTE_NORMAL, &sfi, sizeof(sfi), SHGFI_SMALLICON | SHGFI_SYSICONINDEX | SHGFI_USEFILEATTRIBUTES | (bSelected ? SHGFI_OPENICON : 0); return sfi.iIcon; return -1; 22. listctrl內(nèi)容進行大數(shù)據(jù)量更新時,避免閃爍 m_list.SetRedraw(FALSE); /更新內(nèi)容 m_list.SetRedraw(TRUE); m_list.Invalidate(
26、); m_list.UpdateWindow(); 或者參考 23. listctrl排序 Q250614:How To Sort Items in a CListCtrl in Report View24. 在listctrl中選中某個item時動態(tài)改變其icon或bitmapQ141834: How to change the icon or the bitmap of a CListCtrl item in Visual C+25. 在添加item后,再InsertColumn()后導致整列數(shù)據(jù)移動的問題Q151897: CListCtrl:InsertColumn() Causes Column Data to Shift 26. 關(guān)于listctrl第一列始終居左的問題解決辦法:把第一列當一個虛列,從第二列開始插入列及數(shù)據(jù),最后刪除第一列。 具體解釋參閱 27. 鎖定column header的拖動28. 如何隱藏clistctrl的列 把需隱藏的列的寬度設為0,然后檢測當該列為隱藏列時,用上面第27點的鎖定column 的拖動來實現(xiàn)29. listctrl進
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年中國酒杯(酒具)市場運營現(xiàn)狀及投資前景規(guī)劃研究報告
- 2025-2030年中國西樂器制造市場發(fā)展狀況及前景趨勢分析報告
- 岳西事業(yè)編招聘年考試真題及答案解析事業(yè)單位真題
- 長江大學文理學院《區(qū)域分析方法計量地理學》2023-2024學年第二學期期末試卷
- 2025甘肅省建筑安全員《A證》考試題庫及答案
- 常州工程職業(yè)技術(shù)學院《化工環(huán)保與安全概論》2023-2024學年第二學期期末試卷
- 石家莊城市經(jīng)濟職業(yè)學院《第二語言教學法》2023-2024學年第二學期期末試卷
- 湖南安全技術(shù)職業(yè)學院《商業(yè)倫理與會計職業(yè)操守》2023-2024學年第二學期期末試卷
- 汕頭大學《財政與金融》2023-2024學年第二學期期末試卷
- 浙江師范大學行知學院《公共部門績效評估》2023-2024學年第二學期期末試卷
- 2024年湖北省武漢市中考語文試卷
- 二零二五年度高品質(zhì)小區(qū)瀝青路面翻新施工與道路綠化合同2篇
- 2024年形勢與政策復習題庫含答案(綜合題)
- 2022年北京市初三一模語文試題匯編:基礎知識綜合
- 2025年廣東食品藥品職業(yè)學院高職單招高職單招英語2016-2024年參考題庫含答案解析
- 2 爆破工試題及答案
- 電路基礎知到智慧樹章節(jié)測試課后答案2024年秋江西職業(yè)技術(shù)大學
- 盲源信號分離算法研究及應用
- (2024)河南省公務員考試《行測》真題及答案解析
- 河南省鄭州市外國語學校2025屆高考仿真卷英語試題含解析
- 工程項目部安全生產(chǎn)治本攻堅三年行動實施方案
評論
0/150
提交評論