CIconListBox带图标的列表框类
有时候,我们需要在列表框ListBox中插入带图标的文字项,这就需要自己派生一个类出来了,网上的一个CIconListBox类还不错,网站http://www.codeguru.com/Cpp/controls/listbox/article.php/c4749/
这里介绍下使用方法,源代码我有改动,环境Visual Studio 2008 SP1:
1.基于对话框的工程,名称为IconListBoxTest;
2.拖动控件到对话框上,按下图所示排列:
3.导入IconListBox.cpp和IconListBox.h两个文件到工程,在对话框头文件包含
4.为ListBox控件,改变其属性“Owner Draw”为“Fixed”,其“Has Strings”为“TRUE”添加变量:
添加一个图片列表变量:
导入图片资源,修改其ID号为IDB_LB_IMG,在对话框的初始化函数里面添加如下代码(可自己根据修改):
m_imgNormal.Create(,
,
ILC_COLOR32 | ILC_MASK,
, );
ASSERT(m_imgNormal.m_hImageList);
bmp.LoadBitmap(IDB_LB_IMG);
m_imgNormal.Add( &bmp, -);
bmp.DeleteObject();
m_ListBox.SetImageList(&m_imgNormal);
; i < ; i++ )
m_ListBox.AddString( _T("Hello World") , i );
5.右边按钮的事件如下:
{
if(UpdateData())
{
if(!m_Str.IsEmpty())
m_ListBox.AddString(m_Str,m_Img);
else
AfxMessageBox(_T("输入文本字符串!"));
}
}
void CIconListBoxTestDlg::OnBnClickedInsert()
{
if(UpdateData())
{
if( m_Str.IsEmpty() )
{
AfxMessageBox(_T("输入文本字符串!"));
return;
}
int iSel = m_ListBox.GetCurSel();
if( iSel != LB_ERR )
m_ListBox.InsertString(iSel, m_Str , m_Img);
else
AfxMessageBox(_T("选择左边列表其中一项!"));
}
}
void CIconListBoxTestDlg::OnBnClickedDelete()
{
int iSel = m_ListBox.GetCurSel();
if( iSel != LB_ERR )
m_ListBox.DeleteString( iSel );
else
AfxMessageBox(_T("选择左边列表其中一项!"));
}
void CIconListBoxTestDlg::OnBnClickedChangeicon()
{
if(UpdateData())
{
int iSel = m_ListBox.GetCurSel();
if(iSel != LB_ERR )
m_ListBox.SetItemImage(iSel,m_Img);
else
AfxMessageBox(_T("选择左边列表其中一项!"));
}
}
void CIconListBoxTestDlg::OnBnClickedImgList()
{
if(UpdateData())
{
if( m_Check )
m_ListBox.SetImageList(&m_imgNormal);
else
m_ListBox.SetImageList();
m_ListBox.RedrawWindow();
}
else
{
((CButton *)GetDlgItem(IDC_IMG_LIST))->SetCheck(m_Check);
}
}
6.编译完成。效果如下:
源代码下载:http://download.csdn.net/source/2816256
CIconListBox带图标的列表框类的更多相关文章
- Android实现“是否退出”对话框和“带图标的列表”对话框
今天我们学习的内容是实现两种对话框(Dialog),第一种是询问是否退出对话框,另外一种是带图标的列表对话框,程序的执行效果是,我们点击button1的时候,弹出第一种对话框,我们点击button2的 ...
- 列表框QListWidget类
QListWidget类也是GUI中常用的类,它从QListView下派生: class Q_GUI_EXPORT QListWidget : public QListView { Q_OBJECT ...
- WorldWind源码剖析系列:插件列表视图类PluginListView和插件列表视图项类PluginListItem
WorldWind中的插件类是个庞大的类,可以说从软件设计层面上统筹可扩展的插件体系的设计思想是WorldWind中的精华,值得学习和借鉴.插件体系中的所用到的类可以分为两大类,一类是插件类Plugi ...
- QMUI UI库 控件 弹窗 列表 工具类 MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- [WPF]带下拉列表的文本框
控件我已经弄好了,代码比较多,所以没办法全面介绍. 一开始我是直接继承Selector类来实现,做是做出来了,不过发现性能不太好.于是,我就想着自己来实现.毕竟我是做给自己用的,也不考虑过多的东西,也 ...
- MFC编程入门之二十四(常用控件:列表框控件ListBox)
前面两节讲了比较常用的按钮控件,并通过按钮控件实例说明了具体用法.本文要讲的是列表框控件(ListBox)及其使用实例. 列表框控件简介 列表框给出了一个选项清单,允许用户从中进行单项或多项选择,被选 ...
- 积累的VC编程小技巧之列表框
1.列表框中标题栏(Column)的添加 创建一个List Control,其ID为IDC_LIST,在其Styles属性项下的View项里选择Report.Align项里选择Top.Sort项里选择 ...
- C#用到windows 消息列表Message类MSG的id代号
C# Constants:private const UInt32 WM_ACTIVATE = 0x0006;private const UInt32 WM_ACTIVATEAPP = 0x001C; ...
- LabVIEW(十六):多列列表框控件
1.多列列表框控件:前面板右键>列表.表格和树>多列列表框2.默认情况下只显示列首,可设置显示行首:前面板选中多列列表框右键>显示>行首3.LabVIEW中提供42种自带的图标 ...
随机推荐
- AOI自动光学检测机技术在电路板检查中的应用
1.简述 AOI技术在许多不同的制造业领域使用,自从电子影像技术开始发展,就被各种人利用在不同的应用领域.大家最熟悉的数字相机.数字摄影机是大家生活中最常用到的器材之一,而工业产品的生产也大量使用这些 ...
- 用200行Python代码“换脸”
介绍 本文将介绍如何编写一个只有200行的Python脚本,为两张肖像照上人物的“换脸”. 这个过程可分为四步: 检测面部标记. 旋转.缩放和转换第二张图像,使之与第一张图像相适应. 调整第二张图像的 ...
- 学校作业-Usaco DP水题
好吧,因为USACO挂掉了,所以我写的所有代码都不保证正确性[好的,这么简单的题,再不写对,你就可以滚粗了! 第一题是USACO 2.2.2 ★Subset Sums 集合 对于从 1 到 N 的连 ...
- 数据结构大型实验的记录(done)
用平衡二叉树的知识实现用户登录系统模拟 基本思路: 类:AVLnode (树的节点类) AVLtree (树的基本操作类 包括insert remove search 平衡树的4种旋转) UserIn ...
- Memcached初体验及原理解说
1.简单介绍 Memcached 是一个 高性能的 分布式 内存对象缓存系统,用于动态Web应用降低数据库负载,提升性能. 2.试用场景 1.变化频繁,具有不稳定性的数据 (比方用户在线状态.在线人数 ...
- 在Xcode中使用C++与Objective-C混编
有时候,出于性能或可移植性的考虑,需要在iOS项目中使用到C++. 假设我们用C++写了下面的People类: // // People.h // MixedWithCppDemo // // ...
- 从数据库中,绑定JQuery Accordion控件---Repeater control
http://aspsnippets.com/Articles/jQuery-Accordion-example-in-ASPNet-using-C-and-VBNet.aspx 1. 添加JQuer ...
- 【Hibernate】Remember that ordinal parameters are 1-based!
此错误的官方解释:1.当hql中不需要参数,而传递了参数导致,2.set参数时没有从0开始. 但此问题不属这两种. 检查导入的libraries无错误. 最后在网络搜索到:http://qihaihu ...
- 写一方法来实现两个变量的交换。在主调函数中定义两个整型变量,并初始化,调用交换方法,实现这两个变量的交换。(使用ref参数)
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- 安装uwsgi
apt-get install uwsgi uwsgi-plugin-python