CListBox 带有复选框

MFC列表框控件开发指南:变量关联、属性设置与消息处理 在Windows桌面应用开发中,控件是构建用户界面的基础元素,而数据绑定与消息响应机制是实现交互逻辑的核心原理。MFC(Microsoft Foundation Classes)作为经典的C++框架,通过DDX/DDV机制提供了类型安全的控件变量关联方式,极大提升了开发效率与代码可维护性。本文聚焦于MFC列表框控件的实战应用,详细解析如何为控件关联变量、设置核心属性,并处理用户交互消息。通过一个完整的城市选择器案例,演示从控件创建、数据初始化到增删查改的全流程实现,帮助开发者快速掌握MFC桌面应用开发中的控 阅读详情
由于实际需要在项目中需要使用一个带有复选框的列表控件,没错,VB、Delphi……里现成就有,但由于项目是VC工程,VC里现成的CListBox或CListCtrl都没有复选框。说到这里,高手们可能会说,简单,自已重绘一个,或者偷懒一点的方法,也可以去网上找一个别人做好现成的类来用。 
其实还有一个更轻松的方法,网上找到这样一段话: 
How   to   use   the   CCheckListBox   class   in   a   dialog   box        
     
Create   in   your   resource   file   an   ordinary   list   box   in   a   dialog   box.   Whichever   other   attributes   that   you   choose,   the   list   box   must   be   ownerdrawn   and   include   the   hasstrings   attribute.   Assume   that   in   this   case,   you   have   assigned   an   ID   of   IDC_CHECKLISTBOX   to   the   listbox   .    
     
Create   an   instance   of   a   CCheckListBox   object   in   the   header   file   of   your   dialog   box.    
     
          CCheckListBox   m_CheckListBox;    
Over-ride   OnInitDialog()   in   your   dialog   box   and   subclass   the   list   box   that   you   created   in   your   resource   file.   Set   the   style   of   the   check   box   as   you   wish.   See   the   documentation   provided   with   your   compiler.    
     
          m_CheckListBox.SubclassDlgItem(IDC_CHECKLISTBOX,   this);    [Page]
          m_CheckListBox.SetCheckStyle(BS_AUTOCHECKBOX);    
Since   CCheckListBox   is   derived   from   CListBox,   you   have   access   to   all   the   class   members   of   CListBox.   Add   strings   to   the   list   box   using   AddString()   as   follows.    
     
          m_CheckListBox.AddString(\"Test   String\");    
CCheckListBox   provides   several   class   members   that   allow   you   to   access   or   set   the   check   state   of   the   items   in   the   list   box.   For   example,   to   see   whether   the   first   item   in   the   list   box   is   checked   (the   index   of   the   first   item   would   be   zero),   use   GetCheck().    
     
          int   iIndex   =   0;    
          int   iState;    
          iState   =   m_CheckListBox.GetCheck(iIndex);   
方法很巧,移花接木。 
MFC有一个CCheckListBox类支持复选框风格,所以我们可以直接使用ListBox控件,然后初始化时把它子类化成CCheckListBox,再设置一下风格参数就行。但要注意一下,成功的关键是要修改ListBox控件的两处属性,分别是Owner draw设置为Fixed(LBS_OWNERDRAWFIXED),Has strings设置为True(LBS_HASSTRINGS),否则不成功,运行时报错。 
具体实现步骤举例如下—— 
1、首先在窗口上拖放一个ListBox控件,假设其资源ID为IDC_LIST1;


2、如上所述修改该ListBox控件的属性(LBS_OWNERDRAWFIXED | LBS_HASSTRINGS); 
3、定义CCheckListBox对象,在窗口类的头文件里; [Page]
// XXXDlg.h




CCheckListBox m_CheckList; 
4、然后在CPP文件里,初始化的地方写下两行; 
// XXXDlg.cpp


BOOL CXXXDlg::OnInitDialog() 
...{ 
    // ...


    m_CheckList.SubclassDlgItem(IDC_LIST1, this); // IDC_LIST1是ListBox控件的资源ID 
    m_CheckList.SetCheckStyle(BS_AUTOCHECKBOX);


    // ... 
} 
OK,就这么简单!m_CheckListBox.AddString(\"...\");加几条数据看看,是不是有复选框了! 
判断复选框是否被选中也很简单,m_CheckListBox.GetCheck(nIndex);就行!
使VC中CListBox带有复选框 使VC中CListBox带有复选框使VC中CListBox带有复选框 立即下载

相关推荐

delphi Listview复选框checkbox实现单选的功能

有源码有实例,delphi Listview复选框checkbox实现单选的功能,代码很精简实用,测试完美!

如果利用CListBox实现CCheckListBox?(译)

实现步骤如下: 1. 在对话框上添加一个CListBox控件,修改其属性:    Owner Draw = Fixed    Has Strings设置checked; 2. 利用class wizard添加一个变量: CListBox m_ctlCheckList;将其修改为: CCheckListBox m_ctlCheckList;

一心两用 1066

MFC CListBox及CTreeCtrl具有复选框功能

简单的使用 CListCtrl 与CTreeCtrl 使其具有复选框功能

CListBox添加复选框(Check):同时实现list行上移下移按钮,对话框记忆功能

   MFC中其实有一个CCheckListBox类支持复选框风格,所以可以直接使用CListBox控件,然后初始化时把它转化成CCheckListBox,再设置一下控件风格参数就行。但要注意一下,关键是要修改ListBox控件的两处属性设置,分别是“Owner draw”:设置为Fixed(LBS_OWNERDRAWFIXED),“Has strings”设置为True(LBS_HASSTRIN......

欧特GO 3613

关于RT-Thread中PWM无法正常输出的学习

按照官方的PWM配置,并没有输出PWM,网上有比较多的办法,试了很多,有些还是不能实现输出,这里做个记录。记录自己完成PWM输出的过程,以及修改的地方。 关于STM32CubeMX配置就不多说了,网上有很多。 首先必定是按照流程来,一定一定按照流程来!!! 需要注意的是加上通道数!!!! 这是流程上没有的,也是RTT的一点小BUG吧 配上board.c中添加的代码,我用的是PA2定时2的通道3,需要使用的朋友修改对应定时器和GPIO! void HAL_TIM_Base_MspInit(TIM_Han

weixin_42566346的博客 3552

WOFOST模型参数调优实战:从‘跑不通’到‘预测准’的避坑指南

本文详细介绍了WOFOST模型参数调优的实战技巧,帮助用户从模型报错诊断到参数敏感性分析,再到土壤-作物参数联调策略,逐步解决‘跑不通’到‘预测准’的问题。通过Python和PCSE工具,提供参数扰动测试模板和关键参数优先级矩阵,助力作物模型的高效校准与预测。

weixin_32597009的博客 621

VC中让CListBox带有复选框

项目中需要使用一个带有复选框的列表控件,没错,VB、Delphi……里现成就有,但由于项目是VC工程,VC里现成的CListBox或CListCtrl都没有复选框。说到这里,高手们可能会说,简单,自已重绘一个,或者偷懒一点的方法,也可以去网上找一个别人做好现成的类来用。 其实还有一个更轻松的方法,网上找到这样一段话: [How to use the CCheckListBox class in

Ψ星泪(JPEXE) 4038

超10万,两台Mac Studio在家就能跑满血DeepSeek,网友:这是性价比最高的大模型一体机

在AI计算领域,没有比这更强的个人电脑了。这要从它的架构说起。对于那些有本地部署满血版DeepSeek需求的用户,目前建议的配置是选购512GB统一内存 + 1TB SSD,搭载M3 Ultra芯片的Mac Studio,官网售价74249元,可以叠加国补、教育优惠、12期分期等,这可能是目前门槛最低、性价比最高的满血版DeepSeek本地部署方案。对于企业而言,尽管Mac Studio确实可以部署6000亿参数的大模型,但在内存带宽、模型精调服务等方面,跟专用的大模型一体机仍有差距,采购需要谨慎评估。

2501_90444774的博客 1915

(转)VC中让CListBox带有复选框

(转)VC中让CListBox带有复选框 项目中需要使用一个带有复选框的列表控件,没错,VB、Delphi……里现成就有,但由于项目是VC工程,VC里现成的CListBox或CListCtrl都没有复选框。说到这里,高手们可能会说,简单,自已重绘一个,或者偷懒一点的方法,也可以去网上找一个别人做好现成的类来用。 其实还有一个更轻松的方法,网上找到这样一段话: [How to use t...

weixin_30726161的博客 117

HAL库硬件SPI驱动ST7735 TFT屏幕:从零实现高效刷屏与图形绘制

本文详细介绍了如何使用STM32的HAL库硬件SPI驱动ST7735 TFT屏幕,从硬件连接到SPI配置优化,再到图形绘制与文本显示的实现。重点分享了DMA传输、局部刷新等高级优化技巧,显著提升刷屏效率,帮助开发者快速掌握屏幕驱动技术并应用于实际项目。

pink的博客 740

从赛题到实战:一份面向高职“区块链技术应用”赛项的食品溯源系统全栈部署与运维指南

本文为高职院校学生备战“区块链技术应用”技能大赛提供了一份详实的食品溯源系统全栈部署与运维指南。内容涵盖从理解赛题业务逻辑、绘制技术蓝图,到搭建4节点FISCO BCOS联盟链、部署管理平台与智能合约,再到核心运维技能与前后端联调测试的完整流程,旨在帮助参赛者将赛题转化为可运行的实战项目,全面提升区块链全栈开发与运维能力。

weixin_29172201的博客 669

VC CListBox中加复选框

一个带有复选框的列表控件,VB、Delphi……里有,VC工程,VC中的CListBox, CListCtrl没有复选框。自已重绘一个,或可以去网上找一个别人做好的现成的类。 MFC有一个CCheckListBox类支持复选框风格,可以直接使用ListBox控件,初始化时把它子

编程之路 4708

RAG开源框架深度评测:从RAGFlow到Dify的实战选型指南

本文深度评测了主流RAG开源框架(RAGFlow、Dify、WeKnora)的核心能力与实战表现,提供企业级选型指南。重点对比了文档解析、检索性能和生产部署等关键指标,揭示RAGFlow在复杂文档处理、Dify在低代码开发、WeKnora在腾讯生态集成的差异化优势,并给出技术选型决策树与成本优化方案。

weixin_29294597的博客 825

【原】CListBox & CCheckListBox 使用技巧

                                【原】CListBox & CCheckListBox 使用技巧作者:lixiaosan时间:04/06/2006CListBox 和 CCheckListBox 简介CListBox用来输出一系列的文本,每条文本占一行。CCheckListBoxCCheckListBox是由CListBox派生,具有CListBox的所

7762

VTK 显示大量点云数据及交互(点云拾取、着色、测量等)功能

VTK (Visualization Toolkit) 是一个强大的开源可视化库,非常适合处理点云数据。下面将介绍如何使用 VTK 显示大量点云数据,并实现点云拾取、着色、测量等功能。

深之JohnChen的专栏 1994

paddle 43 用onnxruntime实现ppyoloe模型的部署(含python和c++版本)

PP-YOLOE+是PP-YOLOE模型的升级版,PP-YOLOE+_l在COCO test-dev2017达到了53.3的mAP, 同时其速度在Tesla V100上达到了78.1 FPS。PP-YOLOE+_s/m/x同样具有卓越的精度速度性价比。paddle官方只给出了基于paddle框架的部署案例,为了更好的部署,为此实现将paddle模型转换为onnx模型,然后在python下实现onnxruntime部署。后续会补充c++ onnxruntime部署

a486259的博客 1914

MFC List Box 复选框

MFC List Box 复选框

m0_62294345的博客 620

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

CCheckListBox的使用

CCheckList的使用1.简述2.常用Member functions1.ClistBox2. CChekListBox3.使用CCheckListBox1.创建CCheckListBox:2.删除CCheckListBox中的String 1.简述 CCheckListBox:显示一个带有复选框的项目列表,比如文件名,用户可以选中或清除该复选框。例如在Window系统(以Win10为例)中,随便打开一个文件夹(C:\Program Files (x86)),单击查看,点选项目复选框,如下图所示: 当

GODOOOO的博客 1847

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

4.5 List BoxCheck List Box

如果你指明了选择多行的风格,你就需要先调用int GetSelCount( )得到被选中的行的数量,然后int GetSelItems( int nMaxItems, LPINT rgIndex )得到所有选中的行,参数rgIndex为存放被选中行的数组。通过void SetCheck( int nIndex, int nCheck )/int GetCheck( int nIndex )可以设置和得到某行的检查状态,关于检查框状态可以参考4.1 Button中介绍。

qq_41237850的博客 523

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

线程文件[MFC]线程优先级设置,下拉列表框ComboBox,复选框CButton,列表框CListBox的使用...

发一下牢骚和主题无关: #include "CountThread.h" #include "DisplayThread.h" BEGIN_MESSAGE_MAP(CCountTestThreadMFCDlg, CDialogEx) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_CBN_SELCHANGE(IDC_CO...

weixin_30411819的博客 109

MFC学习笔记--按钮、列表框、对话框控件

按钮类CButton 按钮是一个矩形窗口,通常包含一个标题用来说明按钮的作用。CButton按钮控件类是从CWnd继承的。CObject-->CCmdTartget-->CWnd-->CButton. 按钮控件主要有命令按钮Button、单选按钮Radio Button 和复选框Check Box等。 命令按钮Button 用来响应用户的鼠标点击操作; 单选按钮Radio Button 由多个单选按钮组成一组,有选中和未选中两种状态,一组单选按钮...

S_BlueSky的博客 951

MFC控件编程实战:从按钮到列表视图的完整开发指南

在Windows桌面应用开发中,界面控件是构建用户交互的核心组件。MFC(Microsoft Foundation Classes)作为经典的C++框架,通过封装Windows标准控件和公共控件,提供了高效的开发方式。其核心原理基于消息映射机制和对话框数据交换(DDX),开发者可以通过静态创建或动态创建两种方式实例化控件,并通过控件通知实现交互逻辑。在工程实践中,合理运用CButton、CEdit、CListBox、CComboBox和CListCtrl等核心控件,结合UpdateData函数进行数据同步,

weixin_30897079的博客 447

0005-MFC--CCheckListBox控件的使用

在VS中,CCheckListBox控件无法选择,能选的只有CListBox控件,这个控件的选项前面没有checkbox,如何才能用CCheckListBox了,方法如下: 1. 新建对话框应用 2.给对话框加一个ListBox控件 3.修改ListBox的2个属性: Owner draw :Fixed, Has String:true 4. 给ListBox加一个变量 m_lis

唐伯虎的专栏 6920
上一篇: cannot find the definition (implementation) of this function 解决方法
下一篇: CString,BSTR,LPCTSTR 之间的关系【BSTR,_bstr_t, CComBSTR】
一秀
博客等级 码龄14年 1粉丝 11原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值