CListBox & CCheckListBox 使用技巧

MFC 设置CListBox各行的字体、样式、颜色、行间距,并自动显示隐藏水平滚动条 派生修改CLIstBox实现对各行内容字体、样式、大小、颜色的分别设置,并实现水平滚动条自动显示隐藏的功能。 阅读详情
CListBox & CCheckListBox 使用技巧

                                【原】CListBox & CCheckListBox 使用技巧


作者:lixiaosan
时间:04/06/2006

CListBox 和 CCheckListBox 简介
CListBox
用来输出一系列的文本,每条文本占一行。

CCheckListBox
CCheckListBox是由CListBox派生,具有CListBox的所有功能。与CListBox唯一不同是在每一行前面加上了一个检查框(Check Box)。要使用CCheckListBox,需要在资源视图(resourceview)中
(1) Style->Owner draw->选中Fixed
(2) 选中
Has Strings
(3) 添加成员变量
方法一:通过类向导(ClassWizard)给添加成员变量CListBox m_listbox;,然后手动改为CCheckListBox m_listbox;
方法二:用SubclassDlgItem或者SubclassWindow函数,子类化控件。
CCheckListBox m_checkListBox;
m_checkListBox.SubclassDlgItem(IDC_LISTBOX1,this);

 


1. listbox的styles介绍


    在listbox的styles中的selection中有4个选项:Single,Multiple,Extended和None。

    Single:允许每次选择一个item。
    Multiple:允许每次选择多个item。
    Extended:允许按下Shift/Ctrl键选择多行。
    None:选中item而不高亮之,只显示该item得到焦点(item外有矩形框)。



2. 关于在运行时改变listbox的style


    在运行时是不能改变style的,只有销毁原来的,再新创建一个listbox。或者先创建两个listbox,隐藏其中   一个。



3. 设置listbox水平滚动条

    int     dx=0;
    CSize   sz;                                                            
    CDC*    pDC = m_listbox.GetDC();
    CString str;
    for (int j = 0; j < m_listbox.GetCount(); j++)
    {
        m_listbox.GetText(j, str);
        sz = pDC->GetTextExtent(str);
        
        if ( sz.cx > dx )                                        
            dx = sz.cx;
    }
    
    m_listbox.ReleaseDC(pDC);
    m_listbox.SetHorizontalExtent(dx);


4. 导入文件夹下所有文件和目录到listbox

    TCHAR szPath [MAX_PATH] = {"c://"};
    int nReslt = DlgDirList(szPath , IDC_LISTBOX1 , 0,
                            DDL_READWRITE |DDL_READONLY | 
                            DDL_SYSTEM | DDL_ARCHIVE | DDL_DIRECTORY );


5. listbox加入数据时,自动滚动到最后

    // 自动滚动到最后并选中最后最后一行
    m_listbox.SetCurSel(m_listbox.GetCount()-1);

    // 自动滚动到最后
    m_listbox.SetCaretIndex(m_listbox.GetCount()-1, FALSE);
    或者
   
m_listbox.SetTopIndex(m_listbox.GetCount()-1);

6.关于 SetItemDataPtr() 和 GetItemDataPtr() 的使用

    SetItemDataPtr()是将一个32位的指针与列表框中的一个item建立相关联,在设置后可以通过调用GetItemDataPtr()而获取。那么由此,我们可以将列表框中的数据通外部建立联系了。
    在实际应用方面,比如,在列表框中的item是人的姓名,那么我们可以建立一个数据结构,存储人的性别,住址,电话等相关信息,与item建立联系。当取得item时,同时我们也取得了该人的相关信息。

示例:
    struct _Person_Info {
       CString strSex;
       CString strAddress;
       CString strPhoneNumber;
    }PersonInfo;

    PersonInfo  *pi;

    int nIndex = m_listbox.AddString(_T("小三"));
    m_pPersonInfo = new PersonInfo();
    pi->strSex = _T("Male");
    pi->strAddress = _T("xxx city");
    pi->strPhoneNumber = _T("1234567678");
    m_listbox.SetItemDataPtr(nIndex, (LPVOID)pi);

    //获取
    PersonInfo   *pi = NULL;
    pi = (PersonInfo *)m_listbox.GetItemDataPtr(nIndex);


7. 带彩色字符串 listbox

http://www.codeguru.com/cpp/controls/listbox/colorlistboxes/article.php/c1611/
http://www.codeproject.com/combobox/xlistbox.asp


8. 背景透明 listbox

http://www.codeguru.com/cpp/controls/listbox/colorlistboxes/article.php/c10413/



9. 在listbox中实现拖放

(1) 在一个listbox中拖放
http://www.codeguru.com/cpp/controls/listbox/dragdrop/article.php/c11061/
http://www.codeguru.com/cpp/controls/listbox/dragdrop/article.php/c4747/
      
(2) 在两个listbox间实现拖放
http://msdn.microsoft.com/msdnmag/issues/04/10/CQA/
http://www.codeguru.com/cpp/controls/listbox/dragdrop/article.php/c11069/

 


10. CListBoxST 一个非常好的类

http://www.codeguru.com/cpp/controls/listbox/article.php/c4753/


11. 类似于 vb 属性选择窗口

http://www.codeguru.com/cpp/controls/listbox/article.php/c1607/
http://www.codeproject.com/combobox/Property_List.asp


12. 类似于 vc 的 tools->options->directories 的目录设置窗口


http://www.codeguru.com/cpp/controls/listbox/article.php/c1613/


13. 带 icon 的 listbox

http://www.codeguru.com/cpp/controls/listbox/article.php/c4749/
http://www.codeguru.com/cpp/controls/listbox/article.php/c4753/


14. 带 checkbox 的listbox

http://www.codeproject.com/combobox/CCheckListBoxUsage.asp


15. 可编辑 item 的 listbox

http://www.codeproject.com/combobox/lbed.asp


16. 可 disable item 的 listbox

http://www.codeproject.com/combobox/disableditemslistbox.asp


17. 一个自绘的listbox


Q113189:
ListDlg.exe Implements a List Box Full of Dialog Boxes
http://support.microsoft.com/kb/113189/en-us
  

  

 
CListBox选中取消选中演示程序 博客:http://blog.youkuaiyun.com/daiafei/article/details/7792220 立即下载

相关推荐

UR机械臂正逆运动学解析:从DH参数到8组解的完整求解策略

本文深入解析UR机械臂的正逆运动学求解策略,从DH参数原理到完整的8组解求解方法。详细介绍了正运动学的坐标变换过程,以及逆运动学中Atan2函数和三角恒等变换的应用,并揭示了8组解的产生机制。通过实际案例和调试技巧,帮助工程师掌握UR机械臂运动学求解的核心技术。

weixin_29094775的博客 413

CListBox 列表框

1、构造函数初始化一般操作多选操作字符串操作可覆盖的函数2、

zxf347085420的博客 535

MQL5教程 01 MT5有关EA的操作、MetaEditor 工具栏主要功能

MQL5教程 01 MT5有关EA的操作、MetaEditor 工具栏主要功能

weixin_42830015的博客 3985

VC MFC列表框(CListBox)控件

关于列表框背景位图的问题,可以响应对话框的WM_CTLCOLOR消息,在这个消息处理函数中,判断是否为列表框,如果是那就返回一个位图画刷,如在对话框类添加一个CBrush变量 brush;接着准备两张位图,一张用于列表框的背景,一张用于项选中时的背景,ID号分别为:IDB_BK、IDB_SELECTED。m_ListBox.AddItem(IDB_BITMAP3,"聆听(小鸟在唱歌...)");m_ListBox.AddItem(IDB_BITMAP5,"大地(在那些....)");

d3582077的专栏 1773

Android13 CarPowerManagementService启动流程分析

在CarPowerManagementService中init调用PowerHalService的setListener设置事件侦听器以接收车辆的电源事件。

liuning1985622的博客 956

保姆级教程:用Wireshark抓包分析10M汽车以太网PLCA轮询机制(附pcap文件)

本文详细介绍了10M汽车以太网PLCA轮询机制的抓包分析与性能优化方法。通过Wireshark实战教程,解析PLCA协议的时分多址特性、总线型拓扑结构及带宽优化策略,帮助工程师提升车内网络的可靠性和实时性。附赠pcap文件供实践参考。

wdx01234567的博客 239

VC ++MFC列表框(CListBox)控件简单自绘

CObject←CCmdTarget←CWnd←CListBox CListBox类提供Windows列表框的功能。列表框显示项的列表,如用户可以见到和选择的文件名称。在单选列表框里,用户只可选择一个项。在多选列表框里,可选择许多项。当用户选择某项时,其高亮显示且列表框给父窗口发送一个通知消息。 

喜欢吃一口烤肉的啵啵 4811

【详细】芯片设计全流程(包括每个流程需要用到的工具以及需要参与的工作人员)

一颗芯片的诞生经历了设计、制造和测试(分别对应集成电路产业链的设计业、制造业和封测业),而每一步都包含了复杂的步骤和流程。 图0-1 集成电路产业链 现在,我们重点介绍芯片设计的全流程以及每个流程需要用到的设计工具和需要参与的工作人员。 一、IC设计分类 首先对IC设计的分类做个介绍,如图1-1所示。 图1-1 IC设计分类 如图1-1所示,IC设计可以粗分为数字IC设计和射频/模拟IC设计,数字IC设计又可分为ASIC设计和FPGA/CPLD设计,此外还有一部分IC设计.

qq_36045093的博客 8万+

【原】CListBox & CCheckListBox 使用技巧

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

7762

ESP32水墨屏日历实战:低功耗自动更新与HTTPS数据解析

本文详细介绍了ESP32水墨屏日历项目的开发实践,重点讲解了低功耗自动更新与HTTPS数据解析的实现方法。通过ESP32的自动休眠功能和水墨屏的零功耗特性,结合HTTPS请求安全获取网络数据,实现了高效节能的桌面日历应用。项目代码开源,适合物联网开发者参考。

xx56789的博客 777

PCL学习笔记(四)——点云曲面重建

文章目录一、凸包算法二、 单纯的点云数据固然很好,但仅仅是点的话仍是不够的,因为这不利于我们后续对实体对象的渲染与各种应用,如计算实体的表面积、体积等等,所以这就需要我们对实体进行点云的曲面重建。 一、凸包算法 在计算机图形学中,凸包是指在任意维空间中包含某一有限点集P的最小凸集,它由凸包顶点构成,在二维上其表现形式为一个凸多边形,而在三维上则表现为一个凸多面体。在二维层面上来讲,最常用的凸包算法有Graham扫描法和Jarvis卷包裹法,但前者并不适用于三维层面,后者倒是可以扩展到三维。除此之外,在

dayuhaitang1的博客 6912

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

CCheckListBox控件

1.CCheckListBox效果    CCheckListBox是由CListBox派生,具有CListBox的所有功能。与CListBox唯一不同是在每一行前面加上了一个检查框(Check Box)。 2.CCheckListBox的rc设置 要使用CCheckListBox,需要在资源视图(resourceview)中 (1) Style->Owner draw->选中Fixe

程序人生的专栏 6914

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

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

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

VC CListBox中加复选框

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

编程之路 4708

cchecklistbox

<br />CCheckListBox可以实现带CheckBox的ListBox,VC6自带,头文件Afxwin.h;<br />但不支持托放式加入界面(再次骂下开发VC的MS人员,UI支持超级弱智!)。<br />有个方法比较简单,在窗口拖放一个CListBox(不会不知道是哪个吧?那就撞墙好了。),ID是IDC_LIST1,在类向导器里创建一个Control型变量,如m_List,在窗口类里将会有<br />CListBox m_List;<br />将CListBox修改成CCheckListBox;

longgogo的专栏 697

VC中CCheckListBox显示时崩溃的原因及解决方法

     CCheckListBox可以实现带CheckBox的ListBox,VC6自带,头文件Afxwin.h;     但不支持托放式加入界面(再次骂下开发VC的MS人员,UI支持超级弱智!)。     有个方法比较简单,在窗口拖放一个CListBox(不会不知道是哪个吧?那就撞墙好了。),ID是IDC_LIST1,在类向导器里创建一个Control型变量,如m_List,在窗口类里将会有

CODER 沙漠孤狐 3984
上一篇: Skin技术实现框架
下一篇: VC小知识总结!(精品收集)
skyremember
博客等级 码龄20年 204粉丝 484原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值