![CListCtrl使用技巧大全讲课讲稿_第1页](http://file2.renrendoc.com/fileroot_temp3/2021-6/5/de036963-571a-4c8a-a6ed-98610fddf6a1/de036963-571a-4c8a-a6ed-98610fddf6a11.gif)
![CListCtrl使用技巧大全讲课讲稿_第2页](http://file2.renrendoc.com/fileroot_temp3/2021-6/5/de036963-571a-4c8a-a6ed-98610fddf6a1/de036963-571a-4c8a-a6ed-98610fddf6a12.gif)
![CListCtrl使用技巧大全讲课讲稿_第3页](http://file2.renrendoc.com/fileroot_temp3/2021-6/5/de036963-571a-4c8a-a6ed-98610fddf6a1/de036963-571a-4c8a-a6ed-98610fddf6a13.gif)
![CListCtrl使用技巧大全讲课讲稿_第4页](http://file2.renrendoc.com/fileroot_temp3/2021-6/5/de036963-571a-4c8a-a6ed-98610fddf6a1/de036963-571a-4c8a-a6ed-98610fddf6a14.gif)
![CListCtrl使用技巧大全讲课讲稿_第5页](http://file2.renrendoc.com/fileroot_temp3/2021-6/5/de036963-571a-4c8a-a6ed-98610fddf6a1/de036963-571a-4c8a-a6ed-98610fddf6a15.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、CLi s t Ct r l 使 用 技 巧大全CListCtrl 使用技巧1. CListCtrl 风格 32. 设置listctrl风格及扩展风格 33. 插入数据44. 一直选中 item 45. 选中和取消选中一行 56. 得至U listctrl中所有行的 checkbox的状态 57. 得到listctrl中所有选中行的序号68. 得到item的信息 79. 得到listctrl的所有列的 header字符串内容 810. 使listctrl中一项可见,即滚动滚动条 811. 得到 listctrl 列数812. 删除所有列913. 得到单击的listctrl的行列号 914. 判
2、断是否点击在 listctrl的 checkbox 上 1115. 右键点击listctrl的item弹出菜单 1216. item切换焦点时(包括用键盘和鼠标切换item时),状态的一些变化顺序 1317. 得到另一个进程里的 listctrl控件的item内容1518. 选中 listview 中的 item 1519. 如何在 CListView中使用CListCtrl的派生类 1520. listctrl 的 subitem 添加图标 1521. 在CListCtrl显示文件,并根据文件类型来显示图标 1622. listctrl内容进行大数据量更新时,避免闪烁2123. listct
3、rl 排序2124. 在listctrl中选中某个item时动态改变其icon或bitmap2125. 在添加item后,再InsertColumn()后导致整列数据移动的问题 2226. 关于listctrl第一列始终居左的问题 2227. 锁定 column header 的拖动2228. 女M可隐藏 clistctrl 的列 2229. listctrl进行大数据量操作时,使用virtual list2330. 关于item只能显示 259个字符的问题 2331. 响应在listctrl的column header上的鼠标右键单击 2332. 类似于 windows 资源管理器的 lis
4、tview 2333. 在ListCtrl中On Timer只响应两次的问题 2434. 以下为一些为实现各种自定义功能的listctrl派生类 24以下未经说明,listctrl 默认view风格为report1. CListCtrl 风格LVS_ICON:为每个item显示大图标LVS_SMALLICON为每个item显示小图标LVS_LIST:显示一列带有小图标的itemLVS_REPORT显示item详细资料直观的理解:win dows资源管理器,“查看”标签下的“大图标, 小图标,列表,详细资料”2. 设置listctrl风格及扩展风格LONG lStyle;lStyle = Get
5、Wi ndowLo ng(mist.m_hWnd, GWL_STYLE);获取当前窗口 stylelStyle &= LVS_TYPEMASK; / 清除显示方式位lStyle |= LVS_REPORT; / 设置 styleSetWi ndowLo ng(mist.m_hWnd, GWL_STYLE, lStyle);/ 设置 styleDWORD dwStyle = m_list.GetExte ndedStyle();dwStyle |= LVS_EX_FULLROWSELECT;/选中某行使整行高亮(只适 用与report 风格的listctrl )dwStyle |= LVS_EX
6、_GRIDLINES; 网格线(只适用与 report 风格 的 listctrl )dwStyle |= LVS_EX_CHECKBOXES;/item 前生成 checkbox 控件mist.SetExte ndedStyle(dwStyle); /设置扩展风格注:listview 的 style 请查阅 msdnhttp:/msd /en-us/wceshellui5/html/wce50lrflistviewstyles.asp3. 插入数据mist.l nsertColu mn( 0, ID, LVCFMT_LEFT, 40 );/插入列m_l ist.l nsertColum n(
7、 1, NAME, LVCFMT_LEFT, 50 );int nRow = m_list.Insertltem(0,“ 11”);/ 插入行mist.SetltemText(nRow, 1,“jacky ”);/ 设置数据4. 一直选中item选中style 中的Show selection always ,或者在上面第 2点中设置LVS_SHOWSELALWAYS5. 选中和取消选中一行int nln dex = 0;/选中m_list.SetltemState( nln dex, LVIS_SELECTED|LVIS_FOCUSED, LVIS_SELECTED|LVIS_FOCUSED
8、);/取消选中m_list.SetltemState( nln dex, 0, LVIS_SELECTED|LVIS_FOCUSED);6. 得到listctrl中所有行的 checkbox的状态mist.SetExte ndedStyle(LVS_EX_CHECKBOXES);CStri ng str;for(int i=0; im_list.GetltemCount(); i+)if( m_list.GetItemState(i, LVIS_SELECTED)=LVIS_SELECTED | mist.GetCheck(i)str.Format(_T(第(:行的 checkbox 为选 中
9、状态),i);AfxMessageBox(str);7. 得到 listctrl 中所有选中行的序号方法一:CString str;for(int i=0; iGetltemCou nt();12. 删除所有列方法一:while ( m_list.DeleteColu mn (0)因为你删除了第一列后,后面的列会依次向上移动 方法二:int n Colu mns = 4;for (int i=nColumns-1; i=0; i-)m_list.DeleteColumn (i);13. 得到单击的listctrl的行列号添加listctrl 控件的NM_CLIC消息相应函数void CTest
10、6Dlg:O nClickList1(NMHDR* pNMHDR, LRESULT* pResult)/ 方法一:/*DWORD dwPos = GetMessagePos();CPoi nt poi nt( LOWORD(dwPos), HIWORD(dwPos);mist.Scree nToClie nt( &poi nt);LVHITTESTINFO lvinfo;lvinfo.pt = point;lvinfo.flags = LVHT_ABOVE;int nItem = m_list.SubItemHitTest(&lvinfo);if(nItem != -1)CString str
11、temp;strtemp.Format(” 单击的是第c行第d列, lvinfo.iItem, lvinfo.iSubItem);AfxMessageBox(strtemp);*/ 方法二 :/*NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR; if(pNMListView-iItem != -1)CString strtemp;strtemp.Format( 单击的是第c行第d列,pNMLis tView-iItem, pNMListView-iSubItem);AfxMessageBox(strtemp);*/*pResult = 0;14.
12、 判断是否点击在 listctrl的checkbox上添加listctrl 控件的NM_CLIC消息相应函数void CTest6Dlg:O nClickList1(NMHDR* pNMHDR, LRESULT* pResult)DWORD dwPos = GetMessagePos();CPoi nt poi nt( LOWORD(dwPos), HIWORD(dwPos);mist.Scree nToClie nt( &poi nt);LVHITTESTINFO lvi nfo;Ivin fo.pt = point;lvi nfo.flags = LVHT_ABOVE;UINT nF la
13、g;int nItem = m_list.HitTest(point, &nFlag);/判断是否点在checkbox上if(nF lag = LVHT_ONITEMSTATEICON)AfxMessageBox(点在 listctrl 的checkbox 上);*pResult = 0;15. 右键点击listctrl的item弹出菜单添加listctrl 控件的NM_RCLIC消息相应函数void CTest6Dlg:O nRclickList1(NMHDR* pNMHDR, LRESULT* pResult)NM_LISTVIEW* pNMListView = (NM_LISTVIEW*
14、)pNMHDR;if(pNMListView-iltem != -1)DWORD dwPos = GetMessagePos();CPoi nt poi nt( LOWORD(dwPos), HIWORD(dwPos);CMenu menu;VERIFY( menu.LoadMenu( IDR_MENU1 );CMenu* popup = me nu.GetSubMe nu(0);ASSERT( popup != NULL );popup-TrackPopupMe nu (TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y, this );*pR
15、esult = 0;16. item切换焦点时(包括用键盘和鼠标切 换item时),状态的一些变化顺序添加listctrl 控件的LVN_ITEMCHANG消息相应函数void CTest6Dlg:O nl temcha ngedList1(NMHDR* pNMHDR, LRESULT* pResult)NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;/ TODO: Add your con trol no tificati on han dlercode hereCStri ng sTemp;if(pNMListView-uOldState &
16、 LVIS_FOCUSED)=LVIS_FOCUSED &(pNMListView-uNewState & LVIS_FOCUSED) = 0)sTemp.Format(%d lostedfocus,pNMListView-iltem);else if(pNMListView-uOldState & LVIS_FOCUSED)= 0 &(pNMListView-uNewState & LVIS_FOCUSED) = LVIS_FOCUSED)sTemp.Format(%d got focus,pNMListView-iItem);if(pNMListView-uOldState & LVIS_
17、SELECTED) = LVIS_SELECTED &(pNMListView-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. 得到另一个
18、进程里的listctrl控件的item内容http:/www.codeproject.eom/threads/int64 memsteal.asp18. 选中 listview 中的 itemQ131284: How To Select a Listview Item Programmaticallyhttp:/support.microsoft.eom/kb/131284/e n-us19. 如何在 CListView中使用 CListCtrl的派 生类 ntrols/listview/i ntroductio n/article.php/c919/20. listctrl 的 subite
19、m 添加图标mist.SetExte ndedStyle(LVS_EX_SUBITEMIMAGES);mist.SetItem(.); /具体参数请参考 msdn21. 在CListCtrl显示文件,并根据文件类型 来显示图标网上找到的代码,shareBOOL CTest6Dlg:O nlni tDialog()CDialog:O nlni tDialog();HIMAGELIST himlSmall;HIMAGELIST himlLarge;SHFILEINFO sfi;char cSysDirMAX_PATH;CStri ng strBuf;memset(cSysDir, 0, MAX_P
20、ATH);GetWi ndowsDirectory(cSysDir, MAX_PATH);strBuf = cSysDir;spri ntf(cSysDir, %s,strBuf.Left(strBuf.Fi nd( )+1 );himlSmall = (HIMAGELIST)SHGetFileI nfo(LPCSTR)cSysDir,&sfi, sizeof(SHFILEINFO),SHGFI_SYSICONINDEX | SHGFI_SMALLICON );himlLarge =(HIMAGELIST)SHGetFileInfo(LPCSTR)cSysDir,0,&sfi, sizeof(
21、SHFILEINFO), SHGFI_SYSICONINDEX |SHGFI_LARGEICON);if (himlSmall & himlLarge):SendMessage(m_list.m_hWnd,LVM_SETIMAGELIST,(WPARAM)LVSI L_SMALL, (LPARAM)himlSmall);:SendMessage(m_list.m_hWnd,LVM_SETIMAGELIST,(WPARAM)LVSIL_NORMAL, (LPARAM)himlLarge);return TRUE; / return TRUEunless you setthe focus to a
22、 controlvoid CTest6Dlg:AddFiles(LPCTSTR lpszFileName, BOOL bAddToDocument)FALSE);int nIcon = GetIconIndex(lpszFileName, FALSE,CString strSize;CFileFind filefind;/ get file sizeif (filefind.FindFile(lpszFileName)filefind.FindNextFile();strSize.Format(%d,filefind.GetLength();elsestrSize = 0;/ split pa
23、th and filenameCString strFileName = lpszFileName;);CString strPath;int nPos = strFileName.ReverseFind( if (nPos != -1) strPath = strFileName.Left(nPos);strFileName = strFileName.Mid(nPos +1);/ insert to listint nItem = m_list.GetItemCount(); m_list.InsertItem(nItem, strFileName, nIcon); m_list.SetI
24、temText(nItem, 1, strSize);m_list.SetItemText(nItem, 2,strFileName.Right(3);m_list.SetItemText(nItem, 3, strPath);int CTest6Dlg:GetIconIndex(LPCTSTR lpszPath, BOOL bIsDir,BOOL bSelected)SHFILEINFO sfi;memset(&sfi, 0, sizeof(sfi);if (bIsDir)SHGetFileInfo(lpszPath,TORY,SHGFI_SYSICONINDEX |TES |(bSelec
25、ted ? SHGFI_OPENICON : 0);retur nsfi.iIc on;elseSHGetFileInfo (IpszPath,L,SHGFI_SYSICONINDEX |TES | (bSelected ? SHGFI_OPENICON : 0);retur nsfi.iIc on;return-1;FILE_ATTRIBUTE_DIREC&sfi,sizeof(sfi),SHGFI_SMALLICON |SHGFI_USEFILEATTRIBUFILE_ATTRIBUTE_NORMA&sfi,sizeof(sfi),SHGFI_SMALLICON |SHGFI_USEFIL
26、EATTRIBU22. Iistctrl内容进行大数据量更新时,避免 闪烁m_l ist.SetRedraw(FALSE);/更新内容mist.SetRedraw(TRUE);mist.l nvalidate();m_l ist.UpdateWi ndow();http:/msd n- us/vclib/html/mfccw nd.3a3a.setredraw.asp23. listctrl 排序Q250614 How To Sort Items in a CListCtrl in Report Viewhttp:/support.microsoft.eom/kb/250614/e n-us2
27、4.在listctrl中选中某个item时动态改变CListCtrlitem in其 icon 或 bitmapQ141834: How to cha nge the icon or the bitmap of a Visual C+ http:/support.microsoft.eom/kb/141834/e n-us25. 在添加 item 后,再 InsertColumn()后导 致整列数据移动的问题Q151897: CListCtrl :I nsertColu mn() Causes Colum n Data to Shifthttp:/support.microsoft.eom/k
28、b/151897/e n-us26. 关于listctrl第一列始终居左的问题解决办法:把第一列当一个虚列,从第二列开始插入列及数据,最后删除第 列。具体解释参阅http:/msd n. n-us/shellcc/platform/commctls/listview/structures/lvcolu mn .asp27. 锁定 column header 的拖动 nm ag/issues/03/06/CQA/28. 如何隐藏clistctrl的列把需隐藏的列的宽度设为0,然后检测当该列为隐藏列时,用上面第 27 点的锁定column的拖动来实现29. listctrl进行大数据量操作时,使用
29、virtual list ntrols/listview/adva nced/article.php/c4151/30. 关于item只能显示259个字符的问题解决办法:需要在item上放一个edit。31. 响应在 listctrl 的 column header 上的鼠标右键单击Q125694: How To Find Out Which Listview Colum n Was Right-Clickedhttp:/support.microsoft.eom/kb/125694/e n-us32. 类似于windows资源管理器的listviewQ234310: How to imple
30、ment a ListView control that is similar toWin dows Explorer by using DirLV.exehttp:/support.microsoft.eom/kb/234310/e n-us33. 在ListCtrl中On Timer只响应两次的问 题Q200054PRB: OnTimer() Is Not Called Repeatedly for a List Controlhttp:/support.microsoft.eom/kb/200054/e n-us34. 以下为一些为实现各种自定义功能的listctrl派生类(1)拖放tr
31、l/dragtest.asp在 CListCtrl 和 CTreeCtrl 间拖放148738/e n-us(2)多功能listctrl支持subitem可编辑,图标,radiobutt on ,checkbox,字符串改变颜色的类trl/quicklist.asp支持排序,subitem可编辑,subitem 图标,subitem 改变颜色的类trl/ReportCo ntrol.asp(3)subitem中显示超链接trl/CListCtrlLi nk.asp(4)subitem的tooltip 提示trl/ctooltiplistctrl.asp(5)subitem中显示进度条trl/ProgressListCo ntrol.asptrl/n apster.asprols/
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年茂名货运从业资格证考试一共多少题
- 疾控中心报废物品回收处置协议书(2篇)
- 2024-2025学年四年级语文上册第七单元25倔强的小红军作业设计无答案语文S版
- 2025年黑龙江省建筑安全员《C证》考试题库及答案
- 湘教版数学八年级上册《4.3 一元一次不等式的解法》听评课记录2
- 初二班主任学期总结
- 项目工程师个人工作总结
- 委托放贷款协议
- 驻场兽医聘用协议书范本
- 小吃店合伙协议书范本
- 美丽的大自然(教案)2023-2024学年美术一年级下册
- 2024年低压电工考试题库(试题含答案)
- 成都特色民俗课件
- 花城版音乐四下-第四课-认知音乐节奏(教案)
- 宠物医院员工手册
- 2024年高考英语读后续写高分宝典专题08读后续写肢体动作描写积累1(词-句-文)讲义
- 商业与公积金贷款政策
- 时政述评培训课件
- 2022届高三体育特长生家长会
- 不对外供货协议
- 2024届高考作文主题训练:时评类(含解析)
评论
0/150
提交评论