clistctrl用法.doc_第1页
clistctrl用法.doc_第2页
clistctrl用法.doc_第3页
clistctrl用法.doc_第4页
clistctrl用法.doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

原文地址:CListCtrl控件作者:不知道先生通过这片播客,你可以获得一下信息:1. CListCtrl 样式及设置2. 扩展样式设置3. 数据插入4. 一直选中Item5. 选中和取消选中Item6. 得到CListCtrl中所有行的checkbox的状态7. 得到CListCtrl中所有选中行的序号8. 得到item的信息9. 得到CListCtrl的所有列的header字符串内容10. 使CListCtrl中一项可见,即滚动滚动条11. 得到CListCtrl列数12. 删除所有列13. 得到单击的CListCtrl的行列号14. 判断是否点击在CListCtrl的checkbox上15. 右键点击CListCtrl的item弹出菜单16. CListCtrl进行大数据量更新时,避免闪烁!时间仓促,此播客内容大多为网上整理,特向原作者表示感谢!1. CListCtrl 样式及设置LVS_ICON: 每个item显示大图标LVS_SMALLICON: 每个item显示小图标LVS_LIST: 显示一列带有小图标的itemLVS_REPORT: 显示item详细资料如windows资源管理器,“查看”标签下的“大图标,小图标,列表,详细资料”LONG lStyle;lStyle=GetWindowLong(m_ListCtrl.m_hWnd, GWL_STYLE); /获取当前窗口stylelStyle &= LVS_TYPEMASK; /清除显示方式位lStyle |= LVS_REPORT; /设置styleSetWindowLong(m_ListCtrl.m_hWnd, GWL_STYLE, lStyle); /设置style2. 扩展样式设置DWORD dwStyle = m_ListCtrl.GetExtendedStyle();/获取当前扩展样式dwStyle |= LVS_EX_FULLROWSELECT; /选中某行使整行高亮(report风格时)dwStyle |= LVS_EX_GRIDLINES; /网格线(report风格时)dwStyle |= LVS_EX_CHECKBOXES; /item前生成checkbox控件m_ListCtrl.SetExtendedStyle(dwStyle); /设置扩展风格3. 数据插入m_ListCtrl.InsertColumn(0,名称,LVCFMT_LEFT,50); /插入列m_ListCtrl.InsertColumn(1,备注,LVCFMT_LEFT,50);/直接插入:int nRow=m_ListCtrl.InsertItem(0, VC+); /插入行m_ListCtrl.SetItemText(nRow,1,Visual C+ 6.0); /设置数据/LVITEM 结构插入:LVITEM item=0;item.iItem=0; /行号item.mask=LVIF_TEXT; /*LVIF_IMAGE支持图标*/;item.cchTextMax=15;/插入字符串长度item.pszText=Visual C+ 6.0;int nRow=m_ListCtrl.InsertItem(&item);m_ListCtrl.SetItemText(nRow,1,Visual C+ 6.0);4. 一直选中Item选中style中的 Show selection always,或者添加扩展样式 LVS_SHOWSELALWAYS5. 选中和取消选中Itemint nIndex = 0;/选中 m_ListCtrl.SetItemState(nIndex,LVIS_SELECTED| LVIS_FOCUSED,LVIS_SELECTED|LVIS_FOCUSED);/取消选中m_ListCtrl.SetItemState(nIndex,0,LVIS_SELECTED|LVIS_FOCUSED);6. 得到CListCtrl中所有行的checkbox的状态CString str;for(int i=0; im_ListCtrl.GetItemCount(); i+)if(m_ListCtrl.GetItemState(i, LVIS_SELECTED)= LVIS_SELECTED| m_ListCtrl.GetCheck(i)str.Format(_T(第%d行的checkbox为选中状态), i);AfxMessageBox(str);7. 得到CListCtrl中所有选中行的序号/方法一:CString str;for(int i=0; iGetItemCount();12. 删除所有列方法一:while(m_ListCtrl.DeleteColumn(0)/因为你删除了第一列后,后面的列会依次向上移动。方法二:int nColumns = 3; /列数for(int i=nColumns-1; i=0; i-)m_ListCtrl.DeleteColumn(i);13. 得到单击的CListCtrl的行列号添加listctrl控件的NM_CLICK消息相应函数void CMyDlg:OnClickList1(NMHDR* pNMHDR, LRESULT* pResult) /方法一:DWORD dwPos=GetMessagePos();CPoint point( LOWORD(dwPos), HIWORD(dwPos);m_ListCtrl.ScreenToClient(&point);LVHITTESTINFO lvinfo;lvinfo.pt=point;lvinfo.flags=LVHT_ABOVE; int nItem=m_ListCtrl.SubItemHitTest(&lvinfo);if(nItem!=-1)CString strtemp;strtemp.Format(单击的是第%d行第%d列, lvinfo.iItem, lvinfo.iSubItem);AfxMessageBox(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. 判断是否点击在CListCtrl的checkbox上添加listctrl控件的NM_CLICK消息相应函数void CMyDlg:OnClickList1(NMHDR* pNMHDR, LRESULT* pResult) DWORD dwPos=GetMessagePos();CPoint point(LOWORD(dwPos), HIWORD(dwPos);m_ListCtrl.ScreenToClient(&point); LVHITTESTINFO lvinfo;lvinfo.pt=point;lvinfo.flags=LVHT_ABOVE;UINT nFlag;int nItem=m_ListCtrl.HitTest(point, &nFlag);/判断是否点在checkbox上if(nFlag=LVHT_ONITEMSTATEICON)AfxMessageBox(点在listctrl的checkbox上);*pResult = 0;15. 右键点击CListCtrl的item弹出菜单添加CListCtrl控件的NM_RCLICK消息相应函数void CMyDlg:OnRclickList1(NMHDR* pNMHDR, LRESULT* pResult)NM_LISTVIEW* pNMListView=(NM_LISTVIEW*)pNMHDR;if(pNMListView-iItem!=-1) DWORD dwPos = GetMessagePos();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. CListCtrl进行大数据量更新时,避免闪烁m_ListCtrl.SetRedraw(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论