CComboBoxEx 类
通过为图像列表提供支持扩展组合框控件。
语法
class CComboBoxEx : public CComboBox
成员
公共构造函数
名称 | 描述 |
---|---|
CComboBoxEx::CComboBoxEx | 构造 CComboBoxEx 对象。 |
公共方法
名称 | 描述 |
---|---|
CComboBoxEx::Create | 创建组合框并将其附加到 CComboBoxEx 对象。 |
CComboBoxEx::CreateEx | 创建具有指定 Windows 扩展样式的组合框并将其附加到 ComboBoxEx 对象。 |
CComboBoxEx::DeleteItem | 从 ComboBoxEx 控件中移除项。 |
CComboBoxEx::GetComboBoxCtrl | 检索指向子组合框控件的指针。 |
CComboBoxEx::GetEditCtrl | 检索 ComboBoxEx 控件的编辑控件部分的句柄。 |
CComboBoxEx::GetExtendedStyle | 检索用于 ComboBoxEx 控件的扩展样式。 |
CComboBoxEx::GetImageList | 检索指向分配给 ComboBoxEx 控件的图像列表的指针。 |
CComboBoxEx::GetItem | 检索给定 ComboBoxEx 项的项信息。 |
CComboBoxEx::HasEditChanged | 确定用户是否已通过键入来更改 ComboBoxEx 编辑控件的内容。 |
CComboBoxEx::InsertItem | 在 ComboBoxEx 控件中插入新项。 |
CComboBoxEx::SetExtendedStyle | 设置 ComboBoxEx 控件中的扩展样式。 |
CComboBoxEx::SetImageList | 设置 ComboBoxEx 控件的图像列表。 |
CComboBoxEx::SetItem | 设置 ComboBoxEx 控件中项的属性。 |
CComboBoxEx::SetWindowTheme | 设置扩展组合框控件的视觉样式。 |
备注
通过使用 CComboBoxEx
创建组合框控件后,不再需要实现自己的图像绘制代码, 而是改用 CComboBoxEx
访问图像列表中的图像。
图像列表支持
在标准组合框中,组合框的所有者负责通过将组合框创建为所有者绘制控件来绘制图像。 使用 CComboBoxEx
时,无需设置绘制样式 CBS_OWNERDRAWFIXED 和 CBS_HASSTRINGS,因为它们是隐含的。 否则,必须编写代码来执行绘制操作。 CComboBoxEx
控件支持每个项最多三个图像:一个用于选定状态,一个用于未选定状态,一个用于覆盖图像。
样式
CComboBoxEx
支持 CBS_SIMPLE、CBS_DROPDOWN、CBS_DROPDOWNLIST 和 WS_CHILD 样式。 该控件忽略创建窗口时传递的所有其他样式。 创建窗口后,可以通过调用 CComboBoxEx
成员函数 SetExtendedStyle 来提供其他组合框样式。 借助这些样式,可以:
将列表中的字符串搜索设置为区分大小写。
创建组合框控件,该控件使用斜杠(“/”)、反斜杠(“\”)和句点(“.”)字符作为单词分隔符。 允许用户通过键盘快捷方式 Ctrl + 箭头进行单词间的跳转。
设置组合框控件以显示或不显示图像。 如果不显示图像,组合框可以删除适应图像的文本缩进。
创建窄的组合框控件,包括调整该组合框大小,使其可以剪裁其包含的较宽的组合框。
使用 CComboBoxEx 中进一步介绍了这些样式标志。
项保留和回调项属性
项信息(如项和图像的索引、缩进值和文本字符串)存储在 Win32 结构 COMBOBOXEXITEM 中,如 Windows SDK 中所述。 该结构还包含与回调标志对应的成员。
有关详细、概念性的介绍,请参阅使用 CComboBoxEx。
继承层次结构
CComboBoxEx
要求
标头: afxcmn.h
CComboBoxEx::CComboBoxEx
调用此成员函数来创建 CComboBoxEx
对象。
CComboBoxEx();
CComboBoxEx::Create
创建组合框并将其附加到 CComboBoxEx
对象。
virtual BOOL Create(
DWORD dwStyle,
const RECT& rect,
CWnd* pParentWnd,
UINT nID);
参数
dwStyle
指定应用于组合框的组合框样式组合。 有关样式的详细信息,请参阅下面的备注。
rect
对 CRect 对象或 RECT 结构的引用,它是组合框的位置和大小。
pParentWnd
指向 CWnd 对象的指针,该对象是组合框(通常是 CDialog
)的父窗口。 不得为 NULL。
nID
指定组合框的控件 ID。
返回值
如果成功创建对象,则为非零;否则为 0。
注解
执行两个步骤创建 CComboBoxEx
对象:
调用 CComboBoxEx 来构造
CComboBoxEx
对象。调用此成员函数,该函数创建扩展的 Windows 组合框并将其附加到
CComboBoxEx
对象。
调用 Create
时,MFC 将初始化通用控件。
创建组合框时,可以指定以下任意或全部组合框样式:
CBS_SIMPLE
CBS_DROPDOWN
CBS_DROPDOWNLIST
CBS_AUTOHSCROLL
WS_CHILD
忽略创建窗口时传递的所有其他样式。 ComboBoxEx
控件还支持提供其他功能的扩展样式。 Windows SDK 的 ComboBoxEx 控件扩展样式中介绍了这些样式。 通过调用 SetExtendedStyle 设置这些样式。
如果要将扩展窗口样式与控件一起使用,请调用 CreateEx 而不是 Create
。
CComboBoxEx::CreateEx
调用此函数可以创建扩展组合框控件(子窗口)并将其与 CComboBoxEx
对象相关联。
virtual BOOL CreateEx(
DWORD dwExStyle,
DWORD dwStyle,
const RECT& rect,
CWnd* pParentWnd,
UINT nID);
参数
dwExStyle
指定要创建的控件的扩展样式。 有关扩展 Windows 样式的列表,请参阅 Windows SDK 中 CreateWindowEx 的 dwExStyle 参数。
dwStyle
组合框控件的样式。 有关样式列表,请参阅创建。
rect
对 RECT 结构的引用,该结构描述了要在客户端坐标 pParentWnd 中创建的窗口的大小和位置。
pParentWnd
指向作为控件父级的窗口的指针。
nID
控件的子窗口 ID。
返回值
如果成功,则不为 0;否则为 0。
备注
使用 CreateEx
(而不是 Create
)应用由 Windows 扩展样式前缀 WS_EX_ 指定的扩展 Windows 样式。
CreateEx
使用 dwExStyle 指定的扩展 Windows 样式创建控件。 必须使用 SetExtendedStyle 设置特定于扩展组合框控件的扩展样式。 例如,使用 CreateEx
设置 WS_EX_CONTEXTHELP 等样式,但使用 SetExtendedStyle
设置 CBES_EX_CASESENSITIVE 等样式。 有关详细信息,请参阅 Windows SDK 的 ComboBoxEx 控件扩展样式主题中所述的样式。
CComboBoxEx::DeleteItem
从 ComboBoxEx
控件中移除项。
int DeleteItem(int iIndex);
参数
iIndex
要删除的项的从零开始的索引。
返回值
控件中剩余的项数。 如果 iIndex 无效,则该函数返回 CB_ERR。
备注
此成员函数实现消息 CBEM_DELETEITEM 的功能,如 Windows SDK 中所述。 调用 DeleteItem 时,将向父窗口发送包含 CBEN_DELETEITEM 通知的 WM_NOTIFY 消息。
CComboBoxEx::GetComboBoxCtrl
调用此成员函数可以获取指向 CComboBoxEx
对象内组合框控件的指针。
CComboBox* GetComboBoxCtrl();
返回值
一个指向 CComboBox
对象的指针。
备注
CComboBoxEx
控件由一个父窗口构成,该窗口封装了一个 CComboBox
。
返回值指向的 CComboBox
对象是临时对象,会在下一个空闲处理时间销毁。
CComboBoxEx::GetEditCtrl
调用此成员函数可以获取指向组合框编辑控件的指针。
CEdit* GetEditCtrl();
返回值
指向 CEdit 对象的指针。
备注
使用 CBS_DROPDOWN 样式创建 CComboBoxEx
控件时,该控件使用编辑框。
返回值指向的 CEdit
对象是临时对象,会在下一个空闲处理时间销毁。
CComboBoxEx::GetExtendedStyle
调用此成员函数可以获取用于 CComboBoxEx
控件的扩展样式。
DWORD GetExtendedStyle() const;
返回值
包含用于组合框控件的扩展样式的 DWORD 值。
备注
有关这些样式的详细信息,请参阅 Windows SDK 中的 ComboBoxEx 控件扩展样式。
CComboBoxEx::GetImageList
调用此成员函数可以获取指向 CComboBoxEx
控件所用图像列表的指针。
CImageList* GetImageList() const;
返回值
指向 CImageList 对象的指针。 如果失败,此成员函数将返回 NULL。
备注
返回值指向的 CImageList
对象是临时对象,会在下一个空闲处理时间销毁。
CComboBoxEx::GetItem
检索给定 ComboBoxEx
项的项信息。
BOOL GetItem(COMBOBOXEXITEM* pCBItem);
参数
pCBItem
指向将接收项信息的 COMBOBOXEXITEM 结构的指针。
返回值
如果操作成功,则为非零;否则为 0。
注解
此成员函数实现消息 CBEM_GETITEM 的功能,如 Windows SDK 中所述。
CComboBoxEx::HasEditChanged
确定用户是否已通过键入来更改 ComboBoxEx
编辑控件的内容。
BOOL HasEditChanged();
返回值
如果用户已在控件的编辑框中键入内容,则为非零;否则为 0。
注解
此成员函数实现消息 CBEM_HASEDITCHANGED 的功能,如 Windows SDK 中所述。
CComboBoxEx::InsertItem
在 ComboBoxEx
控件中插入新项。
int InsertItem(const COMBOBOXEXITEM* pCBItem);
参数
pCBItem
指向将接收项信息的 COMBOBOXEXITEM 结构的指针。 此结构包含项的回调标志值。
返回值
如果成功,则为插入新项的索引,否则为 -1。
备注
调用 InsertItem
时,将向父窗口发送包含 CBEN_INSERTITEM 通知的 WM_NOTIFY 消息。
CComboBoxEx::SetExtendedStyle
调用此成员函数可以设置用于组合框扩展控件的扩展样式。
DWORD SetExtendedStyle(
DWORD dwExMask,
DWORD dwExStyles);
参数
dwExMask
DWORD 值,该值指示 dwExStyles 中将受影响的样式。 仅会更改 dwExMask 中的扩展样式。 所有其他样式将按原样保留。 如果此参数为零,则 dwExStyles 中的所有样式都将受到影响。
dwExStyles
DWORD 值,该值包含要为组合框控件设置的控件扩展样式。
返回值
DWORD 值,该值包含之前用于控件的扩展样式。
注解
有关这些样式的详细信息,请参阅 Windows SDK 中的 ComboBoxEx 控件扩展样式。
若要创建具有扩展窗口样式的组合框扩展控件,请使用 CreateEx。
CComboBoxEx::SetImageList
设置 ComboBoxEx
控件的图像列表。
CImageList* SetImageList(CImageList* pImageList);
参数
pImageList
指向 CImageList
对象的指针,该对象包含要与 CComboBoxEx
控件一起使用的图像。
返回值
指向 CImageList 对象的指针,该对象包含 CComboBoxEx
控件之前使用的图像。 如果之前未设置图像列表,则为 NULL。
备注
此成员函数实现消息 CBEM_SETIMAGELIST 的功能,如 Windows SDK 中所述。 如果更改默认编辑控件的高度,请调用 Win32 函数 SetWindowPos 以在调用 SetImageList
后调整控件的大小,否则不会正确显示该控件。
返回值指向的 CImageList
对象是临时对象,会在下一个空闲处理时间销毁。
CComboBoxEx::SetItem
设置 ComboBoxEx
控件中项的属性。
BOOL SetItem(const COMBOBOXEXITEM* pCBItem);
参数
pCBItem
指向将接收项信息的 COMBOBOXEXITEM 结构的指针。
返回值
如果操作成功,则为非零;否则为 0。
备注
此成员函数实现消息 CBEM_SETITEM 的功能,如 Windows SDK 中所述。
CComboBoxEx::SetWindowTheme
设置扩展组合框控件的视觉样式。
HRESULT SetWindowTheme(LPCWSTR pszSubAppName);
参数
pszSubAppName
指向 Unicode 字符串的指针,该字符串包含要设置的扩展组合框视觉样式。
返回值
不使用返回值。
备注
此成员函数模拟消息 CBEM_SETWINDOWTHEME 的功能,如 Windows SDK 中所述。