ListCtrl使用
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);
之类的代码。
转载于:https://www.cnblogs.com/c1230v/articles/1396983.html
ListCtrl使用相关推荐
- VC控件 TreeCtrl 与 ListCtrl 演示(zz)
VC控件 TreeCtrl 与 ListCtrl 演示 作者:兰州大学现物系 王景生 下载源代码 这个例子类似于 Windows 的资源管理器,程序运行界面如图一所示: 图一 主要用到的类有: CLi ...
- 在ListCtrl控件中插入图标
在ListCttrl控件(Report风格)的使用上,有时需要向子列中插入图标,例如要制作一个下载软件,我们计划在控件的第一列用图标的形式显示下载状态:排队.下载中.出错等等,第二列计划用图标显示下载 ...
- 列表控件ListCtrl的使用
1.新建对话框工程Test,在对话框上放上ListCtrl控件IDC_LIST1,连接变量名m_list,增加代码: BOOL CTestDlg::OnInitDialog() { // ...
- VC++ 中ListCtrl经验总结
先注明一下,这里,我们用m_listctrl来表示一个CListCtrl的类对象,然后这里我们的ListCtrl都是report形式,至于其他的如什么大图标,小图标的暂时不讲,毕竟report是大众话 ...
- VC获取其他进程ListCtrl内容
VC读写其他进程ListCtrl数据到本进程的实例,下面用Windows任务管理器来做测试: 1.捕获窗口句柄: 用SPY++可以看到如下父子窗口关系: 添加ListCtrl,设置style / Re ...
- wxpython列表控件listctrl设置某行颜色_wxPython ListCtrl:写入彩色纹理
在尝试将字符串写入listcrl时,我无法完全理解逻辑.这是正确的方法吗?在self.rightPanel = wx.ListCtrl(spliter, -1, style=wx.LC_REPORT) ...
- ListCtrl添加右键菜单(ListCtrl类里编辑,给ListCtrl 发送NM_RCLICK消息)
在开发中会用到右键菜单,我们来一起学习一下. 假如,我们现在已经准备好了列表,就差右键处理了. 1.在资源视图中的添加一个MENU,如图 2.给要添加右键菜单的ListCtrl子类,添加消息 按 ct ...
- MFC ListCtrl和IP控件的使用杂记
ListCtrl中选中内容的提取 添加一个 list 控件 变量 m_list: POSITION pos = m_list.GetFirstSelectedItemPosition();if (po ...
- ListCtrl控件着色
最近在写一款山寨的反病毒软件,大致功能已经实现,还有一些细小的环节需要细化. 其中,在界面编程中,就用到了给ListCtrl控件着色,查看了网上一些文章,终于实现了. 其实说白了,原理很简单,就是Li ...
- wxpython wx listctrl_wxPython - ListCtrl列表排序
13.4.2 如何对列表排序? 在wxPython中有三个有用的方法可以对列表进行排序,在这一节,我们将按照从易到难的顺序来讨论. 在创建的时候告诉列表去排序 对一个列表控件排序的最容易的方法,是在构 ...
最新文章
- 使用 git 下载linux 源码
- exchange作业
- salt上编写了备份日志的脚本
- php对象魔术方法,php学习之类与对象的魔术方法的使用
- 24期分期免息可以提前还吗?
- 在Java中应用函数式编程请小心!
- windbg分析Kernel32.dll导出表
- 项目启动会应该注意的几点
- ES6 推荐网络文档书籍
- oracle自增序列带字母,[原创]Oracle自增序列
- 电源中104电容的作用
- opencv获取设备ID和名称
- 反射一、反射的基本概念
- 第二代3D TLC NAND原厂级深度评测 | 是否如你所愿?
- 【论】Bike sharing rebalancing problem with variable demand
- 媒介匣登陆阿里云市场,助力中小企业品牌推广
- 士兵职业基本适应性测试软件,士兵职业基本适应性检测系统 类型1.2.3怎么分...
- swapidc的php语言,SWAPIDC目录说明及文件说明及某些常量内容
- android studio中清除代码中的无效引用
- 联盟成员猛增近20家 联想超融合架构师预言成真
热门文章
- 帆软 动态改变填报数据库表;数据分析亦可用此方法
- 移动端ajax,移动端ajax请求问题?
- mysql ip 远程连接不上_【技术贴】解决MySql连接不上 ip远程连接Host is not allowed to conn-阿里云开发者社区...
- python之父名言_Python之父:为什么操作符很有用?
- 5、只出现一次的数字
- RN调试利器——React Native Debugger
- wget整站抓取、网站抓取功能
- Net设计模式实例之建造者模式(Builder Pattern)(1)
- KVM虚拟机在线扩展磁盘空间
- OJ 上常见错误提示