CListCtrl使用详解

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

1。先来介绍REPORT类型的CListCtrl:
首先使用下面的语句设置CListCtrl的style:
 DWORD SetExtendedStyle( DWORD dwNewStyle );
其中
 LVS_EX_CHECKBOXES 表示添加CheckBox
 LVS_EX_FULLROWSELECT 表示选择整行
 LVS_EX_GRIDLINES 表示添加表格线

如果设置了LVS_EX_CHECKBOXES属性,则可以用
 BOOL GetCheck( int nItem ) const;
来得到某一行是否Checked。

可以先用下面的语句来删除以前的东西:
 for(int k=2;k>=0;k--) //注意要从后往前删,否则出错
  m_ListCtrl.DeleteColumn(k);
 m_ListCtrl.DeleteAllItems();

用下面的语句新建列:
 m_ListCtrl.InsertColumn(0,_T("文件名"),LVCFMT_IMAGE|LVCFMT_LEFT);
 m_ListCtrl.InsertColumn(1,_T("仪器类别"));
 m_ListCtrl.InsertColumn(2,_T("项目类别"));
 
其中LVCFMT_IMAGE表示可以在第一列加入图标。如果不要图标可以删去。

然后设置列宽:
 for(j=0;j<3;j++)
  m_ListCtrl.SetColumnWidth(j ,100);
 
以下为列表加入图标,如果不需要图标,可以跳过这一步。注意只在第一次加入,如果多次加入会出错!
先在头文件中加入声明:
 CImageList m_ImageList;
这是必要的,如果在cpp的某个函数中加入由于生命期结束,CImageList自动释放,则效果是列表中看不到图标,只看到一个白方块。
下面生成CImageList,并将其绑定到CListCtrl中,这是CImageList中还没有图标,只是一个容器:
 static int flag=2;
 if(flag==2){//只调用一次SetImageList,否则出错
  m_ImageList.Create(128, 128, ILC_COLORDDB|ILC_MASK, 20, 1); 
  m_ListCtrl.SetImageList(&m_ImageList,LVSIL_SMALL);
 }
 flag=(flag+1)%2;
如果CListCtrl已经用过,曾经加过图标进去,这时就要删除上次放进m_ImageList中的Image
 for(int kk=0;kk<m_ImageList.GetImageCount();kk++)
  m_ImageList.Remove(k);
 
下面介绍如何向CListCtrl里面加入行,并同时为每一行动态加入图标:
假设m_listRowCount为要加入的行数。
 CBitmap* bitmap;
 bitmap=new CBitmap[m_list1rowCount];
 HBITMAP hbitmap; 
 
 for(int i = 0; i < m_listRowCount; i++)
 {
  //为每一行插入相应的缩略图
  CFile f;
  CFileException e;  
  if( !f.Open(m_FileName, CFile::modeRead, &e )){ //m_FileName为bmp文件名,由你来定
   hbitmap = (HBITMAP)LoadImage(NULL,path+"blank.bmp",IMAGE_BITMAP,0,0,
    LR_CREATEDIBSECTION|LR_DEFAULTSIZE|LR_LOADFROMFILE);
  }else{
   f.Close();
   hbitmap = (HBITMAP)LoadImage(NULL,bmpFile,IMAGE_BITMAP,0,0,
    LR_CREATEDIBSECTION|LR_DEFAULTSIZE|LR_LOADFROMFILE);
  }
  bitmap[i].Attach(hbitmap);
  m_ImageList.Add(&bitmap[i], RGB(0, 128, 128));
  
  //插入行
  m_ListCtrl.InsertItem(i,m_FileName,i);
  m_ListCtrl.SetItemText(i,1,type);
  m_ListCtrl.SetItemText(i,2,m_Path);
 }
  
 //记得删除已经没用的临时文件
 if(m_list1rowCount!=0)
  delete[] bitmap;

2。如果是ICON类型的CListCtrl,则要做一点点改动:
把绑定图标集的代码由
 SetImageList(&m_ImageList,LVSIL_SMALL);
改为
 SetImageList(&m_ImageList,LVSIL_NORMAL);

插入行时只用
 InsertItem(i,mainSet.m_FileName,i);
不用
 SetItemText(i,1,type);
之类的代码。

CListCtrl的用法 1. CListCtrl 样式及设置 2. 扩展样式设置 3. 数据插入 4. 一直选中Item 5. 选中和取消选中Item 6. 得到CListCtrl中所有行的checkbox的状态 7. 得到CListCtrl中所有选中行的序号 8. 得到item的信息 9. 得到CListCtrl的所有列的header字符串内容 10. 使CListCtrl中一项可见,即滚动滚动条 阅读详情

相关推荐

ClistCtrl 的用法

1、创建create   ① 绝对大小     CRect(10,10,600,200)     CListCtrl * list1 = new CListCtrl;     list1->Create(WS_VISIBLE | LVS_REPORT | LVS_ALIGNTOP | WS_BORDER | WS_CHILD, CRect(10,10,600,200),this,110

lianxiao1314的专栏 2474

MFC总结之CListCtrl用法及技巧(一)

本文根据本人在项目中的应用,来谈谈CListCtrl的部分用法及技巧。当初学习时,查了很多资料,零零碎碎的作了些记录,现在主要是来做个总结,方便以后查阅。主要包括以下十三点内容:基本操作、获取选中行的行号、复选框操作、动态设置选中行的字体颜色、设置选中行的背景颜色、禁止拖动表头、让第一列居中显示、设置行高与字体、虚拟列表技术、点击表头时进行归类、向上与向下移动、动态调整大小问题、避免闪烁问题。

茅庐 5万+

CListCtrl用法简介及使用技巧(一)

[设置属性] 首先用资源编辑器拖放一个ListCtrl控件到对话框中。设置属性。 Always Show Selection: True // 即便失去焦点依然高亮选择 SingleSelection: True // 只允许选中一行 View: Report // 报表方式,较常用 [初始化]// 1. 在对话框的OnInitialDialog...

weixin_33994444的博客 348

CListCtrl使用小结

1  获得选中项的索引 POSITION pos=m_BanjiList.GetFirstSelectedItemPosition(); if(pos==NULL) { AfxMessageBox(L"未选择任何项"); return; }else{ int iIndex=m_BanjiList.GetNextSelectedItem(pos); CStri

目前打算换一个工作,有招聘windows c++方向的也欢迎联系,北京、济南 最好 2459

关于ClistCtrl 使用

CListCtrl类封装“列表视图控件”功能,显示每个包含图标(列表视图中)和标签的收集。除图标和标签外,每一项还能有显示在图标和标签的右边的列中的信息。此控件(以及CListCtrl类)只适用于运行于Windows 95和Windows NT 3.51及更高版本的程序。下面是CListCtrl类的主要概况。对于详细的、概念性的讨论,请参阅联机文档“Visual C++程序员指南”

我为编程狂,我为外语狂 3524

报表式CListCtrl使用详解初稿

严格说来本文是别人成果的集合,加入了本人使用的一点心得,而且文章内容是本人在实际开发中试验过可以使用的。这只是初稿,还有很多内容没有加入,原因是没有经过验证,以后会陆续加入,形成一个CListCtrl使用完全指南。创建图形列表并和CListCtrl关联: m_image_list.Create(IDB_CALLER2, 16, 10, RGB(192,192, 192)); m_image_

解惑 2756

CListCtrl使用技巧

CListCtrl使用技巧       以下未经说明,listctrl默认view 风格为report-----------------------------------------------------------------------------------------------1. CListCtrl 风格      LVS_ICON: 为每个item显示大图标      L

jianzhanger的专栏 835

CListCtrl 使用演示的例子

BOOL CLCDemoDlg::OnInitDialog(){ CDialog::OnInitDialog();  // Add "About..." menu item to system menu.  // IDM_ABOUTBOX must be in the system command range. ASSERT((IDM_ABOUTBOX &amp; 0xFF...

weixin_34178244的博客 105

ClistCtrl 详解

  1。先来介绍REPORT类型的CListCtrl: 首先使用下面的语句设置CListCtrl的style:  DWORD SetExtendedStyle( DWORD dwNewStyle ); 其中

华的自习室 1040
上一篇: 用JavaMail发送带附件的邮件
下一篇: CMPP2.0 协议SP端的·NET开发
fairness
博客等级 码龄23年 6粉丝 8原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值