类CComboBoxEx从CComboBox类扩展而来,它最大的特点是支持图像列表,它可以直接存取图形列表中的图像。

在CComboBoxEx类中,每项最多可有3个图像:一个代表选中状态,一个代表未选中状态,另一个代表覆盖的图像。CComboBoxEx支持四种风格:CBS_SIMPLE、CBS_DROPDOWN、CBS_DROPDOWNLIST和WS_CHILD。

CComboBoxEx每一项的属性,例如项的下标、图像、缩进值和文本字符串,保存在Win32结构COMBOBOXEXITEM中,结构中也包括了记录回调标记的成员。

COMBOBOXEXITEM结构如下:

typedef struct {

UINT mask;

int iItem;

LPTSTR pszText;

int cchTextMax;

int iImage;

int iSelectedImage;

int iOverlay;

int iIndent;

LPARAM lParam;

} COMBOBOXEXITEM, *PCOMBOBOXEXITEM;

成员说明:

UNIT屏蔽 一组位标志,指定使用此结构时执行哪些操作。它可以是以下标志的组合:

CBEIF_DI_SETITEM

CBEIF_IMAGE

CBEIF_INDENT

CBEIF_LPARAM

CBEIF_OVERLAY

CBEIF_SELECTEDIMAGE

CBEIF_TEXT

例如,如果在一个操作中需要设置或者转储图像字段时,则设置CBEIF_IMAGE标志

int iItem 基于零索引的扩展组合框项数

LPSTR pszText 包含或者是接收项文本的字符串缓冲区指针,如果想得到字符串内容,此单元必须设置为接收字符串指针,字符串长度在cchTextMax中指定。

int cchTextMax 在pszText可以获取的字符串缓冲区长度,当指定字符串文本内容时,此单元被忽略

int iImage 图像列表中基于零的图像索引,用于表示"未选定"的状态

int iSelectedImage 在图像列表中基于零的图像索引,用于表示"选定"的状态

int iOverlay 图像列表中图像的索引,用于覆盖当前的图像

int iIndent 10像素缩进间隔的数量

LPARAM lParam 该项的32位参数

CComboBoxEx类的成员函数:

CComboBoxEx  构造函数,构造一个CComboBoxEx对象

Create 初始化函数,创建组合框并和CComboBoxEx对象相联系

DeleteItem 从组合框控件中删除一个项

GetIttem 检索组合框中某个项的相关信息

InsertItem 在组合框控件中插入一项

SetItem 设置组合框中某个项的属性

HasEditChanged 检测用户是否改变了组合框中编辑控件的内容

GetExtendedStyle 检索在组合框上采用的扩展风格

GetExtendedStyle 设置组合框的扩展风格

GetEditCtrl 检索组合框中编辑控件的句柄

GetComboBoxCtrl 取得指向子组合框控件的指针

GetImageList 取得指向在组合框控件中图像列表的指针。

SetImageList 为组合框控件设置一个图像列表。

主要成员函数说明:

1、CComboBoxEx::SetItem

函数原型:BOOL SetItem( const COMBOBOXEXITEM* pCBItem );

返回值:调用成功时,返回非零值,否则为0。

参数:

pCBItem 指向用于存放项目信息的COMBOBOXEXITEM结构的一个指针。

2、CComboBoxEx::SetImageList

函数原型:CImageList* SetImageList( CImageList* pImageList );

返回值:返回一个CImageList对象指针,指明此前CComboBoxEx控件采用的图像列表。如果此前没有设置图像列表,则返回NULL。

参数:

pImageList CImageList对象指针,指明待设置的图像列表。

说明:如果改变了编辑控件的缺省高度,在调用SetImageList以后需要用Win32函数SetWindowPos来改变控件的大小,否则显示会出错。返回值指向的CImageList对象是一个临时对象,系统将在下一个空闲处理中删除它。

3、CComboBoxEx::GetItem

函数原型:BOOL GetItem( COMBOBOXEXITM* pCBItem );

返回值:调用成功时返回非零值,否则为0。

参数:

pCBItem 用来存放项信息的COMBOBOXEXITM结构的指针。

在CComboBoxEx类中添加了一些新的成员函数来实现新的功能:首先你需要调用CImageList* SetImageList( CImageList* pImageList );来设置ImageList,然后调用

int InsertItem( const COMBOBOXEXITEM* pCBItem );来添加行,其中COMBOBOXEXITEM定义如下:

typedef struct { UINT mask;       int iItem;       LPTSTR pszText;      int cchTextMax;       int iImage;       int iSelectedImage;      int iOverlay;       int iIndent;       LPARAM lParam;} COMBOBOXEXITEM, *PCOMBOBOXEXITEM;

你需要设置mask=CBEIF_IMAGE CBEIF_TEXT,并设置iItem为插入位置,设置pszText为显示字符串,设置iImage为显示的图标索引。下面的代码演示了如何进行插入:

/*m_cbeWnd 为已经创建的CComboBox对象

m_list 为CImageList对象IDB_IMG 为16*(16*4)的位图,每个图片为16*16共4个图标*/

m_list.Create(IDB_IMG,16,4,RGB(0,0,0));

m_cbeWnd.SetImageList(&m_list);

COMBOBOXEXITEM insItem;

insItem.mask=CBEIF_IMAGE|CBEIF_TEXT;

insItem.iItem=0;

insItem.iImage=0;

insItem.pszText="Line 1";

m_cbeWnd.InsertItem(&insItem);

insItem.iItem=1;

insItem.iImage=1;

insItem.pszText="Line 2";

m_cbeWnd.InsertItem(&insItem);

通过调用int DeleteItem( int iIndex );来删除行,并指明行的位置。

通过调用BOOL GetItem( COMBOBOXEXITEM* pCBItem )/BOOL SetItem( const COMBOBOXEXITEM* pCBItem );来得到/设置行数据。

CComboBoxEx 扩展组合框相关推荐

  1. EasyUI中Combox组合框的简单使用

    场景 效果 用法 从带有预定义结构的 <select> 元素创建组合框(combobox). <select id="cc" class="easyui ...

  2. 向工作表中添加列表框或组合框

    http://office.microsoft.com/zh-cn/excel-help/HP010236681.aspx 添加列表框(表单控件) 如果"开发工具"选项卡未显示,请 ...

  3. Combo Box (组合框)控件的使用方法

    Combo Box (组合框)控件很简单,可以节省空间.从用户角度来看,这个控件是由一个文本输入控件和一个下拉菜单组成的.用户可以从一个预先定义的列表里选择一个选项,同时也可以直接在文本框里面输入文本 ...

  4. 组合框里添加复选框的方法

    组合框可以看作是列表框和文本框的组合,因其占据的空间少,使用操作方便,常被界面设计人员用于界面开发设计中,在有限个输入的条件下,组合框常用来代替文本框,这样从用户使用角度来看,更趋人性化,所见即所得. ...

  5. 组合框控件(combobox)

    组合框把一个编辑框和一个单选择列表框结合在了一起.用户既可以在编辑框中输入,也可以从列表框中选择一个列表项来完成输入.组合框分为简易式(Simple combo box).下拉式(Drop-down ...

  6. VC++中combo box(组合框)控件使用说明/MFC COMBOBOX的使用

    转自:不知道... Combo Box (组合框)控件很简单,可以节省空间.从用户角度来看,这个控件是由一个文本输入控件和一个下拉菜单组成的.用户可以从一个预先定义的列表里选择一个选项,同时也可以直接 ...

  7. 图形界面 XI: 表格单元中的文本编辑框和组合框 (统合构建15)

    内容 概述 调整窗口大小 表格单元中的文本框和组合框 应用测试 结束语 概述 首篇文章 图形界面 I: 函数库结构的准备 (第 1 章) 详细研究了这个函数库.每篇文章的末尾, 附加了当前开发阶段的完 ...

  8. MFC组合框控件总结及用法示例

    Combo Box (组合框)控件很简单,可以节省空间.从用户角度来看,这个控件是由一个文本输入控件和一个下拉菜单组成的.用户可以从一个预先定义的列表里选择一个选项,同时也可以直接在文本框里面输入文本 ...

  9. MFC 组合框的用法大全

    Combo Box (组合框)控件很简单,可以节省空间.从用户角度来看,这个控件是由一个文本输入控件和一个下拉菜单组成的.用户可以从一个预先定义的列表里选择一个选项,同时也可以直接在文本框里面输入文本 ...

  10. 调整下拉框的宽度_调整组合框下拉宽度的大小

    调整下拉框的宽度 The TComboBox component combines an edit box with a scrollable "pick" list. Users ...

最新文章

  1. WordPress更新时提示无法连接到FTP服务器的解决方案
  2. 人工智能与大数据的耦合,将会怎么影响我们的生活
  3. 保驾护航金三银四,100%好评!
  4. runtime如何实现weak属性
  5. mysql 逻辑备份导入数据库_mysql逻辑备份(mysql dump的使用)
  6. python读写文件操作_详解Python文件读写操作
  7. J2EE基础之Web服务简介
  8. appium+python自动化57-chromedriver与chrome版本
  9. wordpress二次开发技巧-functions.php篇
  10. vue保存页面的值_vue中使用localStorage存储信息
  11. virtualbox报错:Failed, trying without DKMS的解决方案
  12. 一主多备几影响 oracle,1个主库配置多个备库的问题
  13. RK3288 查看时钟树
  14. windows服务启动tomcat内存溢出问题解决方案
  15. 入行网络工程师一年的心得体会
  16. windows GDI+ 绘图的简单封装
  17. 【无标题】前端电子签名的canvas画板
  18. 解决vue + elementUI 渲染图片问题
  19. 无法启用IE代理,EasyConnect不支持自动检测设置,请手动配置代理服务器的IP和端口后重试
  20. 体验IPTV,我们离三网合一还有多远...?

热门文章

  1. 19_完成“我的订单”
  2. Luogu1373 小a和uim之大逃离
  3. Fiddler中常用的方法
  4. 网络基础知识(黑马教程笔记)-7-异步编程和Promise
  5. matlab abs()le8,《MATLAB_语言与数学运算》练习答案
  6. spring框架实现实例化和依赖注入的方式分别是什么_Spring 面试问题
  7. matlab执行m文件语句,matlab 编写m文件函数
  8. Mybatis复杂结果集映射(详细)
  9. acer软件保护卡怎么解除_外观精致性能强,配置丰富重量轻、宏碁(Acer)墨舞EX214轻薄笔记本 深度评测...
  10. html 自动连接websocket_SpringBoot + WebSocket 实现实时聊天