CComboBoxEx 扩展组合框
来源:互联网 发布:百度地图js api 标注 编辑:程序博客网 时间:2024/05/16 09:51
类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 扩展组合框
- 扩展组合框的使用
- CComboBoxEx 动态创建时下拉框的长度
- CComboBoxEx m_DepComb;
- 扩展和组合接口
- CComboBoxEx控件使用
- CComboBoxEx控件使用示例
- CComboBoxEx控件使用示例
- CComboBoxEx控件使用示例
- CComboboxEx文本显示问题
- CComboBoxEx 插入,删除等
- MFC:CComboBoxEx使用总结
- CComboBoxEx显示256色图片
- CComboBoxEx显示256色图片
- CComboBox和CComboBoxEx用法介绍
- MFC类的范例:CComboBoxEx
- CComboBoxEx中不能使用AddString
- 可扩展组合框按钮-----对应于书中的Shape-Changing Dialogs
- 数组与指针的区别
- C++中引用和指针的区别
- Java中的线程间协作
- Java靜態初始化與構造方法的執行順序
- shell 中 关于 $
- CComboBoxEx 扩展组合框
- 重定向 关闭文件描述符等
- 重定向 禁止命令输出
- 创建临时文件 临时目录
- tee命令 管道
- 结构型模5:外观模式(Façade Pattern)
- Shell 使用函数输出
- 静态存储区、堆和栈的区别
- Shell 向函数传递 数组