热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

CListCtrl使用技巧(3)

CListCtrl使用详解1。先来介绍REPORT类型的CListCtrl:首先使用下面的语句设置CListCtrl的style:DWORDSetExt

CListCtrl使用详解

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&#61;0;j<3;j&#43;&#43;)

   m_ListCtrl.SetColumnWidth(j ,100);

以下为列表加入图标&#xff0c;如果不需要图标&#xff0c;可以跳过这一步。注意只在第一次加入&#xff0c;如果多次加入会出错&#xff01;

先在头文件中加入声明&#xff1a;

CImageList m_ImageList;

这是必要的&#xff0c;如果在cpp的某个函数中加入由于生命期结束&#xff0c;CImageList自动释放&#xff0c;则效果是列表中看不到图标&#xff0c;只看到一个白方块。

下面生成CImageList&#xff0c;并将其绑定到CListCtrl中&#xff0c;这是CImageList中还没有图标&#xff0c;只是一个容器&#xff1a;

static int flag&#61;2;

if(flag&#61;&#61;2){//只调用一次SetImageList&#xff0c;否则出错

   m_ImageList.Create(128, 128, ILC_COLORDDB|ILC_MASK, 20, 1);

   m_ListCtrl.SetImageList(&m_ImageList,LVSIL_SMALL);

}

flag&#61;(flag&#43;1)%2;

如果CListCtrl已经用过&#xff0c;曾经加过图标进去&#xff0c;这时就要删除上次放进m_ImageList中的Image

for(int kk&#61;0;kk

   m_ImageList.Remove(k);

下面介绍如何向CListCtrl里面加入行&#xff0c;并同时为每一行动态加入图标&#xff1a;

假设m_listRowCount为要加入的行数。

CBitmap* bitmap;

bitmap&#61;new CBitmap[m_list1rowCount];

HBITMAP hbitmap;

for(int i &#61; 0; i

{

   //为每一行插入相应的缩略图

   CFile f;

   CFileException e;  

   if( !f.Open(m_FileName, CFile::modeRead, &e )){ //m_FileName为bmp文件名&#xff0c;由你来定

    hbitmap &#61; (HBITMAP)LoadImage(NULL,path&#43;"blank.bmp",IMAGE_BITMAP,0,0,

     LR_CREATEDIBSECTION|LR_DEFAULTSIZE|LR_LOADFROMFILE);

   }else{

    f.Close();

    hbitmap &#61; (HBITMAP)LoadImage(NULL,bmpFile,IMAGE_BITMAP,0,0,

     LR_CREATEDIBSECTION|LR_DEFAULTSIZE|LR_LOADFROMFILE);

   }

   bitmap[i].Attach(hbitmap);

   m_ImageList.Add(&bitmap[i], #008080);

  

   //插入行

   m_ListCtrl.InsertItem(i,m_FileName,i);

   m_ListCtrl.SetItemText(i,1,type);

   m_ListCtrl.SetItemText(i,2,m_Path);

}

  

//记得删除已经没用的临时文件

if(m_list1rowCount!&#61;0)

   delete[] bitmap;

2。如果是ICON类型的CListCtrl&#xff0c;则要做一点点改动&#xff1a;

把绑定图标集的代码由

SetImageList(&m_ImageList,LVSIL_SMALL);

改为

SetImageList(&m_ImageList,LVSIL_NORMAL);

插入行时只用

InsertItem(i,mainSet.m_FileName,i);

不用

SetItemText(i,1,type);

之类的代码。

转:https://www.cnblogs.com/yelinpalace/archive/2009/09/10/1563847.html



推荐阅读
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • 本文介绍了如何使用Express App提供静态文件,同时提到了一些不需要使用的文件,如package.json和/.ssh/known_hosts,并解释了为什么app.get('*')无法捕获所有请求以及为什么app.use(express.static(__dirname))可能会提供不需要的文件。 ... [详细]
  • 预备知识可参考我整理的博客Windows编程之线程:https:www.cnblogs.comZhuSenlinp16662075.htmlWindows编程之线程同步:https ... [详细]
  • 关于extjs开发实战pdf的信息
    本文目录一览:1、extjs实用开发指南2、本 ... [详细]
  • Highcharts翻译系列之二十:曲线图例子(二)
    Highcharts翻译系列之二十:曲线图例子(二)代码 ... [详细]
  • ALTERTABLE通过更改、添加、除去列和约束,或者通过启用或禁用约束和触发器来更改表的定义。语法ALTERTABLEtable{[ALTERCOLUMNcolu ... [详细]
  • 本文讨论了clone的fork与pthread_create创建线程的不同之处。进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合。在调用系统调用fork创建一个进程时,子进程只是完全复制父进程的资源,这样得到的子进程独立于父进程,具有良好的并发性。但是二者之间的通讯需要通过专门的通讯机制,另外通过fork创建子进程系统开销很大。因此,在某些情况下,使用clone或pthread_create创建线程可能更加高效。 ... [详细]
  • 浏览器中的异常检测算法及其在深度学习中的应用
    本文介绍了在浏览器中进行异常检测的算法,包括统计学方法和机器学习方法,并探讨了异常检测在深度学习中的应用。异常检测在金融领域的信用卡欺诈、企业安全领域的非法入侵、IT运维中的设备维护时间点预测等方面具有广泛的应用。通过使用TensorFlow.js进行异常检测,可以实现对单变量和多变量异常的检测。统计学方法通过估计数据的分布概率来计算数据点的异常概率,而机器学习方法则通过训练数据来建立异常检测模型。 ... [详细]
  • 本文介绍了深入浅出Linux设备驱动编程的重要性,以及两种加载和删除Linux内核模块的方法。通过一个内核模块的例子,展示了模块的编译和加载过程,并讨论了模块对内核大小的控制。深入理解Linux设备驱动编程对于开发者来说非常重要。 ... [详细]
  • 点击后defaultEducation的值明明改变了,但props传给子组件却watch不到 ... [详细]
  • 前端库Bootstrap框架:「11]使用 span 创建行内元素
    前端库Bootstrap框架:「11]使用 span 创建行内元素 ... [详细]
author-avatar
suny
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有