CListCtrl使用详解

简介: 1。先来介绍REPORT类型的CListCtrl: 首先使用下面的语句设置CListCtrl的style: DWORD SetExtendedStyle( DWORD dwNewStyle )...
1。先来介绍REPORT类型的CListCtrl: 
首先使用下面的语句设置CListCtrl的style: 
DWORD SetExtendedStyle( DWORD dwNewStyle ); 
其中 
LV*_**_CHECKBOXES 表示添加CheckBox 
LV*_**_FULLROWSELECT 表示选择整行 
LV*_**_GRIDLINES 表示添加表格线 
如果设置了LV*_**_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 .Attach(hbitmap); 
  m_ImageList.Add(&bitmap, 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); 
之类的代码。 
目录
相关文章
|
人工智能 测试技术 开发者
AI 编码助手:编程路上的得力伙伴
在数字化浪潮中,AI编码助手成为开发者不可或缺的工具。它通过代码生成与补全、优化与规范、错误检测与调试等功能,大幅提升编程效率和代码质量。从需求分析到部署,AI助手全程助力,确保项目顺利进行。尽管不能替代开发者创造力,但它无疑是编程道路上的得力伙伴,推动软件开发不断创新。
522 12
微信小游戏制作工具中关于背景图的设置
微信小游戏制作工具中关于背景图的设置
587 0
|
JavaScript 算法 NoSQL
微信公众平台开发(四)——微信支付
公众号中的微信支付需要通过JS来实现。微信JS-SDK是微信公众平台面向网页开发者提供的基于微信内的网页开发工具包。
|
25天前
|
人工智能 自然语言处理 Shell
🦞 如何在 OpenClaw (Clawdbot/Moltbot) 配置阿里云百炼 API
本教程指导用户在开源AI助手Clawdbot中集成阿里云百炼API,涵盖安装Clawdbot、获取百炼API Key、配置环境变量与模型参数、验证调用等完整流程,支持Qwen3-max thinking (Qwen3-Max-2026-01-23)/Qwen - Plus等主流模型,助力本地化智能自动化。
34818 137
🦞 如何在 OpenClaw (Clawdbot/Moltbot) 配置阿里云百炼 API
|
8天前
|
人工智能 自然语言处理 监控
OpenClaw skills重构量化交易逻辑:部署+AI全自动炒股指南(2026终极版)
2026年,AI Agent领域最震撼的突破来自OpenClaw(原Clawdbot)——这个能自主规划、执行任务的智能体,用50美元启动资金创造了48小时滚雪球至2980美元的奇迹,收益率高达5860%。其核心逻辑堪称教科书级:每10分钟扫描Polymarket近千个预测市场,借助Claude API深度推理,交叉验证NOAA天气数据、体育伤病报告、加密货币链上情绪等多维度信息,捕捉8%以上的定价偏差,再通过凯利准则将单仓位严格控制在总资金6%以内,实现低风险高频套利。
3462 23
|
21天前
|
人工智能 安全 机器人
OpenClaw(原 Clawdbot)钉钉对接保姆级教程 手把手教你打造自己的 AI 助手
OpenClaw(原Clawdbot)是一款开源本地AI助手,支持钉钉、飞书等多平台接入。本教程手把手指导Linux下部署与钉钉机器人对接,涵盖环境配置、模型选择(如Qwen)、权限设置及调试,助你快速打造私有、安全、高权限的专属AI助理。(239字)
7643 22
OpenClaw(原 Clawdbot)钉钉对接保姆级教程 手把手教你打造自己的 AI 助手
|
20天前
|
人工智能 机器人 Linux
OpenClaw(Clawdbot、Moltbot)汉化版部署教程指南(零门槛)
OpenClaw作为2026年GitHub上增长最快的开源项目之一,一周内Stars从7800飙升至12万+,其核心优势在于打破传统聊天机器人的局限,能真正执行读写文件、运行脚本、浏览器自动化等实操任务。但原版全英文界面对中文用户存在上手门槛,汉化版通过覆盖命令行(CLI)与网页控制台(Dashboard)核心模块,解决了语言障碍,同时保持与官方版本的实时同步,确保新功能最快1小时内可用。本文将详细拆解汉化版OpenClaw的搭建流程,涵盖本地安装、Docker部署、服务器远程访问等场景,同时提供环境适配、问题排查与国内应用集成方案,助力中文用户高效搭建专属AI助手。
5275 12