最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

CComboBoxEx 扩展CComboBox 显示图标

来源:动视网 责编:小OO 时间:2025-09-27 16:13:05
文档

CComboBoxEx 扩展CComboBox 显示图标

CComboBoxEx扩展CComboBox显示图标  类CComboBoxEx从CComboBox类扩展而来,它最大的特点是支持图像列表。在标准的CComboBox中,绘制图像需要程序员把组合框控件设为自定义风格(CBS_OWNERDRAWFIXED或者CBS_OWNERDRAWVARIABLE以及CBS_HASSTRINGS)。使用CComboBoxEx则不需要这些繁琐的步骤,因为CComboBoxEx类中已经实现了处理图像的功能,它可以直接存取图形列表中的图像。在CComboBoxEx类
推荐度:
导读CComboBoxEx扩展CComboBox显示图标  类CComboBoxEx从CComboBox类扩展而来,它最大的特点是支持图像列表。在标准的CComboBox中,绘制图像需要程序员把组合框控件设为自定义风格(CBS_OWNERDRAWFIXED或者CBS_OWNERDRAWVARIABLE以及CBS_HASSTRINGS)。使用CComboBoxEx则不需要这些繁琐的步骤,因为CComboBoxEx类中已经实现了处理图像的功能,它可以直接存取图形列表中的图像。在CComboBoxEx类
CComboBoxEx 扩展CComboBox 显示图标  

类CComboBoxEx从CComboBox类扩展而来,它最大的特点是支持图像列表。在标准的CComboBox中,绘制图像需要程序员把组合框控件设为自定义风格(CBS_OWNERDRAWFIXED或者CBS_OWNERDRAWVARIABLE以及CBS_HASSTRINGS)。使用CComboBoxEx则不需要这些繁琐的步骤,因为CComboBoxEx类中已经实现了处理图像的功能,它可以直接存取图形列表中的图像。在CComboBoxEx类中,每项最多可有3个图像:一个代表选中状态,一个代表未选中状态,另一个代表覆盖的图像。CComboBoxEx支持四种风格:CBS_SIMPLE、CBS_DROPDOWN、CBS_DROPDOWNLIST和WS_CHILD。创建窗口时如果提供其它的风格,则都将被忽略。但是在窗口创建完成之后,可以调用成员函数SetExtendedStyle把组合框设置成其它的风格。

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 扩展CComboBox 显示图标

CComboBoxEx扩展CComboBox显示图标  类CComboBoxEx从CComboBox类扩展而来,它最大的特点是支持图像列表。在标准的CComboBox中,绘制图像需要程序员把组合框控件设为自定义风格(CBS_OWNERDRAWFIXED或者CBS_OWNERDRAWVARIABLE以及CBS_HASSTRINGS)。使用CComboBoxEx则不需要这些繁琐的步骤,因为CComboBoxEx类中已经实现了处理图像的功能,它可以直接存取图形列表中的图像。在CComboBoxEx类
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top