CMFCToolBarComboBoxButton 类
包含组合框控件(CComboBox 类)的工具栏按钮。
语法
class CMFCToolBarComboBoxButton : public CMFCToolBarButton
成员
公共构造函数
名称 | 描述 |
---|---|
CMFCToolBarComboBoxButton::CMFCToolBarComboBoxButton | 构造一个 CMFCToolBarComboBoxButton 。 |
公共方法
备注
若要将组合框按钮添加到工具栏,请执行以下步骤:
在父级工具栏资源中保留该按钮的虚拟资源 ID。
构造一个
CMFCToolBarComboBoxButton
对象。在处理 AFX_WM_RESETTOOLBAR 消息的消息处理程序中,使用 CMFCToolBar::ReplaceButton 将虚拟按钮替换为新的组合框按钮。
有关详细信息,请参阅演练:将控件放在工具栏上。 有关组合框工具栏按钮的示例,请参阅示例项目 VisualStudioDemo。
示例
下面的示例演示了如何使用 CMFCToolBarComboBoxButton
类中的各种方法。 该示例演示如何启用编辑和组合框,设置应用程序中组合框按钮的垂直位置,设置下移列表框时列表框的高度,在应用程序中设置组合框按钮的平面样式外观,并设置组合框按钮编辑框中的文本。 此代码片段是 Visual Studio 演示示例的一部分。
// CObList listButtons
// POSITION posCombo
CMFCToolBarComboBoxButton* pCombo = DYNAMIC_DOWNCAST(CMFCToolBarComboBoxButton, listButtons.GetNext(posCombo));
pCombo->EnableWindow(true);
pCombo->SetCenterVert();
pCombo->SetDropDownHeight(25);
pCombo->SetFlatMode();
pCombo->SetText(_T("this is a combo box"));
继承层次结构
要求
标头: afxtoolbarcomboboxbutton.h
CMFCToolBarComboBoxButton::AddItem
将唯一项追加到列表框。
virtual INT_PTR AddItem(
LPCTSTR lpszItem,
DWORD_PTR dwData=0);
参数
lpszItem
[in] 要添加到列表框的项的文本。
dwData
[in] 与要添加到列表框的项关联的数据。
返回值
列表框中最后一项的索引。
备注
对列表框样式进行排序时,请勿使用此方法。
如果项文本已位于列表框中,新数据将随现有项一起存储。 项的搜索区分大小写。
CMFCToolBarComboBoxButton::AddSortedItem
按 Compare 方法定义的顺序将项添加到列表框中。
virtual INT_PTR AddSortedItem(
LPCTSTR lpszItem,
DWORD_PTR dwData=0);
参数
lpszItem
[in] 要添加到列表框的项的文本。
dwData
[in] 与要添加到列表框的项关联的数据。
返回值
添加到列表框中的项目的索引。
备注
使用此函数可按特定顺序将项添加到列表框。
CMFCToolBarComboBoxButton::CanBeStretched
指示组合框按钮大小是否可以更改。
virtual BOOL CanBeStretched() const;
返回值
返回 TRUE。
CMFCToolBarComboBoxButton::CMFCToolBarComboBoxButton
构造 CMFCToolBarComboBoxButton 对象。
CMFCToolBarComboBoxButton(
UINT uiID,
int iImage,
DWORD dwStyle=CBS_DROPDOWNLIST,
int iWidth=0);
参数
uiID
[in] 新按钮的命令 ID。
iImage
[in] 与新按钮关联的图像的图像索引。
dwStyle
[in] 新按钮的样式。
iWidth
[in] 新按钮的宽度(以像素为单位)。
备注
默认宽度为 150 个像素。
有关工具栏按钮样式的列表,请参阅工具栏控件样式
CMFCToolBarComboBoxButton::ClearData
删除用户定义的数据。
virtual void ClearData();
备注
默认情况下,此方法不执行任何操作。 如果要删除任何用户定义的数据,请在派生类中重写此方法。
CMFCToolBarComboBoxButton::Compare
比较两个字符串。
virtual int Compare(
LPCTSTR lpszItem1,
LPCTSTR lpszItem2);
参数
lpszItem1
[in] 要比较的第一个字符串。
lpszItem2
[in] 要比较的第二个字符串。
返回值
一个值,该值指示字符串之间的区分大小写的词典关系。 下表列出了可能的值:
值 | 说明 |
---|---|
<0 | 第一个字符串小于第二个。 |
0 | 第一个字符串等于第二个。 |
>0 | 第一个字符串大于第二个。 |
备注
重写此方法以更改项目在列表框中的排序方式。
比较是区分大小写的。
仅从 AddSortedItem 方法调用此方法。
CMFCToolBarComboBoxButton::CopyFrom
将指定 CMFCToolBarComboBoxButton
的状态复制到当前对象。
virtual void CopyFrom(const CMFCToolBarButton& src);
参数
src
[in] 源 CMFCToolBarComboBoxButton
对象。
CMFCToolBarComboBoxButton::CreateCombo
为组合框按钮创建新的组合框。
virtual CComboBox* CreateCombo(
CWnd* pWndParent,
const CRect& rect);
参数
pWndParent
[in] 指向按钮的父窗口的指针。
rect
[in] 组合框的边界矩形。
返回值
方法成功时为指向新组合框的指针;否则为 NULL。
CMFCToolBarComboBoxButton::CreateEdit
为组合框按钮创建新的编辑框。
virtual CMFCToolBarComboBoxEdit* CreateEdit(
CWnd* pWndParent,
const CRect& rect,
DWORD dwEditStyle);
参数
pWndParent
[in] 指向按钮的父窗口的指针。
rect
[in] 新编辑框的边界矩形。
dwEditStyle
[in] 新编辑框的控件样式。
返回值
如果方法成功,则指向新组编辑框的指针;否则为 NULL。
注解
框架在为组合框按钮创建新的编辑框时调用此方法。 重写此方法以更改 CMFCToolBarComboBoxEdit 的创建方式。
CMFCToolBarComboBoxButton::DeleteItem
从列表框中删除指定的项。
BOOL DeleteItem(int iIndex);
BOOL DeleteItem(DWORD_PTR dwData);
BOOL DeleteItem(LPCTSTR lpszText);
参数
iIndex
[in] 要删除的项的从零开始的索引。
dwData
[in] 与要删除的项关联的数据。
lpszText
[in] 要删除的项的文本。 如果有多个项目具有相同的文本,则删除第一个项。
返回值
如果成功添加了项,则为 TRUE;否则为 FALSE。
备注
CMFCToolBarComboBoxButton::DuplicateData
复制用户定义的数据。
virtual void DuplicateData();
注解
默认情况下,此方法不执行任何操作。 如果要复制任何用户定义的数据,请在派生类中重写此方法。
CMFCToolBarComboBoxButton::EnableWindow
启用或禁用编辑框和组合框。
virtual void EnableWindow(BOOL bEnable = TRUE);
参数
bEnable
[in] TRUE 则启用编辑框和组合框;FALSE 则禁用编辑框和组合框。
备注
禁用后,控件无法激活并且无法接受用户输入。
CMFCToolBarComboBoxButton::ExportToMenuButton
使用组合框按钮命令 ID 将应用程序字符串表中的字符串复制到指定菜单。
virtual BOOL ExportToMenuButton(CMFCToolBarMenuButton& menuButton) const;
参数
menuButton
[out] 对菜单按钮的引用。
返回值
始终为 TRUE。
CMFCToolBarComboBoxButton::FindItem
返回列表框中包含指定字符串的第一项的索引。
int FindItem(LPCTSTR lpszText) const;
参数
lpszText
[in] 列表框中要搜索的文本。
返回值
项目的索引;如果未找到该项目,则为 CB_ERR。
备注
CMFCToolBarComboBoxButton::GetByCmd
获取指向具有指定命令 ID 的组合框按钮的指针。
static CMFCToolBarComboBoxButton* GetByCmd(
UINT uiCmd,
BOOL bIsFocus=FALSE);
参数
uiCmd
[in] 组合框按钮的命令 ID。
bIsFocus
[in] TRUE 则只搜索重点按钮;FALSE 则搜索所有按钮。
返回值
指向组合框按钮的指针;如果未找到按钮,则为 NULL。
备注
CMFCToolBarComboBoxButton::GetComboBox
返回指向组合框按钮中组合框的指针。
CComboBox* GetComboBox() const;
返回值
如果方法成功,则为指向 CComboBox 类对象的指针;否则为 NULL。
备注
CMFCToolBarComboBoxButton::GetContextMenuID
获取组合框按钮的快捷菜单资源 ID。
UINT GetContextMenuID();
返回值
快捷菜单资源 ID。
CMFCToolBarComboBoxButton::GetCount
返回列表框中的项数。
INT_PTR GetCount() const;
返回值
列表框中的项目数。
备注
CMFCToolBarComboBoxButton::GetCountAll
获取具有指定命令 ID 的组合框按钮的列表框中的项数。
static int GetCountAll(UINT uiCmd);
参数
uiCmd
[in] 组合框按钮的命令 ID。
返回值
列表框中的项数;否则,如果未找到组合框按钮,则为 CB_ERR。
备注
CMFCToolBarComboBoxButton::GetCurSel
获取列表框中当前所选项的索引。
int GetCurSel() const;
返回值
列表框中当前选定项的索引;如果未选择任何项目,则为 CB_ERR。
备注
列表框索引从零开始。
CMFCToolBarComboBoxButton::GetCurSelAll
返回具有指定命令 ID 的组合框按钮的列表框中当前选定项的索引。
static int GetCurSelAll(UINT uiCmd);
参数
uiCmd
[in] 组合框按钮的命令 ID。
返回值
列表框中当前选定项的索引;否则,如果未选择任何项或未找到组合框按钮,则为 CB_ERR。
注解
列表框索引从零开始。
CMFCToolBarComboBoxButton::GetEditCtrl
返回一个指向组合框按钮中的编辑框的指针。
virtual CEdit* GetEditCtrl();
返回值
如果方法成功,则为指向编辑框的指针;否则为 NULL。
备注
CMFCToolBarComboBoxButton::GetHwnd
返回组合框的窗口句柄。
virtual HWND GetHwnd();
返回值
窗口句柄,或如果组合框未与窗口对象关联,则为 NULL。
CMFCToolBarComboBoxButton::GetItem
返回与列表框中指定索引处的项关联的字符串。
LPCTSTR GetItem(int iIndex=-1) const;
参数
iIndex
[in] 列表框中项的从零开始的索引。
返回值
指向与项目关联的字符串的指针;否则,如果索引参数无效,或者索引参数为 -1 且组合框中没有选定项,则为 NULL。
备注
索引参数 -1 会返回当前选中项的字符串。
CMFCToolBarComboBoxButton::GetItemAll
返回一个字符串,该字符串与具有指定命令 ID 的组合框按钮列表框中具有指定索引的项相关联。
static LPCTSTR GetItemAll(
UINT uiCmd,
int iIndex=-1);
参数
uiCmd
[in] 组合框按钮的命令 ID。
iIndex
[in] 列表框中项的从零开始的索引。
返回值
如果方法成功,则为指向项字符串的指针;否则,如果索引无效、找不到组合框按钮,或索引为 -1、组合框中没有选定项,则为 NULL。
备注
索引参数 -1 会返回当前选中项的字符串。
CMFCToolBarComboBoxButton::GetItemData
返回与列表框中指定索引处的项关联的数据。
DWORD_PTR GetItemData(int iIndex=-1) const;
参数
iIndex
[in] 列表框中项的从零开始的索引。
返回值
与项关联的数据;如果项不存在,则为 0。
注解
索引参数为 -1 时返回与当前所选项关联的数据。
CMFCToolBarComboBoxButton::GetItemDataAll
返回一个字符串,该字符串与具有指定命令 ID 的组合框按钮列表框中具有指定索引的项相关联。
static DWORD_PTR GetItemDataAll(
UINT uiCmd,
int iIndex=-1);
参数
uiCmd
[in] 组合框按钮的命令 ID。
iIndex
[in] 列表框中项的从零开始的索引。
返回值
如果方法成功,则为与项关联的数据;否则,如果指定的索引无效,则为 0;如果未找到组合框按钮,则为 CB_ERR。
备注
索引参数为 -1 时返回与当前所选项关联的数据。
CMFCToolBarComboBoxButton::GetItemDataPtrAll
返回一个字符串,该字符串与具有指定命令 ID 的组合框按钮列表框中具有指定索引的项相关联。 此数据作为指针返回。
static void* GetItemDataPtrAll(
UINT uiCmd,
int iIndex=-1);
参数
uiCmd
[in] 组合框按钮的命令 ID。
iIndex
[in] 列表框中项的从零开始的索引。
返回值
如果方法成功,则为与项关联的指针;否则,如果出现错误,则为 -1;如果未找到组合框按钮,则为 NULL。
注解
CMFCToolBarComboBoxButton::GetPrompt
返回组合框按钮的提示字符串。
virtual CString GetPrompt() const;
返回值
提示字符串。
备注
该方法目前未实现。
CMFCToolBarComboBoxButton::GetText
获取编辑框中的文本。
LPCTSTR GetText() const;
返回值
编辑框中的文本。
备注
CMFCToolBarComboBoxButton::GetTextAll
获取具有指定命令 ID 的组合框按钮的编辑框中的文本。
static LPCTSTR GetTextAll(UINT uiCmd);
参数
uiCmd
[in] 指定组合框按钮的命令 ID。
返回值
如果方法成功,则编辑框中的文本;否则为 NULL。
注解
CMFCToolBarComboBoxButton::HasFocus
指示组合框当前是否具有焦点。
virtual BOOL HasFocus() const;
返回值
如果组合框当前具有焦点,则为 TRUE;否则为 FALSE。
备注
如果组合框的任何子窗口当前具有焦点,此方法也会返回 TRUE。
CMFCToolBarComboBoxButton::IsCenterVert
返回应用程序中组合框按钮的垂直位置。
static BOOL IsCenterVert();
返回值
如果按钮居中,则为 TRUE;如果按钮在顶部对齐,则为 FALSE。
备注
CMFCToolBarComboBoxButton::IsFlatMode
返回应用程序中组合框按钮的平面样式外观。
static BOOL IsFlatMode();
返回值
如果按钮具有平面样式,则为 TRUE;否则为 FALSE。
备注
组合框按钮的默认平面样式为 FALSE。
CMFCToolBarComboBoxButton::IsOwnerOf
指示指定的句柄是与组合框按钮相关联,还是与其子句柄之一相关联。
virtual BOOL IsOwnerOf(HWND hwnd);
参数
hwnd
[in] 窗口句柄。
返回值
如果句柄与组合框按钮或其子级之一关联,则为 TRUE,否则,为 FALSE。
CMFCToolBarComboBoxButton::IsRibbonButton
指示组合框按钮是否位于功能区面板上。
BOOL IsRibbonButton() const;
返回值
始终为 FALSE。
备注
默认情况下,此方法始终返回 FALSE,这意味着组合框按钮永远不会显示在功能区面板上。
CMFCToolBarComboBoxButton::IsWindowVisible
返回组合框按钮的可见性状态。
virtual BOOL IsWindowVisible();
返回值
组合框按钮的可见性状态。
CMFCToolBarComboBoxButton::NotifyCommand
指示组合框按钮是否处理消息。
virtual BOOL NotifyCommand(int iNotifyCode);
参数
iNotifyCode
[in] 与命令关联的通知消息。
返回值
组合框按钮是否处理消息。
CMFCToolBarComboBoxButton::OnAddToCustomizePage
将按钮添加到“自定义”对话框时由框架调用。
virtual void OnAddToCustomizePage();
CMFCToolBarComboBoxButton::OnCalculateSize
由框架调用以计算按钮的大小。
virtual SIZE OnCalculateSize(
CDC* pDC,
const CSize& sizeDefault,
BOOL bHorz);
参数
pDC
[in] 显示组合框按钮的设备上下文。
sizeDefault
[in] 组合框按钮的默认大小。
bHorz
[in] 父工具栏的停靠状态。 工具栏水平停靠时为 TRUE,工具栏垂直停靠时为 FALSE。
返回值
一个 SIZE
结构,其中包含组合框按钮的维度(以像素为单位)。
CMFCToolBarComboBoxButton::OnChangeParentWnd
将组合框按钮插入新工具栏时由框架调用。
virtual void OnChangeParentWnd(CWnd* pWndParent);
参数
pWndParent
[in] 指向新父工具栏的指针。
CMFCToolBarComboBoxButton::OnClick
当用户单击组合框按钮时,由框架调用。
virtual BOOL OnClick(
CWnd* pWnd,
BOOL bDelay = TRUE);
参数
pWnd
[in] 指向组合框按钮的父窗口的指针。
bDelay
[in] 保留以供在派生类中使用。
返回值
如果方法处理了事件,则为 TRUE;否则为 FALSE。
CMFCToolBarComboBoxButton::OnCtlColor
当用户更改父工具栏颜色以设置组合框按钮颜色时由框架调用。
virtual HBRUSH OnCtlColor(
CDC* pDC,
UINT nCtlColor);
参数
pDC
[in] 显示组合框按钮的设备上下文。
nCtlColor
[in] 未使用。
返回值
框架用来绘制组合框按钮背景的画笔的句柄。
备注
此方法还设置组合框按钮文本颜色。
CMFCToolBarComboBoxButton::OnDraw
由框架调用以使用指定的样式和选项绘制组合框按钮。
virtual void OnDraw(
CDC* pDC,
const CRect& rect,
CMFCToolBarImages* pImages,
BOOL bHorz = TRUE,
BOOL bCustomizeMode = FALSE,
BOOL bHighlight = FALSE,
BOOL bDrawBorder = TRUE,
BOOL bGrayDisabledButtons = TRUE);
参数
Pdc
[in] 显示按钮的设备上下文。
rect
[in] 按钮的范围框。
pImages
[in] 与按钮关联的图像集合。
bHorz
[in] 父工具栏的停靠状态。 工具栏水平停靠时为 TRUE,工具栏垂直停靠时为 FALSE。
bCustomizeMode
[in] 应用程序是否处于自定义模式。
bHighlight
[in] 是否突出显示了组合框按钮。
bDrawBorder
[in] 是否绘制带边框的组合框按钮。
bGrayDisabledButtons
[in] 如果为 TRUE,则绘制已禁用的阴影按钮;如果为 FALSE,则使用禁用的图像集合。
CMFCToolBarComboBoxButton::OnDrawOnCustomizeList
由框架调用,以在“自定义”对话框的“命令”窗格中绘制组合框按钮。
virtual int OnDrawOnCustomizeList(
CDC* pDC,
const CRect& rect,
BOOL bSelected);
参数
pDC
[in] 显示组合框按钮的设备上下文。
rect
[in] 组合框按钮的边界矩形。
bSelected
[in] 如果选择了组合框按钮,则为 TRUE;否则为 FALSE。
返回值
组合框按钮的宽度(以像素为单位)。
CMFCToolBarComboBoxButton::OnGlobalFontsChanged
由框架调用,在应用程序字体更改时设置组合框按钮字体。
virtual void OnGlobalFontsChanged();
CMFCToolBarComboBoxButton::OnMove
由框架调用,在父工具栏移动时更改组合框按钮的位置。
virtual void OnMove();
CMFCToolBarComboBoxButton::OnShow
当组合框按钮隐藏或显示时,由框架调用。
virtual void OnShow(BOOL bShow);
参数
bShow
[in] 是隐藏还是显示组合框按钮。
CMFCToolBarComboBoxButton::OnSize
当父工具栏更改大小时,由框架调用以更改组合框按钮的大小。
virtual void OnSize(int iSize);
参数
iSize
[in] 组合框按钮的新宽度。
CMFCToolBarComboBoxButton::OnUpdateToolTip
当用户更改组合框按钮的工具提示时由框架调用。
virtual BOOL OnUpdateToolTip(
CWnd* pWndParent,
int iButtonIndex,
CToolTipCtrl& wndToolTip,
CString& str);
参数
pWndParent
[in] 指向组合框按钮的父窗口的指针。
iButtonIndex
[in] 组合框按钮的 ID。
wndToolTip
[in] 要与组合框按钮关联的工具提示。
str
[in] 工具提示文本。
返回值
如果方法处理了事件,则为 TRUE;否则为 FALSE。
CMFCToolBarComboBoxButton::RemoveAllItems
从列表中删除所有项并编辑框。
void RemoveAllItems();
备注
从列表框中移除所有项,并在组合框中编辑控件。
CMFCToolBarComboBoxButton::SelectItem
选择列表框中的项。
BOOL SelectItem(
int iIndex,
BOOL bNotify=TRUE);
BOOL SelectItem(DWORD_PTR dwData);
BOOL SelectItem(LPCTSTR lpszText);
参数
iIndex
[in] 列表框中项的从零开始的索引。
bNotify
[in] 若要通知所选内容的组合框按钮,则为 TRUE;否则为 FALSE。
dwData
[in] 与列表框中的项关联的数据。
lpszText
[in] 列表框中项的文本。
返回值
如果此方法成功,则为 TRUE;否则为 FALSE。
注解
CMFCToolBarComboBoxButton::SelectItemAll
获取具有指定命令 ID 的组合框按钮的列表框中的项数。
static BOOL SelectItemAll(
UINT uiCmd,
int iIndex);
static BOOL SelectItemAll(
UINT uiCmd,
DWORD_PTR dwData);
static BOOL SelectItemAll(
UINT uiCmd,
LPCTSTR lpszText);
参数
uiCmd
[in] 包含列表框的组合框按钮的命令 ID。
iIndex
[in] 列表框中项的从零开始的索引。 值为 -1 会删除列表框中的任何当前选定内容,并清除编辑框。
dwData
[in] 列表框中项的数据。
lpszText
[in] 列表框中项的文本。
返回值
如果此方法成功,则为 TRUE;否则为 FALSE。
注解
CMFCToolBarComboBoxButton::Serialize
从存档中读取此对象或将其写入存档。
virtual void Serialize(CArchive& ar);
参数
ar
[in, out] 要序列化的 CArchive
对象。
备注
CArchive
对象中的设置确定此方法是读取还是写入存档。
CMFCToolBarComboBoxButton::SetACCData
使用组合框按钮中的辅助功能数据填充指定的 CAccessibilityData
对象。
virtual BOOL SetACCData(
CWnd* pParent,
CAccessibilityData& data);
参数
pParent
[in] 组合框按钮的父窗口。
data
[out] 从组合框按钮接收辅助功能数据的 CAccessibilityData
对象。
返回值
如果此方法成功,则为 TRUE;否则为 FALSE。
CMFCToolBarComboBoxButton::SetCenterVert
设置应用程序中组合框按钮的垂直位置。
static void SetCenterVert(BOOL bCenterVert=TRUE);
参数
bCenterVert
[in] 若要使工具栏中的组合框按钮居中,则为 TRUE;若要将组合框按钮与工具栏顶部对齐,则为 FALSE。
备注
默认情况下,组合框按钮与顶部对齐。
CMFCToolBarComboBoxButton::SetContextMenuID
设置组合框按钮的快捷菜单资源 ID。
void SetContextMenuID(UINT uiResID);
参数
uiResID
[in] 快捷菜单资源 ID。
CMFCToolBarComboBoxButton::SetDropDownHeight
设置下拉列表时列表框的高度。
void SetDropDownHeight(int nHeight);
参数
nHeight
[in] 列表框的高度(以像素为单位)。
备注
默认高度为 150 个像素。
CMFCToolBarComboBoxButton::SetFlatMode
返回应用程序中组合框按钮的平面样式外观。
static void SetFlatMode(BOOL bFlat=TRUE);
参数
bFlat
[in] 为平面样式外观的 TRUE;否则为 FALSE。
备注
组合框按钮的默认平面样式为 FALSE。
CMFCToolBarComboBoxButton::SetStyle
设置组合框按钮的指定样式,如果未禁用控件,则重新绘制控件。
virtual void SetStyle(UINT nStyle);
参数
nStyle
[in] 工具栏样式的按位组合 (OR)。
备注
有关工具栏按钮样式的列表,请参阅工具栏控件样式
CMFCToolBarComboBoxButton::SetText
设置组合框按钮的编辑框中的文本。
void SetText(LPCTSTR lpszText);
参数
lpszText
[in] 指向包含编辑框文本的字符串的指针。
另请参阅
层次结构图
类
CMFCToolBarButton 类
CComboBox 类
CMFCToolBar::ReplaceButton
演练:将控件置于工具栏上