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

继承层次结构

CObject

CCmdTarget

CWnd

CComboBox

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 对象:

  1. 调用 CComboBoxEx 来构造 CComboBoxEx 对象。

  2. 调用此成员函数,该函数创建扩展的 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 中所述。

另请参阅

MFC 示例 MFCIE
CComboBox 类
层次结构图
CComboBox 类