CMFCToolBar

CMFCToolBar 类类似于 CToolBar,但为用户界面功能提供额外支持。 其中包括平面工具栏、有热图的工具栏、大图标、页导航按钮、锁定的工具栏、Rebar 控件、图像下的文本、背景图像和选项卡式工具栏。 CMFCToolBar 类还包含内置支持,用户可对工具栏和菜单、工具栏和菜单之间的拖放、组合框按钮、编辑框按钮、颜色选取器和汇总按钮进行自定义。

有关更多详细信息,请参阅 Visual Studio 安装(例如,%ProgramFiles(x86)%\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.29.30133\atlmfc\src\mfc)中的源代码。

语法

class CMFCToolBar : public CMFCBaseToolBar

成员

公共构造函数

名称 描述
CMFCToolBar::CMFCToolBar 默认构造函数。
CMFCToolBar::~CMFCToolBar 析构函数。

公共方法

名称 描述
CMFCToolBar::AddBasicCommand 将菜单命令添加到用户打开菜单时始终显示的命令列表。
CMFCToolBar::AddCommandUsage 按 1 递增与给定命令关联的计数器。
CMFCToolBar::AddToolBarForImageCollection 将用户界面资源中的图像添加到应用程序中的图像集合。
CMFCToolBar::AdjustLayout 重新计算工具栏的大小和位置。 (替代 CBasePane::AdjustLayout)。
CMFCToolBar::AdjustSize 重新计算工具栏的大小。
CMFCToolBar::AllowChangeTextLabels 指定是否可以在工具栏按钮上的图像下显示文本标签。
CMFCToolBar::AreTextLabels 指定图像下的文本标签当前是否显示在工具栏按钮上。
CMFCToolBar::AutoGrayInactiveImages 启用或禁用非活动按钮图像的自动生成。
CMFCToolBar::ButtonToIndex 返回此工具栏中指定的 CMFCToolBarButton对象的索引。
CMFCToolBar::CalcFixedLayout 计算工具栏的水平大小。 (替代 CBasePane::CalcFixedLayout。)
CMFCToolBar::CalcSize 在布局计算过程中由框架调用。 (替代 CPane::CalcSize。)
CMFCToolBar::CanHandleSiblings 确定工具栏和其同级是否定位在同一窗格上。
CMFCToolBar::CleanUpImages 释放为工具栏图像分配的系统资源。
CMFCToolBar::CleanUpLockedImages 释放为锁定的工具栏图像分配的系统资源。
CMFCToolBar::CanBeClosed 指定用户是否可以关闭工具栏。 (替代 CBasePane::CanBeClosed。)
CMFCToolBar::CanBeRestored 确定系统是否可以在自定义后将工具栏还原到其原始状态。
CMFCToolBar::CanFocus 指定窗格是否可以接收焦点。 (替代 CBasePane::CanFocus。)
CMFCToolBar::CanHandleSiblings 确定工具栏和其同级是否定位在同一窗格上。
CMFCToolBar::CommandToIndex 返回工具栏中具有指定命令 ID 的按钮的索引。
CMFCToolBar::Create 创建一个 CMFCToolBar 对象。
CMFCToolBar::CreateEx 创建使用其他样式选项的 CMFCToolBar 对象,例如大图标。
CMFCToolBar::Deactivate 停用工具栏。
CMFCToolBar::EnableCustomizeButton 启用或禁用工具栏末尾显示的“添加或删除按钮”按钮。
CMFCToolBar::EnableDocking 启用将窗格停靠到主框架。 (替代 CBasePane::EnableDocking。)
CMFCToolBar::EnableLargeIcons 启用或禁用工具栏按钮上的大图标。
CMFCToolBar::EnableQuickCustomization 启用或禁用工具栏的快速自定义,以便用户可以按 Alt 键并将按钮拖动到新位置。
CMFCToolBar::EnableReflections 启用或禁用命令反射。
CMFCToolBar::EnableTextLabels 启用或禁用工具栏按钮图像下的文本标签。
CMFCToolBar::FromHandlePermanent 检索指向包含给定窗口句柄的 CMFCToolBar 对象的指针。
CMFCToolBar::GetAllButtons 返回工具栏中按钮的只读列表。
CMFCToolBar::GetAllToolbars 返回应用程序中的所有工具栏的只读列表。
CMFCToolBar::GetBasicCommands 返回应用程序中定义的基本命令的只读列表。
CMFCToolBar::GetButton 返回一个指针,指向具有指定工具栏按钮索引的 CMFCToolBarButton 对象。
CMFCToolBar::GetButtonInfo 返回指定索引处的按钮的命令 ID、样式和图像索引。
CMFCToolBar::GetButtonSize 返回工具栏上每个按钮的维度。
CMFCToolBar::GetButtonStyle 返回位于指定索引处的工具栏按钮的当前样式。
CMFCToolBar::GetButtonText 返回具有指定索引的按钮的文本标签。
CMFCToolBar::GetColdImages 返回指向应用程序中冷工具栏按钮图像集合的指针。
CMFCToolBar::GetColumnWidth 返回工具栏按钮的宽度。
CMFCToolBar::GetCommandButtons 返回应用程序中所有工具栏的按钮列表,这些按钮具有指定命令 ID。
CMFCToolBar::GetCount 返回工具栏上的按钮数和分隔符数。
CMFCToolBar::GetCustomizeButton 检索指向与工具栏关联的 CMFCCustomizeButton 对象的指针。
CMFCToolBar::GetDefaultImage 返回具有指定命令 ID 的工具栏按钮的默认图像的索引。
CMFCToolBar::GetDisabledImages 返回指向用于应用程序中已禁用工具栏按钮图像集合的指针。
CMFCToolBar::GetDisabledMenuImages 返回指向用于应用程序中已禁用菜单按钮图像集合的指针。
CMFCToolBar::GetDroppedDownMenu 检索指向当前显示子菜单的菜单按钮对象的指针。
CMFCToolBar::GetGrayDisabledButtons 指定已禁用按钮的图像是常规按钮图像的变暗版本,还是从已禁用按钮图像的集合中获取的。
CMFCToolBar::GetHighlightedButton 返回指向当前突出显示的工具栏按钮的指针。
CMFCToolBar::GetHotBorder 确定是否热跟踪工具栏按钮。
CMFCToolBar::GetHotTextColor 返回突出显示的工具栏按钮的文本颜色。
CMFCToolBar::GetHwndLastFocus 返回在工具栏之前具有输入焦点的窗口的句柄。
CMFCToolBar::GetIgnoreSetText 指定是否忽略对设置按钮标签的调用。
CMFCToolBar::GetImageSize 返回工具栏按钮图像的当前大小。
CMFCToolBar::GetImages 返回指向应用程序中默认按钮图像集合的指针。
CMFCToolBar::GetImagesOffset 返回索引偏移,它用于在工具栏按钮图像的全局列表中查找此工具栏的工具栏按钮图像。
CMFCToolBar::GetInvalidateItemRect 检索必须在给定索引处为按钮重新绘制的工作区的区域。
CMFCToolBar::GetItemID 返回指定索引处工具栏按钮的命令 ID。
CMFCToolBar::GetItemRect 返回指定索引处按钮的边界矩形。
CMFCToolBar::GetLargeColdImages 返回指向应用程序中大型冷工具栏按钮图像集合的指针。
CMFCToolBar::GetLargeDisabledImages 返回指向应用程序中大型已禁用工具栏按钮图像的集合的指针。
CMFCToolBar::GetLargeImages 返回指向应用程序中大型工具栏按钮图像的集合的指针。
CMFCToolBar::GetLockedColdImages 返回指向工具栏中锁定的冷图像集合的指针。
CMFCToolBar::GetLockedDisabledImages 返回指向工具栏中锁定的已禁用图像集合的指针。
CMFCToolBar::GetLockedImages 返回指向工具栏中锁定的按钮图像集合的指针。
CMFCToolBar::GetLockedImageSize 返回锁定的工具栏图像的默认大小。
CMFCToolBar::GetLockedMenuImages 返回指向工具栏中锁定的工具栏菜单图像的集合的指针。
CMFCToolBar::GetMenuButtonSize 返回应用程序中的菜单按钮的大小。
CMFCToolBar::GetMenuImageSize 返回应用程序中的菜单按钮图像的大小。
CMFCToolBar::GetMenuImages 返回指向应用程序中按钮图像的集合的指针。
CMFCToolBar::GetOrigButtons 检索工具栏的非自定义按钮的集合。
CMFCToolBar::GetOrigResetButtons 检索工具栏的非自定义重置按钮的集合。
CMFCToolBar::GetResourceID 检索工具栏的资源 ID。
CMFCToolBar::GetRouteCommandsViaFrame 确定哪个对象(父框架或所有者)将命令发送到工具栏。
CMFCToolBar::GetRowHeight 返回工具栏按钮的高度。
CMFCToolBar::GetShowTooltips 指定是否为工具栏按钮显示工具提示。
CMFCToolBar::GetSiblingToolBar 检索工具栏的同级。
CMFCToolBar::GetUserImages 返回指向应用程序中用户定义的工具栏按钮图像的集合的指针。
CMFCToolBar::HitTest 返回位于指定位置的工具栏按钮的索引。
CMFCToolBar::InsertButton 向工具栏中插入按钮。
CMFCToolBar::InsertSeparator 向工具栏中插入分隔符。
CMFCToolBar::InvalidateButton 使提供的索引处存在的工具栏按钮的工作区失效。
CMFCToolBar::IsAddRemoveQuickCustomize 使用“自定义”菜单选项确定用户是否可以添加或删除工具栏按钮。
CMFCToolBar::IsAltCustomizeMode 指定快速自定义是否将用于拖动按钮。
CMFCToolBar::IsAutoGrayInactiveImages 指定是否启用非活动(非突出显示)按钮图像的自动生成。
CMFCToolBar::IsBasicCommand 确定命令是否位于基本命令列表中。
CMFCToolBar::IsButtonExtraSizeAvailable 确定工具栏是否可以显示具有扩展边框的按钮。
CMFCToolBar::IsButtonHighlighted 确定是否突出显示工具栏上的按钮。
CMFCToolBar::IsCommandPermitted 确定是否允许命令。
CMFCToolBar::IsCommandRarelyUsed 确定是否很少使用命令(请参见 CMFCToolBar::SetCommandUsageOptions)。
CMFCToolBar::IsCustomizeMode 指定工具栏框架是否处于自定义模式。
CMFCToolBar::IsDragButton 确定是否拖动工具栏按钮。
CMFCToolBar::IsExistCustomizeButton 确定工具栏是否包含“自定义”按钮。
CMFCToolBar::IsFloating 确定工具栏是否浮动。
CMFCToolBar::IsLargeIcons 指定应用程序中的工具栏当前是否显示大图标。
CMFCToolBar::IsLastCommandFromButton 确定是否从指定的工具栏按钮发送了最近执行的命令。
CMFCToolBar::IsLocked 确定工具栏是否锁定。
CMFCToolBar::IsOneRowWithSibling 确定工具栏及其同级工具栏是否定位在同一行上。
CMFCToolBar::IsUserDefined 指定工具栏是否是用户定义的。
CMFCToolBar::LoadBitmap 从应用程序资源加载工具栏图像。
CMFCToolBar::LoadBitmapEx 从应用程序资源加载工具栏图像。 包括大型图像。
CMFCToolBar::LoadParameters 从 Windows 注册表加载全局工具栏选项。
CMFCToolBar::LoadState 从 Windows 注册表加载工具栏状态信息。 (替代 CPane::LoadState。)
CMFCToolBar::LoadToolBar 从应用程序资源加载工具栏。
CMFCToolBar::LoadToolBarEx 使用 CMFCToolBarInfo 帮助程序类从应用程序资源加载工具栏,使应用程序能够使用大型图像。
CMFCToolBar::OnChangeHot 当用户在工具栏上选择按钮时由框架调用。
CMFCToolBar::OnFillBackground CBasePane::DoPaint 中由框架调用以填充工具栏背景。
CMFCToolBar::OnReset 将工具栏还原到其原始状态。
CMFCToolBar::OnSetAccData (替代 CBasePane::OnSetAccData。)
CMFCToolBar::OnSetDefaultButtonText 将工具栏按钮的文本还原到其默认状态。
CMFCToolBar::OnUpdateCmdUI 内部使用。
CMFCToolBar::RemoveAllButtons 从工具栏中删除所有按钮。
CMFCToolBar::RemoveButton 从工具栏中删除具有指定索引的按钮。
CMFCToolBar::RemoveStateFromRegistry 从 Windows 注册表中删除工具栏的状态信息。
CMFCToolBar::ReplaceButton 将工具栏按钮替换为另一个工具栏按钮。
CMFCToolBar::ResetAll 将所有工具栏还原到其原始状态。
CMFCToolBar::ResetAllImages 清除应用程序中的所有工具栏图像集合。
CMFCToolBar::RestoreOriginalState 还原工具栏的原始状态。
CMFCToolBar::SaveState 将工具栏的状态信息保存在 Windows 注册表中。 (替代 CPane::SaveState。)
CMFCToolBar::Serialize (替代 CBasePane::Serialize。)
CMFCToolBar::SetBasicCommands 设置用户打开菜单时始终显示的命令列表。
CMFCToolBar::SetButtonInfo 设置工具栏按钮的命令 ID、样式和图像 ID。
CMFCToolBar::SetButtonStyle 设置给定索引处的工具栏按钮的样式。
CMFCToolBar::SetButtonText 设置工具栏按钮的文本标签。
CMFCToolBar::SetButtons 设置工具栏的按钮。
CMFCToolBar::SetCommandUsageOptions 指定很少使用的命令未显示在应用程序的菜单中的时间。
CMFCToolBar::SetCustomizeMode 启用或禁用应用程序中的所有工具栏的自定义模式。
CMFCToolBar::SetGrayDisabledButtons 指定工具栏上已禁用的按钮变暗,还是为已禁用的按钮使用已禁用的图像。
CMFCToolBar::SetHeight 设置工具栏的高度。
CMFCToolBar::SetHotBorder 指定是否热跟踪工具栏按钮。
CMFCToolBar::SetHotTextColor 设置热工具栏按钮的文本颜色。
CMFCToolBar::SetLargeIcons 指定工具栏按钮是否显示大图标。
CMFCToolBar::SetLockedSizes 设置工具栏上锁定的按钮和锁定的图像的大小。
CMFCToolBar::SetMenuSizes 设置工具栏菜单按钮及其图像的大小。
CMFCToolBar::SetNonPermittedCommands 设置用户无法执行的命令的列表。
CMFCToolBar::SetOneRowWithSibling 将工具栏及其同级定位在同一行上。
CMFCToolBar::SetPermament 指定用户是否可以关闭工具栏。
CMFCToolBar::SetRouteCommandsViaFrame 指定是父框架还是所有者将命令发送到工具栏。
CMFCToolBar::SetShowTooltips 指定框架是否显示工具提示。
CMFCToolBar::SetSiblingToolBar 指定工具栏的同级。
CMFCToolBar::SetSizes 指定所有工具栏上的按钮和图像的大小。
CMFCToolBar::SetToolBarBtnText 指定工具栏上的按钮的属性。
CMFCToolBar::SetTwoRowsWithSibling 将工具栏及其同级定位在单独的行上。
CMFCToolBar::SetUserImages 设置应用程序中用户定义的图像的集合。
CMFCToolBar::StretchPane 垂直或水平拉伸工具栏。 (替代 CBasePane::StretchPane。)
CMFCToolBar::TranslateChar 如果指定的键代码对应于有效的键盘快捷方式,则执行按钮命令。
CMFCToolBar::UpdateButton 更新指定按钮的状态。
CMFCToolBar::WrapToolBar 在给定维度中重新定位工具栏按钮。

受保护方法

名称 描述
CMFCToolBar::AllowShowOnList 确定工具栏是否显示在“自定义”对话框的“工具栏”窗格上的列表中。
CMFCToolBar::CalcMaxButtonHeight 计算工具栏中的按钮的最大高度。
CMFCToolBar::DoPaint 重新绘制工具栏。
CMFCToolBar::DrawButton 重新绘制工具栏按钮。
CMFCToolBar::DrawSeparator 重新绘制工具栏上的分隔符。
CMFCToolBar::OnUserToolTip 当即将显示按钮的工具提示时由框架调用。

数据成员

名称 描述
CMFCToolBar::m_bDontScaleImages 指定是否在高 DPI 模式下缩放工具栏图像。
CMFCToolBar::m_dblLargeImageRatio 指定大型图像的维度(高度或宽度)与常规图像的维度之间的比率。

注解

若要将 CMFCToolBar 对象合并到应用程序中,请执行以下步骤:

  1. CMFCToolBar 对象添加到主框架窗口。

  2. 处理主框架窗口的 WM_CREATE 消息时,调用 CMFCToolBar::CreateCMFCToolBar::CreateEx 以创建工具栏并指定其样式。

  3. 调用 CBasePane::EnableDocking 以指定停靠样式。

若要插入特殊按钮(例如组合框或下拉工具栏),请在父级资源中保留虚拟按钮,并使用 CMFCToolBar::ReplaceButton 在运行时替换虚拟按钮。 有关详细信息,请参阅演练:将控件放在工具栏上

CMFCToolBar 是 MFC 库类 CMFCMenuBarCMFCPopupMenuBarCMFCDropDownToolBar的基类。

示例

下面的示例演示了如何使用 CMFCToolBar 类中的各种方法。 该示例演示如何设置工具栏的窗口标签的文本、设置边框、设置窗格的样式,以及启用工具栏末尾显示的“添加或删除按钮”按钮。 此代码片段是 IE 演示示例的一部分。

CMFCToolBar m_wndToolBar;
m_wndToolBar.SetWindowText(_T("Standard"));
m_wndToolBar.SetBorders();

//------------------------------------
// Remove toolbar gripper and borders:
//------------------------------------
m_wndToolBar.SetPaneStyle(m_wndToolBar.GetPaneStyle() &
                          ~(CBRS_GRIPPER | CBRS_BORDER_TOP | CBRS_BORDER_BOTTOM | CBRS_BORDER_LEFT | CBRS_BORDER_RIGHT));

m_wndToolBar.EnableCustomizeButton(TRUE, ID_VIEW_CUSTOMIZE, _T("Customize..."));

要求

标头afxtoolbar.h

继承层次结构

CObject

CCmdTarget

CWnd

CBasePane

CPane

CMFCBaseToolBar

CMFCToolBar

CMFCToolBar::AddBasicCommand

将菜单命令添加到用户打开菜单时始终显示的命令列表。

static void __stdcall AddBasicCommand(UINT uiCmd);

参数

uiCmd
[in] 指定要添加的命令。

备注

打开菜单时,始终显示基本命令。 当用户选择查看最近使用的命令时,此方法有意义。

使用 CMFCToolBar::SetBasicCommands 方法设置用户打开菜单时始终显示的命令列表。 使用 CMFCToolBar::GetBasicCommands 方法检索应用程序使用的基本命令的列表。

CMFCToolBar::AddCommandUsage

按 1 递增与给定命令关联的计数器。

static void __stdcall AddCommandUsage(UINT uiCommand);

参数

uiCommand
[in] 指定要递增的命令计数器。

注解

当用户选择菜单项时,框架会调用此方法。

框架使用命令计数器显示最近使用的菜单项。

此方法使用 CMFCCmdUsageCount::AddCmd 方法递增命令计数器。

CMFCToolBar::AddToolBarForImageCollection

将用户界面资源中的图像添加到应用程序中的图像集合。

static BOOL __stdcall AddToolBarForImageCollection(
    UINT uiResID,
    UINT uiBmpResID=0,
    UINT uiColdResID=0,
    UINT uiMenuResID=0,
    UINT uiDisabledResID=0,
    UINT uiMenuDisabledResID=0);

参数

uiResID
[in] 具有要加载的图像的工具栏的资源 ID。

uiBmpResID
[in] 具有工具栏图像的位图的资源 ID。

uiColdResID
[in] 具有“冷”工具栏图像的位图的资源 ID。

uiMenuResID
[in] 具有菜单图像的位图的资源 ID。

uiDisabledResID
[in] 具有已禁用工具栏图像的位图的资源 ID。

uiMenuDisabledResID
[in] 具有已禁用菜单图像的位图的资源 ID。

返回值

如果该方法成功,则为 TRUE;如果 uiResIDuiBmpResID 未指定有效的资源,或发生另一个错误,则为 FALSE

备注

调用此方法以加载具有工具栏图像的位图,并将其添加到工具栏图像的集合。 此方法创建临时工具栏对象并调用 CMFCToolBar::LoadToolBar

CMFCToolBar::AdjustLayout

重新计算工具栏的大小和位置。

virtual void AdjustLayout();

注解

创建工具栏以重新计算其大小和位置时调用此方法。

每次必须更改工具栏布局时,框架都会调用此方法。 例如,当用户移动另一个控件栏、调整应用程序窗口大小或自定义工具栏时,布局必须更改。

重写此方法以在派生自 CMFCToolbar 的类中提供你自己的动态布局。

CMFCToolBar::AdjustSize

重新计算工具栏的大小。

void AdjustSize();

注解

此方法确保工具栏适合父框架的边界。 如果工具栏没有父框架,则此方法不执行任何操作。

如果工具栏的父级不是 CMFCToolBar::AdjustLayout 对象,则 CMFCReBar 方法将调用此方法以重新计算大小。

CMFCToolBar::AllowChangeTextLabels

指定是否可以在工具栏按钮上的图像下显示文本标签。

virtual BOOL AllowChangeTextLabels() const;

返回值

如果允许在图像下面显示文本标签,则为 TRUE;否则为 FALSE

注解

此方法由“自定义”对话框调用以确定是否在所选工具栏的“工具栏”页上启用“显示文本标签”复选框。

默认实现返回 TRUE

当不希望用户决定是否在图像下的工具栏按钮上显示文本标签时,在派生自 CMFCToolBar 的对象中重写此方法并返回 FALSE

CMFCToolBar::AllowShowOnList

确定工具栏是否显示在“自定义”对话框的“工具栏”窗格上的工具栏列表中。

virtual BOOL AllowShowOnList() const;

返回值

如果可以在工具栏自定义页上的列表框中显示工具栏对象,则为 TRUE;否则为 FALSE

备注

框架调用此方法,以确定工具栏自定义页上的列表是否应包含派生自 CMFCToolBar 的特定对象。

默认实现始终返回 TRUE。 当不希望工具栏显示在“自定义”对话框中的工具栏列表中,重写此方法。

CMFCToolBar::AreTextLabels

指定图像下的文本标签当前是否显示在工具栏按钮上。

BOOL AreTextLabels() const;

返回值

如果工具栏按钮在图像下面显示文本标签,则为 TRUE;否则为 FALSE

备注

使用 CMFCToolBar::EnableTextLabels 指定是否显示文本。 默认值为 FALSE。 调用 CMFCToolBar::AllowChangeTextLabels 以指定用户是否可以在“自定义”对话框中更改此设置。

CMFCToolBar::AutoGrayInactiveImages

启用或禁用非活动按钮图像的自动生成。

static void AutoGrayInactiveImages(
    BOOL bEnable=TRUE,
    int nGrayImagePercentage=0,
    BOOL bRedrawAllToolbars=TRUE);

参数

bEnable
[in] 一个布尔值,该值指定是否使非活动图像变暗。 如果此参数为 TRUE,非活动图像将变暗。 否则,非活动图像不会变暗。

nGrayImagePercentage
[in] 指定非活动图像的亮度百分比。 如果 bEnableFALSE,则忽略此值。

bRedrawAllToolbars
[in] 一个布尔值,该值指定是否重新绘制应用程序中的所有工具栏。 如果此参数为 TRUE,此方法将重新绘制所有工具栏。

备注

如果 bEnableTRUE,则框架使用 nGrayImagePercentage 从常规图像生成非活动图像。 否则,必须使用 CMFCToolBar::GetColdImages 方法提供一组非活动图像。 默认情况下禁用此选项。

有关 nGrayImagePercentage 参数的更多信息,请参见CMFCToolBarImages::GrayImages

CMFCToolBar::ButtonToIndex

返回此工具栏中指定的 CMFCToolBarButton对象的索引。

int ButtonToIndex(const CMFCToolBarButton* pButton) const;

参数

pButton
[in] 指向工具栏按钮对象的指针。

返回值

工具栏按钮的内部列表中的 pButton 的索引;如果指定的按钮不在此工具栏上,则为 -1。

CMFCToolBar::CalcFixedLayout

计算工具栏的水平大小。

virtual CSize CalcFixedLayout(
    BOOL bStretch,
    BOOL bHorz);

参数

bStretch
[in] 如果将工具栏拉伸到父框架的大小,则为 TRUE

bHorz
[in] 如果水平定位工具栏,则为 TRUE;如果垂直定位工具栏,则为 FALSE

返回值

指定工具栏大小的 CSize 对象。

注解

此方法使用 CMFCToolBar::CalcLayout 方法计算工具栏的大小。 如果 bStretchTRUE,则将传递 dwMode 参数的 LM_STRETCH 标志。 如果 bHorzTRUE,则将传递 LM_HORZ 标志。

有关使用此方法的示例,请参阅 VisualStudioDemo 示例。

CMFCToolBar::CalcMaxButtonHeight

计算工具栏中的按钮的最大高度。

virtual int CalcMaxButtonHeight();

返回值

按钮的最大高度。

备注

此方法计算工具栏上所有工具栏按钮的最大高度。 高度可能因当前工具栏停靠状态等因素而异。

在派生自 CMFCToolBar 的类中重写此方法以提供你自己的高度计算。

CMFCToolBar::CalcSize

在布局计算过程中由框架调用。

virtual CSize CalcSize(BOOL bVertDock);

参数

bVertDock
[in] 如果指定垂直停靠工具栏,则为 TRUE;如果指定水平停靠工具栏,则为 FALSE

返回值

指定工具栏上按钮的整体大小的 CSize 对象。

备注

此方法考虑影响每个按钮的大小的属性,例如文本标签的区域和边框大小。

如果工具栏不包含任何按钮,则此方法使用 CMFCToolBar::GetButtonSize 方法返回单个按钮的保留大小。

CMFCToolBar::CanBeClosed

指定用户是否可以关闭工具栏。

virtual BOOL CanBeClosed() const;

返回值

如果用户可以关闭工具栏,则为 TRUE;否则为 FALSE

备注

框架调用此方法以确定用户是否可以关闭工具栏。 如果该方法返回 TRUE,则框架在工具栏的系统菜单中启用 SC_CLOSE 命令,并且用户可以使用“自定义”对话框中的工具栏列表中的复选框关闭工具栏。

默认实现返回 TRUE。 在派生自 CMFCToolBar 的类中重写此方法,使用户无法关闭工具栏对象。

CMFCToolBar::CanBeRestored

确定系统是否可以在自定义后将工具栏还原到其原始状态。

virtual BOOL CanBeRestored() const;

返回值

如果可以从应用程序资源还原工具栏,则为 TRUE;否则为 FALSE

备注

框架调用此方法,以确定工具栏是否可以在自定义后返回到其原始状态。 原始状态是从应用程序资源加载的。

如果 CanBeRestored 返回 TRUE,则“自定义”对话框的“工具栏”页将为所选工具栏启用“重置”按钮。

如果工具栏在加载时的原始资源 ID 为非零,则默认实现返回 TRUE。 通常,只有用户定义的工具栏不能还原。

可以重写 CanBeRestored 方法以在派生类中自定义此行为。

CMFCToolBar::CanFocus

指定窗格是否可以接收焦点。

virtual BOOL CanFocus() const;

返回值

此方法返回 FALSE

注解

此方法重写基类实现 CBasePane::CanFocus,因为工具栏对象无法接收焦点。

CMFCToolBar::CanHandleSiblings

确定工具栏和其同级是否定位在同一窗格上。

BOOL CanHandleSiblings();

返回值

如果该工具栏具有同级,并且该工具栏及其同级位于同一个窗格上,则为 TRUE;否则为 FALSE

备注

内部的 CMFCCustomizeButton::CreatePopupMenu 方法调用此方法,以确定如何显示“自定义”弹出菜单。 如果此方法返回 TRUE,则框架显示“在一行上显示按钮”或“分两行显示按钮”按钮。

通常不需要使用此方法。 若要启用工具栏上显示的“自定义”按钮,请调用 CMFCToolBar::EnableCustomizeButton 方法。 若要启用“在一行上显示按钮”或“分两行显示按钮”按钮,请调用 CMFCToolBar::SetSiblingToolBar

CMFCToolBar::CleanUpImages

释放为工具栏图像分配的系统资源。

static void CMFCToolBar::CleanUpImages();

备注

当应用程序关闭时,框架将调用此方法。

CMFCToolBar::CleanUpLockedImages

释放为锁定的工具栏图像分配的系统资源。

void CleanUpLockedImages();

备注

应用程序的视觉样式更改时调用此方法。 有关使用此方法的示例,请参阅 VisualStudioDemo 示例。

CMFCToolBar::CommandToIndex

返回工具栏中具有指定命令 ID 的按钮的索引。

int CommandToIndex(
    UINT nIDFind,
    int iIndexFirst=0) const;

参数

nIDFind
[in] 指定命令 ID。

iIndexFirst
[in] 指定要从其开始的初始索引。

返回值

如果该方法成功,则为工具栏按钮的从零开始的索引;如果没有具有指定 ID 的按钮,则为 -1。

注解

CMFCToolBar 对象维护工具栏上按钮的内部列表。 调用此函数以在给定按钮的命令 ID 的情况下检索列表中按钮的索引。

如果 iIndex 大于 0,则此方法将忽略工具栏上索引小于 iIndex 的任何按钮。

CMFCToolBar::Create

创建一个 CMFCToolBar 对象。

virtual BOOL Create(
    CWnd* pParentWnd,
    DWORD dwStyle=AFX_DEFAULT_TOOLBAR_STYLE,
    UINT nID=AFX_IDW_TOOLBAR);

参数

pParentWnd
[in] 指向工具栏的父窗口的指针。

dwStyle
[in] 工具栏样式。 有关样式列表,请参阅 Windows SDK 中的工具栏控件和按钮样式

nID
[in] 工具栏的子窗口的 ID。

返回值

如果此方法成功,则为 TRUE;否则为 FALSE

备注

此方法创建控件栏并将其附加到工具栏。 它创建具有 TBSTYLE_FLAT 样式的控件条。 如果需要其他控件条样式,请调用 CMFCToolBar::CreateEx

CMFCToolBar::CreateEx

创建使用其他样式选项的 CMFCToolBar 对象,例如大图标。

virtual BOOL CreateEx(
    CWnd* pParentWnd,
    DWORD dwCtrlStyle=TBSTYLE_FLAT,
    DWORD dwStyle=AFX_DEFAULT_TOOLBAR_STYLE,
    CRect rcBorders=CRect(1,
    1,
    1,
    1),
    UINT nID=AFX_IDW_TOOLBAR);

参数

pParentWnd
[in] 指向工具栏的父窗口的指针。

dwCtrlStyle
[in] 用于创建嵌入式控件条对象的其他样式。

dwStyle
[in] 工具栏样式。 有关相应样式的列表,请参阅工具栏控件和按钮样式

rcBorders
[in] 指定工具栏窗口边框的宽度的 CRect 对象。

nID
[in] 工具栏的子窗口的 ID。

返回值

如果此方法成功,则为非零;否则为 0。

注解

此方法创建控件栏并将其附加到工具栏。

当想要提供特定样式时,调用此方法,而不是 CMFCToolBar::Create。 例如,将 dwCtrlStyle 设置为 TBSTYLE_FLAT | TBSTYLE_TRANSPARENT 以创建类似于 Internet Explorer 4 使用的工具栏的工具栏。

示例

下面的示例演示如何使用 CMFCToolBar 类的 CreateEx 方法。 此代码片段是 IE 演示示例的一部分。

CMFCToolBar m_wndToolBar;
// The this pointer points to CMainFrame class which extends the CFrameWnd class.
if (!m_wndToolBar.CreateEx(this, TBSTYLE_TRANSPARENT) ||
    !m_wndToolBar.LoadToolBar(IDR_MAINFRAME, uiToolbarColdID, uiMenuID,
                              FALSE /* Not locked */, 0, 0, uiToolbarHotID))
{
   TRACE0("Failed to create toolbar\n");
   return -1; // fail to create
}

CMFCToolBar::Deactivate

停用工具栏。

virtual void Deactivate();

备注

此方法通过从突出显示的工具栏按钮中删除焦点来停用工具栏。 当工具栏丢失焦点或被销毁时,框架将调用此方法。

CMFCToolBar::DoPaint

重新绘制工具栏。

virtual void DoPaint(CDC* pDC);

参数

pDC
[in] 指向设备上下文的指针。

注解

当必须重新绘制工具栏的一部分时,框架将调用此方法。

重写此方法以自定义派生自 CMFCToolBar 的对象的外观。

CMFCToolBar::DrawButton

重新绘制工具栏按钮。

virtual BOOL DrawButton(
    CDC* pDC,
    CMFCToolBarButton* pButton,
    CMFCToolBarImages* pImages,
    BOOL bHighlighted,
    BOOL bDrawDisabledImages);

参数

pDC
[in] 指向设备上下文的指针。

pButton
[in] 指向要绘制的按钮的指针。

pImages
[in] 指向工具栏图像的指针。

bHighlighted
[in] 如果突出显示按钮,则为 TRUE;否则为 FALSE

bDrawDisabledImages
[in] 如果已禁用的按钮变暗,则为 TRUE;否则为 FALSE

返回值

如果重新绘制了按钮,则为 TRUE;如果按钮处于隐藏状态,则为 FALSE

注解

当必须重新绘制工具栏按钮时,CMFCToolBar::DrawButton 方法将调用此方法。

如果要自定义工具栏上按钮的外观,请重写此方法。

CMFCToolBar::DrawSeparator

重新绘制工具栏上的分隔符。

virtual void DrawSeparator(
    CDC* pDC,
    const CRect& rect,
    BOOL bHorz);

参数

pDC
[in] 指向设备上下文的指针。

rect
[in] 绘制分隔符的位置的边界矩形(以像素为单位)。

bHorz
[in] 如果分隔符处于水平状态,则为 TRUE;如果分隔符处于垂直状态,则为 FALSE

备注

CMFCToolBar::DoPaint 为具有 TBBS_SEPARATOR 样式的每个 CMFCToolBar::DrawSeparator 对象调用此方法,而不是为这些按钮调用 CMFCToolBar::DrawButton

在派生自 CMFCToolBar 的类中重写此方法以自定义工具栏上的分隔符的外观。 默认实现调用 CMFCVisualManager::OnDrawSeparator 以绘制其外观由当前视觉对象管理器确定的分隔符。

CMFCToolBar::EnableCustomizeButton

启用或禁用工具栏上显示的“自定义”按钮。

void EnableCustomizeButton(
    BOOL bEnable,
    int iCustomizeCmd,
    const CString& strCustomizeText,
    BOOL bQuickCustomize=TRUE);

void EnableCustomizeButton(
    BOOL bEnable,
    int iCustomizeCmd,
    UINT uiCustomizeTextResId,
    BOOL bQuickCustomize=TRUE);

参数

bEnable
[in] 启用或禁用“自定义”按钮。

iCustomizeCmd
[in] “自定义”按钮的命令 ID。

strCustomizeText
[in] “自定义”按钮的文本标签。

uiCustomizeTextResId
[in] “自定义”按钮标签的资源字符串 ID。

bQuickCustomize
[in] 启用或禁用从按钮下拉的菜单上的“添加或删除按钮”选项。

备注

如果 iCustomizeCmd 为 -1,则当多个工具栏按钮不适合工具栏区域时,框架会显示“自定义”按钮。 该按钮显示左指双箭头或 V 形,指示有更多按钮。

如果 iCustomizeCmd 指定有效的命令 ID,并且 bEnableTRUE,则始终显示“自定义”按钮。 该按钮有一个较小的向下箭头,并打开包含命令的菜单。 此命令使用由 strCustomizeText. 指定的文本标签。 如果 bQuickCustomize 也是 TRUE,菜单将显示“添加或删除按钮”选项。

框架动态地将不适合工具栏区域的任何按钮添加到菜单中 iCustomizeCmd 指定的项之前。 V 形显示在向下箭头旁边。

CMFCToolBar::EnableDocking

启用将窗格停靠到主框架。

virtual void EnableDocking(DWORD dwAlignment);

参数

dwAlignment
[in] 指定要启用的停靠对齐方式。

备注

此方法通过将 CBasePane::m_dwControlBarStyle 数据成员设置为 CBasePane::EnableDocking 来扩展基类实现AFX_CBRS_FLOAT。 然后,此方法将 dwAlignment 传递给基类实现。

CMFCToolBar::EnableLargeIcons

启用或禁用工具栏按钮上的大图标。

void EnableLargeIcons(BOOL bEnable);

参数

bEnable
[in] 如果启用大图标,则为 TRUE;如果禁用大图标,则为 FALSE

注解

默认情况下,大图标处于启用状态。

CMFCToolBar::EnableQuickCustomization

启用或禁用工具栏的快速自定义,以便用户可以按 Alt 键并将按钮拖动到新位置。

static void EnableQuickCustomization(BOOL bEnable=TRUE);

参数

bEnable
[in] 如果启用快速自定义,则为 TRUE;如果禁用快速自定义,则为 FALSE

CMFCToolBar::EnableReflections

启用或禁用命令反射。

void EnableReflections(BOOL bEnable = TRUE);

参数

bEnable
[in] 如果启用命令反射,则为 TRUE;如果禁用命令反射,则为 FALSE

备注

调用此方法以为包含嵌入式控件(如组合框)的工具栏按钮启用命令反射。

有关命令反射的详细信息,请参阅 TN062:Windows 控件的消息反射

CMFCToolBar::EnableTextLabels

启用或禁用工具栏按钮图像下的文本标签。

void EnableTextLabels(BOOL bEnable=TRUE);

参数

bEnable
如果文本标签显示在工具栏按钮图像下,则为 TRUE;否则为 FALSE

备注

如果启用了文本标签,则会放大工具栏上的所有按钮,为要显示在图像下的标签提供空间。 “自定义”对话框在“工具栏”页上具有“显示文本标签”复选框。 当用户选择工具栏并选中此选项时,框架会为所选工具栏调用 EnableTextLabels。 可以通过从 CMFCToolBar::AllowChangeTextLabels 返回 FALSE 来禁用派生自 CMFCToolBar 的对象的复选框。

CMFCToolBar::FromHandlePermanent

检索指向包含给定窗口句柄的 CMFCToolBar 对象的指针。

static CMFCToolBar* __stdcall FromHandlePermanent(HWND hwnd);

参数

hwnd
[in] 要查找的窗口句柄。

返回值

指向包含给定窗口句柄的 CMFCToolBar 对象的指针,如果不存在相应的 CMFCToolBar 对象,则为 NULL

备注

此共享方法为包含给定窗口句柄的 CMFCToolBar 对象检查应用程序中的每个工具栏。

CMFCToolBar::GetAllButtons

返回工具栏中按钮的只读列表。

const CObList& GetAllButtons() const;

返回值

CObList对象的常量引用,其中包含 CMFCToolBarButton对象的集合。

CMFCToolBar::GetAllToolbars

返回应用程序中的所有工具栏的只读列表。

static const CObList& GetAllToolbars();

返回值

CObList对象的常量引用,其中包含 CMFCToolBar 对象的集合。

CMFCToolBar::GetBasicCommands

返回应用程序中定义的基本命令的只读列表。

static const CList<UINT,UINT>& GetBasicCommands();

返回值

CList对象的常量引用,其中包含基本命令的集合。

备注

通过调用 CMFCToolBar::AddBasicCommandCMFCToolBar::SetBasicCommands 添加基本命令。

CMFCToolBar::GetButton

返回指向指定索引处的 CMFCToolBarButton对象的指针。

CMFCToolBarButton* GetButton(int iIndex) const;

参数

iIndex
[in] 指定要返回的按钮的索引。

返回值

指向工具栏按钮的指针(如果存在);如果没有此类按钮,则为 NULL

CMFCToolBar::GetButtonInfo

返回指定索引处的按钮的命令 ID、样式和图像索引。

void GetButtonInfo(
    int nIndex,
    UINT& nID,
    UINT& nStyle,
    int& iImage) const;

参数

nIndex
[in] 指定工具栏上按钮列表中的按钮的索引。

nID
[out] 按钮的命令 ID。

nStyle
[out] 按钮的样式。

iImage
[out] 按钮的图像的索引。

注解

GetButtonInfo 方法查找指定索引处的工具栏按钮并检索按钮的命令 ID、样式和图像索引。

如果指定索引处的按钮不存在,则框架会将 nIDnStyle 设置为 0,并在返回该方法时将 iImage 设置为 -1。

CMFCToolBar::GetButtonSize

返回工具栏上每个按钮的维度。

CSize GetButtonSize() const;

返回值

指定工具栏上每个按钮的维度的 CSize对象。

备注

调用 CMFCToolBar::SetSizesCMFCToolBar::SetLockedSizes 以设置工具栏上每个按钮的维度。

CMFCToolBar::GetButtonStyle

返回位于指定索引处的工具栏按钮的当前样式。

UINT GetButtonStyle(int nIndex) const;

参数

nIndex
[in] 指定工具栏按钮的索引。

返回值

指定工具栏按钮的样式的值。 。 有关可能样式的列表,请参阅工具栏控件样式

备注

调用 CMFCToolBar::SetButtonStyle 以设置工具栏按钮的样式

CMFCToolBar::GetButtonText

返回具有指定索引的按钮的文本标签。

CString GetButtonText(int nIndex) const;

void GetButtonText(
    int nIndex,
    CString& rString) const;

参数

nIndex
[in] 工具栏按钮的索引。

rString
[out] 工具栏按钮的标签文本。

返回值

工具栏按钮的标签文本。

备注

调用 CMFCToolBar::SetButtonTextCMFCToolBar::SetToolBarBtnText 以设置文本标签。

CMFCToolBar::GetColdImages

返回指向应用程序中冷工具栏按钮图像集合的指针。

static CMFCToolBarImages* GetColdImages();

返回值

指向冷工具栏按钮图像的集合的指针。

备注

冷图像是用户不与工具栏按钮交互时使用的图像。 调用 CMFCToolBar::LoadBitmapExCMFCToolBar::LoadBitmap 可加载冷图像。

CMFCToolBar::GetColumnWidth

返回工具栏按钮的宽度。

virtual int GetColumnWidth() const;

返回值

指定工具栏按钮的宽度的值。

注解

框架调用此方法以计算工具栏布局。 在派生类中重写此方法,为工具栏指定不同的列宽。

CMFCToolBar::GetCommandButtons

返回应用程序中所有工具栏的按钮列表,这些按钮具有指定命令 ID。

static int GetCommandButtons(
    UINT uiCmd,
    CObList& listButtons);

参数

uiCmd
[in] 按钮的命令 ID。

listButtons
[out] 对 CObList对象的引用,该对象接收工具栏按钮的列表。

返回值

具有指定命令 ID 的按钮数。

CMFCToolBar::GetCount

返回工具栏上的按钮数和分隔符数。

int GetCount() const;

返回值

工具栏上的按钮和分隔符数。

CMFCToolBar::GetCustomizeButton

检索指向与工具栏关联的 CMFCCustomizeButton 对象的指针。

CMFCCustomizeButton* GetCustomizeButton();

返回值

指向与工具栏关联的 CMFCCustomizeButton 对象的指针。

备注

此方法检索工具栏末尾显示的“自定义”按钮。 使用 CMFCToolBar::EnableCustomizeButton 方法将“自定义”按钮添加到工具栏。

可以调用 CMFCToolBar::IsExistCustomizeButton 方法来确定工具栏是否包含有效的 CMFCCustomizeButton 对象。

CMFCToolBar::GetDefaultImage

返回具有指定命令 ID 的工具栏按钮的默认图像的索引。

static int GetDefaultImage(UINT uiID);

参数

uiID
[in] 指定按钮的命令 ID。

返回值

工具栏图像在共享列表中的索引。

备注

使用此共享方法检索具有指定命令 ID 的工具栏按钮的默认图像的索引。 返回值是应用程序中所有工具栏的工具栏按钮图像共享集合中的索引。 调用 CMFCToolBar::GetImages 方法以获取指向此集合的指针。

CMFCToolBar::GetDisabledImages

返回指向用于应用程序中已禁用工具栏按钮图像集合的指针。

static CMFCToolBarImages* __stdcall GetDisabledImages();

返回值

指向已禁用工具栏按钮图像集合的指针。

注解

使用 CMFCToolBarEditBoxButtonCMFCToolBar::LoadBitmap 方法加载已禁用的工具栏按钮图像。

CMFCToolBar::GetDisabledMenuImages

返回指向用于应用程序中已禁用菜单按钮图像集合的指针。

static CMFCToolBarImages* __stdcall GetDisabledMenuImages();

返回值

指向已禁用菜单图像集合的指针。

备注

使用 CMFCToolBarEditBoxButton方法加载已禁用的图像。

CMFCToolBar::GetDroppedDownMenu

检索指向当前显示子菜单的菜单按钮对象的指针。

CMFCToolBarMenuButton* GetDroppedDownMenu(int* pIndex = NULL) const;

参数

pIndex
[out] 接收工具栏按钮集合中按钮的索引。

返回值

指向显示其子菜单的菜单按钮对象的指针,如果没有菜单显示其子菜单,则为 NULL

备注

如果此方法返回非 null 值且 pIndex 不是 NULL,则 pIndex 所指向的值将设置为工具栏按钮集合中的菜单按钮的索引。

CMFCToolBar::GetGrayDisabledButtons

指定已禁用按钮的图像是常规按钮图像的变暗版本,还是从已禁用按钮图像的集合中获取的。

BOOL GetGrayDisabledButtons() const;

返回值

如果使已禁用按钮的图像变暗,则为 TRUE;如果从已禁用图像集合中获取图像,则为 FALSE

注解

使用 CMFCToolBar::SetGrayDisabledButtons 在变暗的图像与已禁用图像集合中的图像之间进行切换。

CMFCToolBar::GetHighlightedButton

返回指向当前突出显示的工具栏按钮的指针。

CMFCToolBarButton* GetHighlightedButton() const;

返回值

指向工具栏按钮对象的指针;如果未突出显示任何按钮,则为 NULL

注解

如果工具栏按钮具有键盘焦点,则会突出显示该按钮。 如果在此应用程序中热跟踪工具栏按钮(有关详细信息,请参阅 CMFCToolBar::GetHotBorderCMFCToolBar::SetHotBorder),并且在没有工具栏按钮或菜单项具有键盘焦点时鼠标指向它,则也会突出显示该按钮。

CMFCToolBar::GetHotBorder

确定是否热跟踪工具栏按钮。 如果热跟踪按钮,则在鼠标移动到其上方时会突出显示该按钮。

BOOL GetHotBorder() const;

返回值

如果热跟踪工具栏按钮,则为 TRUE;否则为 FALSE

注解

默认情况下,将热跟踪工具栏按钮。

CMFCToolBar::GetHotTextColor

返回突出显示的工具栏按钮的文本颜色。

static COLORREF GetHotTextColor();

返回值

表示当前突出显示的文本颜色的 COLORREF 值。

注解

调用 CMFCToolBar::SetHotTextColor 以设置突出显示的工具栏按钮的新文本颜色。

CMFCToolBar::GetHwndLastFocus

返回在工具栏之前具有输入焦点的窗口的句柄。

HWND GetHwndLastFocus() const;

返回值

不是派生自 CMFCBaseToolBar的窗口的句柄,该类以前具有输入焦点;如果没有此类窗口,则为 NULL

备注

CMFCToolBar 控件接收输入焦点时,它会将句柄存储到丢失焦点的窗口,以便以后可以还原它。

CMFCToolBar::GetIgnoreSetText

指定是否忽略对设置按钮标签的调用。

BOOL GetIgnoreSetText() const;

返回值

如果忽略对设置按钮标签的调用,则为 TRUE;否则为 FALSE

注解

CMFCToolBar::GetImages

返回指向应用程序中默认按钮图像集合的指针。

static CMFCToolBarImages* GetImages();

返回值

指向 CMFCToolBarImages对象的指针,该对象包含应用程序中所有工具栏的默认图像集合。

备注

此共享方法提供对应用程序的所有默认工具栏图像集合的访问权限。 调用 CMFCToolBar::LoadBitmap 方法以将图像添加到集合。

CMFCToolBar::GetImageSize

返回工具栏按钮图像的当前大小。

CSize GetImageSize() const;

返回值

CSize对象,该对象表示工具栏按钮图像的当前大小。

CMFCToolBar::GetImagesOffset

返回索引偏移,它用于在工具栏按钮图像的全局列表中查找此工具栏的工具栏按钮图像。

int GetImagesOffset() const;

返回值

工具栏图像的索引偏移。

注解

所有工具栏默认图像都存储在全局 CMFCToolBarImages列表中。 工具栏中每个按钮的图像将连续存储在该列表中。 若要计算图像的索引,请将工具栏中按钮的索引添加到该工具栏按钮的图像列表开头的偏移。

调用 CMFCToolBar::ButtonToIndex,以在给定指向工具栏按钮的指针的情况下获取该按钮的索引。

调用 CMFCToolBar::GetImages 以获取指向工具栏图像集合的指针。

CMFCToolBar::GetInvalidateItemRect

检索必须在给定索引处为按钮重新绘制的工作区的区域。

virtual void GetInvalidateItemRect(
    int nIndex,
    LPRECT lpRect) const;

参数

nIndex
[in] 要为其检索工作区的按钮的索引。

lpRect
[out] 指向接收工作区区域的 RECT 对象的指针。

备注

lpRect 参数不能为 NULL。 如果提供的索引处不存在任何按钮,则 lpRect 接收初始化为零的 RECT 对象。

CMFCToolBar::GetItemID

返回指定索引处工具栏按钮的命令 ID。

UINT GetItemID(int nIndex) const;

参数

nIndex
[in] 指定工具栏按钮的索引。

返回值

工具栏按钮的命令 ID;如果具有指定索引的按钮不存在,则为零。

CMFCToolBar::GetItemRect

返回指定索引处按钮的边界矩形。

virtual void GetItemRect(
    int nIndex,
    LPRECT lpRect) const;

参数

nIndex
[in] 指定工具栏按钮的索引。

lpRect
[out] 指向接收图像边界矩形坐标的 CRect 对象的指针。

备注

如果指定索引处的按钮不存在,则 CRect 所指向的 lpRect 对象设置为 0。

示例

下面的示例演示如何使用 CMFCToolBar 类的 GetItemRect 方法。 此代码片段是 IE 演示示例的一部分。

CMFCToolBar m_wndToolBar;
CRect rectToolBar;
m_wndToolBar.GetItemRect(0, &rectToolBar);

CMFCToolBar::GetLargeColdImages

返回指向应用程序中大型冷工具栏按钮图像集合的指针。

static CMFCToolBarImages* GetLargeColdImages();

返回值

指向大型冷图像集合的指针。

注解

冷图像是用户不与工具栏按钮交互时使用的图像。 调用 CMFCToolBar::LoadBitmapEx 以加载大型冷图像。

CMFCToolBar::GetLargeDisabledImages

返回指向应用程序中大型已禁用工具栏按钮图像的集合的指针。

static CMFCToolBarImages* GetLargeDisabledImages();

返回值

指向大型已禁用工具栏按钮图像的集合的指针。

备注

大型图像是常规工具栏按钮图像的大型版本。 调用 CMFCToolBar::LoadBitmapExCMFCToolBar::LoadBitmap 以加载大型图像。

CMFCToolBar::GetLargeImages

返回指向应用程序中大型工具栏按钮图像的集合的指针。

static CMFCToolBarImages* GetLargeImages();

返回值

指向大型工具栏按钮图像的集合的指针。

备注

大型图像是常规工具栏按钮图像的大型版本。 调用 CMFCToolBar::LoadBitmapEx 以加载大型图像。

CMFCToolBar::GetLockedColdImages

返回指向工具栏中锁定的冷图像集合的指针。

CMFCToolBarImages* GetLockedColdImages();

返回值

指向锁定的冷图像集合的指针,如果工具栏未锁定,则为 NULL

备注

锁定的图像是框架在用户无法自定义工具栏时使用的常规工具栏按钮图像的版本。 冷图像是用户不与工具栏按钮交互时使用的图像。

如果工具栏未锁定,此方法将返回 NULL。 如果工具栏未锁定,此方法还会在调试生成中生成断言失败。 有关锁定的工具栏的详细信息,请参阅 CMFCToolBar::IsLocked

调用 CMFCToolBar::LoadBitmapEx 方法以加载锁定的冷图像。

CMFCToolBar::GetLockedDisabledImages

返回指向工具栏中锁定的已禁用图像集合的指针。

CMFCToolBarImages* GetLockedDisabledImages();

返回值

指向锁定的已禁用图像集合的指针,如果工具栏未锁定,则为 NULL

备注

锁定的图像是框架在用户无法自定义工具栏时使用的常规工具栏按钮图像的版本。 禁用的图像是框架在按钮具有 TBBS_DISABLED 样式时使用的图像。

如果工具栏未锁定,此方法将返回 NULL。 如果工具栏未锁定,此方法还会在调试生成中生成断言失败。 有关锁定的工具栏的详细信息,请参阅 CMFCToolBar::IsLocked

调用 CMFCToolBar::LoadBitmapEx 方法以加载锁定的已禁用图像。

CMFCToolBar::GetLockedImages

返回指向工具栏中锁定的按钮图像集合的指针。

CMFCToolBarImages* GetLockedImages();

返回值

指向锁定的工具栏按钮图像集合的指针,如果工具栏未锁定,则为 NULL

备注

锁定的图像是框架在用户无法自定义工具栏时使用的常规工具栏按钮图像的版本。

如果工具栏未锁定,此方法将返回 NULL。 如果工具栏未锁定,此方法还会在调试生成中生成断言失败。 有关锁定的工具栏的详细信息,请参阅 CMFCToolBar::IsLocked

CMFCToolBar::GetLockedImageSize

返回锁定的工具栏图像的默认大小。

CSize GetLockedImageSize() const;

返回值

指定锁定的工具栏图像的大小的 CSize 结构,如果工具栏未锁定,则为空的 CSize 结构。

注解

锁定的图像是框架在用户无法自定义工具栏时使用的常规工具栏按钮图像的版本。

如果工具栏未锁定,此方法将返回宽度为零且高度为零的 CSize 结构。 如果工具栏未锁定,此方法还会在调试生成中生成断言失败。 有关锁定的工具栏的详细信息,请参阅 CMFCToolBar::IsLocked

调用 CMFCToolBar::SetLockedSizes 方法以指定锁定的图像大小。

CMFCToolBar::GetLockedMenuImages

返回指向工具栏中锁定的工具栏菜单图像的集合的指针。

CMFCToolBarImages* GetLockedMenuImages();

返回值

指向锁定的工具栏菜单图像集合的指针,如果工具栏未锁定,则为 NULL

备注

锁定的图像是常规工具栏菜单图像的版本,框架在用户无法自定义工具栏时使用它们。

如果工具栏未锁定,此方法将返回 NULL。 如果工具栏未锁定,此方法还会在调试生成中生成断言失败。 有关锁定的工具栏的详细信息,请参阅 CMFCToolBar::IsLocked

调用 CMFCToolBar::LoadBitmapEx 方法以加载锁定的菜单图像。

CMFCToolBar::GetMenuButtonSize

返回应用程序中的菜单按钮的大小。

static CSize GetMenuButtonSize();

返回值

表示菜单按钮的大小(以像素为单位)的 CSize 对象。

备注

工具栏上的菜单按钮的大小作为全局变量进行维护,可以通过此静态方法进行检索。

调用 CMFCToolBar::SetMenuSizes 以设置此全局变量。

CMFCToolBar::GetMenuImages

返回指向应用程序中按钮图像的集合的指针。

static CMFCToolBarImages* GetMenuImages();

返回值

指向菜单图像集合的指针。

备注

调用 CMFCToolBar::LoadBitmapEx 方法以加载菜单图像。

调用 CMFCToolBar::SetMenuSizes 方法以设置按钮及其图像的大小。

CMFCToolBar::GetMenuImageSize

返回应用程序中的菜单按钮图像的大小。

static CSize GetMenuImageSize();

返回值

表示菜单图像的大小的 CSize 对象。

注解

此方法返回工具栏菜单按钮上作为全局变量维护的图像大小。 调用 CMFCToolBar::SetMenuSizes 以设置此全局变量。

CMFCToolBar::GetOrigButtons

检索工具栏的非自定义按钮的集合。

const CObList& GetOrigButtons() const;

返回值

对工具栏中非自定义按钮列表的引用。

备注

框架会在用户自定义工具栏按钮之前创建它们的副本。 CMFCToolBar::SetButtons 方法将所提供的数组中每个按钮的副本添加到原始按钮列表中。 CMFCToolBar::RestoreOriginalState 方法通过从资源文件加载工具栏来还原工具栏的原始状态。

若要设置工具栏的原始按钮列表,请调用 CMFCToolBar::SetOrigButtons 方法。

CMFCToolBar::GetOrigResetButtons

检索工具栏的非自定义重置按钮的集合。

const CObList& GetOrigResetButtons() const;

返回值

对工具栏的非自定义重置按钮列表的引用。

注解

当用户在自定义模式下选择“重置”按钮时,框架使用此方法还原从工具栏中删除的按钮。

CMFCToolBar::SetButtons 方法在调用 CMFCToolBar::OnReset 方法后,将每个工具栏按钮的副本添加到原始重置按钮的列表。 可以重写 CMFCToolBar::OnReset 方法以在用户按下“重置”按钮后自定义按钮的外观。

CMFCToolBar::GetResourceID

检索工具栏的资源 ID。

UINT GetResourceID() const;

返回值

工具栏的资源 ID。

备注

调用 CMFCToolBar::LoadToolBarEx 方法以设置工具栏的资源 ID。

CMFCToolBar::GetRouteCommandsViaFrame

确定哪个对象(父框架或所有者)将命令发送到工具栏。

BOOL GetRouteCommandsViaFrame();

返回值

如果父框架将命令发送到工具栏,则为非零;如果所有者将命令发送到工具栏,则为 0。

备注

默认情况下,父框架将命令发送到工具栏。 调用 CMFCToolBar::SetRouteCommandsViaFrame 以更改这一行为。

如果此方法返回非零值,则可以使用 CMFCToolBar::GetCommandTarget 方法检索指向父框架对象的指针。 有关使用此方法的示例,请参阅 VisualStudioDemo 示例。

CMFCToolBar::GetRowHeight

返回工具栏按钮的高度。

virtual int GetRowHeight() const;

返回值

工具栏按钮的高度(以像素为单位)。

备注

框架调用此方法以计算工具栏布局。 在派生类中重写此方法,为工具栏指定不同的高度。

CMFCToolBar::GetShowTooltips

指定是否为工具栏按钮显示工具提示。

static BOOL GetShowTooltips();

返回值

如果显示工具栏按钮的工具提示,则为 TRUE;否则为 FALSE

注解

默认情况下会显示工具提示。 可以通过调用 CMFCToolBar::SetShowTooltips 来更改此静态标志。

CMFCToolBar::GetSiblingToolBar

检索工具栏的同级。

CMFCToolBar* GetSiblingToolBar();

返回值

指向同级工具栏的指针。

备注

有关如何启用“在一行上显示按钮”和“分两行显示按钮”按钮的详细信息,请参阅 CMFCToolBar::SetSiblingToolBar

CMFCToolBar::GetUserImages

返回指向应用程序中用户定义的工具栏按钮图像的集合的指针。

static CMFCToolBarImages* GetUserImages();

返回值

指向应用程序中所有工具栏的用户定义的工具栏按钮图像集合的指针。

备注

调用 CMFCToolBar::SetUserImages 方法以设置应用程序中用户定义的图像的集合。

CMFCToolBar::HitTest

返回位于指定位置的工具栏按钮的索引。

virtual int HitTest(CPoint point);

参数

point
[in] 要测试的点(以工作区坐标为单位)。

返回值

位于指定位置的按钮的索引,如果没有此类按钮或按钮是分隔符,则为 -1。

CMFCToolBar::InsertButton

向工具栏中插入按钮。

virtual int InsertButton(
    const CMFCToolBarButton& button,
    INT_PTR iInsertAt=-1);

virtual int InsertButton(
    CMFCToolBarButton* pButton,
    int iInsertAt=-1);

参数

button
[in] 指定要插入的按钮。

iInsertAt
[in] 指定要插入按钮的从零开始的位置。

返回值

插入按钮的位置;如果发生错误,则为 -1。

注解

如果 iInsertAt 为 -1,此方法会将该按钮添加到工具栏按钮列表的末尾。

调用 CMFCToolBar::InsertSeparator 方法以将分隔符插入工具栏中。

CMFCToolBar::InsertSeparator

向工具栏中插入分隔符。

virtual int InsertSeparator(INT_PTR iInsertAt=-1);

参数

iInsertAt
[in] 指定要插入分隔符的从零开始的位置。 此参数必须大于 0。

返回值

插入分隔符的位置;如果发生错误,则为 -1。

注解

调用此方法以在两个现有按钮之间插入分隔符。 如果 iInsertAt 为 -1,此方法会将该分隔符添加到工具栏按钮列表的末尾。

不能使用此方法将分隔符添加到空工具栏。

调用 CMFCToolBar::InsertButton 方法以将按钮插入工具栏中。

CMFCToolBar::InvalidateButton

使提供的索引处存在的工具栏按钮的工作区失效。

CMFCToolBarButton* InvalidateButton(int nIndex);

参数

nIndex
[in] 工具栏中按钮的从零开始的索引。

返回值

指向提供的索引处存在的 CMFCToolBarButton 对象的指针,如果不存在此类对象,则为 NULL

备注

框架在更新与工具栏按钮关联的工作区时调用此方法。 它使用在提供的索引处存在的 CMFCToolBarButton 对象的工作区矩形调用 CWnd::InvalidateRect 方法。

CMFCToolBar::IsAddRemoveQuickCustomize

使用“自定义”菜单选项确定用户是否可以添加或删除工具栏按钮。

BOOL IsAddRemoveQuickCustomize();

返回值

如果用户可以使用“自定义”菜单选项修改工具栏,则为 TRUE;否则为 FALSE

备注

CMFCToolBar::IsAltCustomizeMode

指定快速自定义是否将用于拖动按钮。 启用快速自定义后,用户可以按住 Alt 键并将按钮拖动到新位置。

static BOOL __stdcall IsAltCustomizeMode();

返回值

如果快速自定义将用于拖动按钮,则为 TRUE;否则为 FALSE

备注

CMFCToolBar::IsAutoGrayInactiveImages

指定是否启用非活动(非突出显示)按钮图像的自动生成。

static BOOL IsAutoGrayInactiveImages();

返回值

如果启用了自动使非活动图像变暗的选项,则为 TRUE;否则为 FALSE

备注

可以通过调用 CMFCToolBar::AutoGrayInactiveImages 来启用或禁用非活动图像的自动变暗。

CMFCToolBar::IsBasicCommand

确定命令是否位于基本命令列表中。

static BOOL IsBasicCommand(UINT uiCmd);

参数

uiCmd
[in] 指定要检查的命令。

返回值

如果指定的命令属于基本命令的列表,则为 TRUE;否则为 FALSE

备注

此静态方法确定由 uiCmd 指定的命令是否属于基本命令的全局列表。 可以通过调用 CMFCToolBar::AddBasicCommandCMFCToolBar::SetBasicCommands 来更改基本命令的列表。

CMFCToolBar::IsButtonExtraSizeAvailable

确定工具栏是否可以显示具有扩展边框的按钮。

virtual BOOL IsButtonExtraSizeAvailable() const;

返回值

如果工具栏可以显示具有额外边框大小的按钮,则为 TRUE;否则为 FALSE

注解

如果工具栏对象可以显示具有扩展边框的按钮,则返回 TRUE。 工具栏按钮在处理 CMFCToolBarButton::OnChangeParentWnd 通知并相应地设置其内部额外边框大小标志时调用此方法。 稍后可以通过调用 CMFCToolBarButton::IsExtraSize 来检索此内部标志。

在派生自 CMFCToolBar 的的类中重写此方法,如果工具栏可以显示具有额外边框大小的工具栏按钮,则返回 TRUE,否则返回 FALSE。 默认实现返回 TRUE

CMFCToolBar::IsButtonHighlighted

确定是否突出显示指定的按钮。

BOOL IsButtonHighlighted(int iButton) const;

参数

iButton
[in] 指定工具栏按钮的索引。

返回值

[in] 如果突出显示指定的按钮,则为 TRUE;否则为 FALSE

备注

CMFCToolBar::IsCommandPermitted

确定是否允许命令。

static BOOL IsCommandPermitted(UINT uiCmd);

参数

uiCmd
[in] 指定要检查的命令。

返回值

如果允许指定的命令,则为 TRUE;否则为 FALSE

注解

此静态方法确定由 uiCmd 指定的命令是否属于不允许的命令的全局列表。

可以通过调用 CMFCToolBar::SetNonPermittedCommands 来更改不允许的命令的列表。

CMFCToolBar::IsCommandRarelyUsed

确定是否很少使用命令。

static BOOL IsCommandRarelyUsed(UINT uiCmd);

参数

uiCmd
[in] 指定要检查的命令。

返回值

如果很少使用指定的命令,则为 TRUE;否则为 FALSE

备注

当出现以下一个或多个情况时,IsCommandRarelyUsed 方法将返回 FALSE

  • 指定的命令属于基本命令的列表

  • 指定的命令是标准命令之一

  • 框架处于自定义模式

  • 基本命令的列表为空

  • 超过 20% 的命令调用是对指定命令的调用。

CMFCToolBar::IsCustomizeMode

指定工具栏框架是否处于自定义模式。

static BOOL IsCustomizeMode();

返回值

如果框架处于自定义模式,则为 TRUE;否则为 FALSE

备注

可以通过调用 CMFCToolBar::SetCustomizeMode 来切换自定义模式。

当用户调用“自定义”对话框(CMFCToolBarsCustomizeDialog)时,框架将更改模式。

CMFCToolBar::IsDragButton

确定是否拖动工具栏按钮。

BOOL IsDragButton(const CMFCToolBarButton* pButton) const;

参数

pButton
[in] 指向工具栏按钮的指针。

返回值

如果正在拖动指定的按钮,则为 TRUE;否则为 FALSE

备注

CMFCToolBar::IsExistCustomizeButton

确定工具栏是否包含“自定义”按钮。

BOOL IsExistCustomizeButton();

返回值

如果工具栏包含“自定义”按钮,则为 TRUE;否则为 FALSE

备注

如果此方法返回 TRUE,则 CMFCToolBar::GetCustomizeButton 方法将返回指向工具栏末尾显示的“自定义”按钮的指针。

使用 CMFCToolBar::EnableCustomizeButton 方法将“自定义”按钮添加到工具栏。

CMFCToolBar::IsFloating

确定工具栏是否浮动。

virtual BOOL IsFloating() const;

返回值

如果工具栏浮动,则为 TRUE;否则为 FALSE

CMFCToolBar::IsLargeIcons

指定应用程序中的工具栏当前是否显示大图标。

static BOOL IsLargeIcons();

返回值

如果应用程序使用的是大图标,则为 TRUE;否则为 FALSE

注解

调用 CMFCToolBar::SetLargeIcons 以在大图标和常规图标之间切换。

当用户在“自定义”对话框的“选项”页上切换“大图标”复选框时,框架会自动更改模式。

CMFCToolBar::IsLastCommandFromButton

确定是否从指定的工具栏按钮发送了最近执行的命令。

static BOOL IsLastCommandFromButton(CMFCToolBarButton* pButton);

参数

pButton
[in] 指向按钮的指针。

返回值

如果最后一个命令是从 pButton 指定按钮发送的,则为 TRUE;否则为 FALSE

备注

此方法通过调用 CWnd::GetCurrentMessage 来获取指向 MSG 结构的指针。 然后,它将按钮的 HWNDMSG::lParamMSG::hwnd 成员进行比较,以确定该按钮是否为命令的源。

CMFCToolBar::IsLocked

确定工具栏是否锁定。

BOOL IsLocked() const;

返回值

如果工具栏被锁定,则为 TRUE;否则为 FALSE

注解

当用户无法执行自定义任务(如重新定位工具栏按钮)时,此方法返回 TRUE

锁定的工具栏使用单独的图像列表。 有关这些图像列表的详细信息,请参阅 CMFCToolBar::LoadBitmapEx

CMFCToolBar::IsOneRowWithSibling

确定工具栏及其同级工具栏是否定位在同一行上。

BOOL IsOneRowWithSibling();

返回值

如果工具栏及其同级定位在同一行上,则为 TRUE;否则为 FALSE

备注

CMFCCustomizeButton::CreatePopupMenu 方法调用此方法以确定如何显示“自定义”弹出菜单。 如果此方法返回 TRUE,则框架显示“在一行上显示按钮”按钮。 否则,框架显示“分两行显示按钮”按钮。

通常不需要使用此方法。 若要启用“在一行上显示按钮”或“分两行显示按钮”按钮,请调用 CMFCToolBar::SetSiblingToolBar

CMFCToolBar::IsResourceChanged

virtual BOOL IsResourceChanged() const;

返回值

注解

CMFCToolBar::IsSibling

BOOL IsSibling();

返回值

注解

CMFCToolBar::IsUserDefined

指定工具栏是否是用户定义的。

BOOL IsUserDefined() const;

返回值

如果用户创建了工具栏,则为 TRUE;否则为 FALSE

CMFCToolBar::LoadBitmap

从应用程序资源加载工具栏图像。

virtual BOOL LoadBitmap(
    UINT uiResID,
    UINT uiColdResID=0,
    UINT uiMenuResID=0,
    BOOL bLocked=FALSE,
    UINT uiDisabledResID=0,
    UINT uiMenuDisabledResID=0);

参数

uiResID
[in] 用于引用热工具栏图像的位图的资源 ID。

uiColdResID
[in] 用于引用冷工具栏图像的位图的资源 ID。

uiMenuResID
[in] 用于引用常规菜单图像的位图的资源 ID。

bLocked
[in] 如果锁定工具栏,则为 TRUE;否则为 FALSE

uiDisabledResID
[in] 用于引用禁用工具栏图像的位图的资源 ID。

uiMenuDisabledResID
[in] 用于引用禁用菜单图像的位图的资源 ID。

返回值

如果该方法成功,则为非零;否则为零。

备注

CMFCToolBar::LoadToolBarEx 方法调用此方法以加载与工具栏关联的图像。 重写此方法以执行图像资源的自定义加载。

调用 LoadBitmapEx 方法以在创建工具栏后加载其他图像。

CMFCToolBar::LoadBitmapEx

virtual BOOL LoadBitmapEx(
    CMFCToolBarInfo& params,
    BOOL bLocked = FALSE);

参数

[in] params
[in] bLocked\

返回值

备注

CMFCToolBar::LoadLargeIconsState

static BOOL __stdcall LoadLargeIconsState(LPCTSTR lpszProfileName = NULL);

参数

[in] lpszProfileName\

返回值

注解

CMFCToolBar::LoadParameters

从 Windows 注册表加载全局工具栏选项。

static BOOL LoadParameters(LPCTSTR lpszProfileName=NULL);

参数

lpszProfileName
[in] 指定 Windows 注册表项的相对路径。

返回值

如果该方法成功,则为非零;否则为零。

备注

此方法加载全局参数,例如菜单动画类型、菜单阴影样式以及是否显示 Windows 注册表中的大图标。

CWinAppEx::LoadState 方法在应用程序的初始化过程中调用此方法。

CMFCToolBar::LoadState

从 Windows 注册表加载工具栏状态信息。

virtual BOOL LoadState(
    LPCTSTR lpszProfileName=NULL,
    int nIndex=-1,
    UINT uiID=(UINT)-1);

参数

lpszProfileName
[in] 指定 Windows 注册表项的相对路径。

nIndex
[in] 指定工具栏的控件 ID。

uiID
[in] 指定工具栏的资源 ID。

返回值

如果该方法成功,则为非零;否则为零。

备注

框架在应用程序的初始化过程中调用此方法。 有关详细信息,请参阅 CWinAppEx::LoadState

CMFCToolBar::LoadToolBar

从应用程序资源加载工具栏。

virtual BOOL LoadToolBar(
    UINT uiResID,
    UINT uiColdResID=0,
    UINT uiMenuResID=0,
    BOOL bLocked=FALSE,
    UINT uiDisabledResID=0,
    UINT uiMenuDisabledResID=0,
    UINT uiHotResID=0);

参数

uiResID
[in] 工具栏的资源 ID。

uiColdResID
[in] 用于引用冷工具栏图像的位图的资源 ID。

uiMenuResID
[in] 用于引用常规菜单图像的位图的资源 ID。

bLocked
[in] 一个布尔值,该值指定工具栏是否已锁定。 如果此参数为 TRUE,则工具栏被锁定。 否则,工具栏未锁定。

uiDisabledResID
[in] 用于引用禁用工具栏图像的位图的资源 ID。

uiMenuDisabledResID
[in] 用于引用禁用菜单图像的位图的资源 ID。

uiHotResID
[in] 用于引用热工具栏图像的位图的资源 ID。

返回值

如果该方法成功,则为非零;否则为零。

注解

框架在初始化期间调用此方法以加载与工具栏关联的图像。

示例

以下示例演示了如何在 CMFCToolBar 类中使用 LoadToolBar 方法。 此代码片段是 IE 演示示例的一部分。

CMFCToolBar m_wndToolBar;
// The this pointer points to CMainFrame class which extends the CFrameWnd class.
if (!m_wndToolBar.CreateEx(this, TBSTYLE_TRANSPARENT) ||
    !m_wndToolBar.LoadToolBar(IDR_MAINFRAME, uiToolbarColdID, uiMenuID,
                              FALSE /* Not locked */, 0, 0, uiToolbarHotID))
{
   TRACE0("Failed to create toolbar\n");
   return -1; // fail to create
}

CMFCToolBar::LoadToolBarEx

使用 CMFCToolBarInfo 帮助程序类从应用程序资源加载工具栏,使应用程序能够使用大型图像。

virtual BOOL LoadToolBarEx(
    UINT uiToolbarResID,
    CMFCToolBarInfo& params,
    BOOL bLocked=FALSE);

参数

uiToolbarResID
[in] 工具栏的资源 ID。

params
[in] 对包含工具栏图像的资源 ID 的 CMFCToolBarInfo 对象的引用。

bLocked
[in] 一个布尔值,该值指定工具栏是否已锁定。 如果此参数为 TRUE,则工具栏被锁定。 否则,工具栏未锁定。

返回值

如果该方法成功,则为非零;否则为零。

备注

调用此方法,以从应用程序资源加载工具栏图像。

CMFCToolBar::m_dblLargeImageRatio

指定大型图像的维度(高度或宽度)与常规图像的维度之间的比率。

AFX_IMPORT_DATA static double m_dblLargeImageRatio;

备注

默认比率为 2。 可以更改此值以使大型工具栏图像更大或更小。

如果未指定一组大型图像,则框架使用此数据成员。 例如,如果仅提供大小为 16x16 的小型图像集,并且希望大型图像的大小为 24x24,请将此数据成员设置为 1.5。

CMFCToolBar::NextMenu

virtual BOOL NextMenu();

返回值

备注

CMFCToolBar::OnBeforeRemoveButton

virtual BOOL OnBeforeRemoveButton(
    CMFCToolBarButton* pButton,
    DROPEFFECT dropEffect);

参数

pButton
[in] 未使用。

dropEffect
[in] 未使用。

返回值

备注

CMFCToolBar::OnChangeHot

当用户在工具栏上选择按钮时由框架调用。

virtual void OnChangeHot(int iHot);

参数

iHot
[in] 指定所选工具栏按钮的索引;如果未选择工具栏按钮,则为 -1。

备注

重写此方法以处理用户选择工具栏上的按钮的通知。

CMFCToolBar::OnChangeVisualManager

virtual void OnChangeVisualManager();

注解

CMFCToolBar::OnFillBackground

CBasePane::DoPaint 中由框架调用以填充工具栏背景。

virtual void OnFillBackground(CDC* pDC);

参数

pDC
[in] 指向设备上下文的指针。

注解

当已填充工具栏的背景时,CMFCToolBar::DoPaint 调用此方法。 默认实现不执行任何操作。

重写此方法以在派生类中绘制自定义背景。

CMFCToolBar::OnGlobalFontsChanged

virtual void OnGlobalFontsChanged();

备注

CMFCToolBar::OnReset

将工具栏还原到其原始状态。

virtual void OnReset();

注解

重写此方法以处理有关工具栏重置的通知。

默认实现不执行任何操作。 当工具栏具有在工具栏还原到其原始状态时必须替换的虚拟按钮时,在派生自 CMFCToolBar 的类中重写 OnReset

CMFCToolBar::OnSetAccData

virtual BOOL OnSetAccData(long lVal);

参数

[in] lVal\

返回值

备注

CMFCToolBar::OnSetDefaultButtonText

将工具栏按钮的文本还原到其默认状态。

virtual BOOL OnSetDefaultButtonText(CMFCToolBarButton* pButton);

参数

pButton
[in] 指向将设置其文本的按钮。

返回值

如果已成功还原文本,则为 TRUE;否则为 FALSE

备注

重写此方法,以处理工具栏按钮的文本将更改为其默认值的通知。

默认实现从应用程序资源加载按钮的文本。

CMFCToolBar::OnUserToolTip

当即将显示按钮的工具提示时由框架调用。

virtual BOOL OnUserToolTip(
    CMFCToolBarButton* pButton,
    CString& strTTText) const;

参数

pButton
[in] 指向要为其显示工具提示的工具栏按钮。

strTTText
[out] 对接收工具提示的文本的 CString 对象的引用。

返回值

如果使用工具提示文本填充了 strTTText,则为 TRUE;否则为 FALSE

注解

当工具栏按钮的工具提示即将显示时,框架将调用此方法。 如果 OnUserToolTip 返回 TRUE,框架将显示一个包含由 strTTText 中的 OnUserToolTip 返回的文本的工具提示。 否则,工具提示包含按钮文本。

重写 OnUserToolTip 以自定义工具栏按钮的工具提示。 默认实现调用 CMFCToolBar::OnUserToolTip 以获取工具提示文本。

CMFCToolBar::PrevMenu

virtual BOOL PrevMenu();

返回值

备注

CMFCToolBar::ProcessCommand

WM_COMMAND 消息发布到拥有工具栏的窗口。

BOOL ProcessCommand(CMFCToolBarButton* pButton);

参数

pButton
[in] 指向工具栏上的按钮的指针。

返回值

此方法应始终返回 TRUE。 MFC 在内部使用 FALSE 值。

备注

此方法通过调用 WM_COMMAND 并将指定按钮的命令 ID 作为 wParam 参数传递来将 CWnd::PostMessage 消息发布到拥有工具栏的窗口。

使用 ON_COMMAND 宏将 WM_COMMAND 消息映射到成员函数。

CMFCToolBar::RemoveAllButtons

从工具栏中删除所有按钮和分隔符。

virtual void RemoveAllButtons();

备注

框架在重新创建或销毁工具栏时调用此方法。

CMFCToolBar::RemoveButton

从工具栏中删除具有指定索引的按钮。

virtual BOOL RemoveButton(int iIndex);

参数

iIndex
[in] 指定要删除的按钮的从零开始的索引。

返回值

如果该方法成功,则为 TRUE;如果指定的索引无效或索引引用“自定义”按钮,则为 FALSE

备注

此方法更新受删除按钮影响的其他工具栏属性。 例如,此方法从工具栏中删除不重要的分隔符,并重新生成快捷键表。

有关“自定义”按钮的详细信息,请参阅 CMFCToolBar::EnableCustomizeButton

CMFCToolBar::RemoveStateFromRegistry

从 Windows 注册表中删除工具栏的状态信息。

virtual BOOL RemoveStateFromRegistry(
    LPCTSTR lpszProfileName=NULL,
    int nIndex=-1,
    UINT uiID=(UINT)-1);

参数

lpszProfileName
[in] 指定状态信息所在的注册表项。

nIndex
[in] 工具栏的控件 ID。

uiID
[in] 工具栏的资源 ID。 如果此参数为 -1,则此方法使用 CWnd::GetDlgCtrlID 方法检索资源 ID。

返回值

如果该方法成功,则为非零;否则为零。

注解

框架在删除用户定义的工具栏时调用此方法。

如果在 Windows 注册表中存储其他状态信息,请重写此方法。

CMFCToolBar::ReplaceButton

将工具栏按钮替换为另一个工具栏按钮。

int ReplaceButton(
    UINT uiCmd,
    const CMFCToolBarButton& button,
    BOOL bAll=FALSE);

参数

uiCmd
[in] 要替换的按钮的命令 ID。

button
[in] 对要插入的 CMFCToolBarButton 的引用。

bAll
[in] 一个布尔值,该值指定是否替换具有 uiCmd 指定的命令 ID 的所有按钮。 如果此参数为 TRUE,则替换具有指定命令 ID 的所有按钮。 否则,将替换第一个按钮。

返回值

已替换的按钮数。 如果工具栏上不存在具有指定命令 ID 的按钮,此方法将返回 0。

注解

如果要添加无法从资源加载的工具栏按钮,请调用此方法。 可以在设计时创建占位符按钮,并在初始化工具栏时将该按钮替换为自定义按钮。 有关使用此方法的示例,请参阅 VisualStudioDemo 示例。

示例

以下示例演示了如何在 CMFCToolBar 类中使用 ReplaceButton 方法。 此代码片段是 IE 演示示例的一部分。

CMFCToolBar m_wndToolBar;
// CMenu menuHistory
// CString str
m_wndToolBar.ReplaceButton(ID_GO_BACK,
                           CMFCToolBarMenuButton(ID_GO_BACK, menuHistory,
                                                 GetCmdMgr()->GetCmdImage(ID_GO_BACK), str));

CMFCToolBar::ResetAll

将所有工具栏还原到其原始状态。

static void __stdcall ResetAll();

备注

此方法在可还原的应用程序中的每个工具栏上调用 CMFCToolBar::RestoreOriginalState 方法。 它使用 CMFCToolBar::CanBeRestored 方法来确定是否可以还原工具栏。

CMFCToolBar::ResetAllImages

清除应用程序中的所有工具栏图像集合。

static void __stdcall ResetAllImages();

备注

此方法清除由 CMFCToolBar::LoadToolBarCMFCToolBar::LoadBitmap 方法初始化的图像集合。

CMFCToolBar::ResetImages

virtual void ResetImages();

注解

CMFCToolBar::RestoreFocus

virtual void RestoreFocus();

注解

CMFCToolBar::RestoreOriginalState

还原工具栏的原始状态。

virtual BOOL RestoreOriginalState();

返回值

如果该方法成功,则为 TRUE;如果该方法失败或工具栏是用户定义的,则为 FALSE

注解

此方法使用 CMFCToolBar::LoadToolBar 方法从资源文件加载工具栏。

当用户在“自定义”对话框的“工具栏”页面上选择“全部重置”按钮时,框架将调用该方法。

CMFCToolBar::SaveParameters

static BOOL __stdcall SaveParameters(LPCTSTR lpszProfileName = NULL);

参数

[in] lpszProfileName\

返回值

备注

CMFCToolBar::SaveState

将工具栏的状态信息保存在 Windows 注册表中。

virtual BOOL SaveState(
    LPCTSTR lpszProfileName=NULL,
    int nIndex=-1,
    UINT uiID=(UINT)-1);

参数

lpszProfileName
[in] 指定 Windows 注册表项的相对路径。

nIndex
[in] 工具栏的控件 ID。

uiID
[in] 工具栏的资源 ID。

返回值

如果该方法成功,则为非零;否则为零。

备注

框架在将应用程序状态保存到注册表时调用此方法。 有关详细信息,请参阅 CWinAppEx::SaveState

CMFCToolBar::SetBasicCommands

设置用户打开菜单时始终显示的命令列表。

static void __stdcall SetBasicCommands(CList<UINT,UINT>& lstCommands);

参数

lstCommands
[in] 对包含命令集合的 CList 对象的引用。

备注

打开菜单时,始终显示基本命令。 当用户选择查看最近使用的命令时,此方法有意义。

使用 CMFCToolBar::AddBasicCommand 方法将命令添加到基本命令的列表。 使用 CMFCToolBar::GetBasicCommands 方法检索应用程序使用的基本命令的列表。

有关使用此方法的示例,请参阅资源管理器示例。

CMFCToolBar::SetButtonInfo

设置工具栏按钮的命令 ID、样式和图像 ID。

void SetButtonInfo(
    int nIndex,
    UINT nID,
    UINT nStyle,
    int iImage);

参数

nIndex
[in] 设置其属性的按钮的从零开始的索引。

nID
[in] 按钮的命令 ID。

nStyle
[in] 按钮的样式。 有关可用工具栏按钮样式的列表,请参阅工具栏控件样式

iImage
[in] 按钮的从零开始的图像索引(即工具栏图像集合中的索引)。

注解

调用此方法以设置工具栏按钮的属性。

在调试生成中,如果 nIndex 指定的索引无效,此方法将生成断言失败。

调用 CMFCToolBar::SetButtonStyle 方法以仅设置按钮的样式。

CMFCToolBar::SetButtons

设置工具栏的按钮。

virtual BOOL SetButtons(
    const UINT* lpIDArray,
    int nIDCount,
    BOOL bRemapImages=TRUE);

参数

lpIDArray
[in] 指向要插入的按钮的命令 ID 的数组的指针。

nIDCount
[in] lpIDArray 中的项数。

bRemapImages
[in] 一个布尔值,该值指定是否将现有按钮图像与插入的按钮关联。 如果此参数为 TRUE,则重新映射图像。

返回值

如果该方法成功,则为非零;否则为零。

备注

调用此方法以从工具栏中删除现有按钮,并插入新按钮的集合。

此方法将“自定义”按钮添加到工具栏,并将 AFX_WM_RESETTOOLBAR 消息发送到工具栏的父窗口。 有关“自定义”按钮的详细信息,请参阅 CMFCToolBar::EnableCustomizeButton

CMFCToolBar::SetButtonStyle

设置给定索引处的工具栏按钮的样式。

virtual void SetButtonStyle(
    int nIndex,
    UINT nStyle);

参数

nIndex
[in] 要设置其样式的工具栏按钮的从零开始的索引。

nStyle
[in] 按钮的样式。 有关可用工具栏按钮样式的列表,请参阅工具栏控件样式

备注

如果 nStyleTBBS_DISABLED,此方法将删除 TBBS_PRESSED 样式,因为用户无法选择已禁用的按钮。

CMFCToolBar::SetButtonText

设置工具栏按钮的文本标签。

BOOL SetButtonText(
    int nIndex,
    LPCTSTR lpszText);

参数

nIndex
[in] 工具栏按钮的索引。

lpszText
[in] 工具栏按钮的文本标签。 必须为非空。

返回值

如果该方法成功,则为 TRUE;否则为 FALSE

注解

如果提供的索引不引用有效的工具栏按钮,则此方法返回 FALSE

CMFCToolBar::SetCommandUsageOptions

指定很少使用的命令未显示在应用程序的菜单中的时间。

static BOOL SetCommandUsageOptions(
    UINT nStartCount,
    UINT nMinUsagePercentage=5);

参数

nStartCount
[in] 指定在框架仅显示基本命令和最近使用的命令之前必须执行命令的次数。

nMinUsagePercentage
[in] 必须执行命令以被视为最近使用的命令的次数百分比。

返回值

如果 nMinUsagePercentage 等于或大于 100,则为 FALSE;否则为 TRUE

注解

调用此方法以自定义框架用于确定基本菜单项和最近使用的菜单项的显示方式的算法。 有关基本命令的详细信息,请参阅 CMFCToolBar::AddBasicCommand

此类使用 CMFCCmdUsageCount 类跟踪命令的使用计数。 有关此类的详细信息,请参阅 CMFCCmdUsageCount

CMFCToolBar::SetCustomizeMode

启用或禁用应用程序中的所有工具栏的自定义模式。

static BOOL __stdcall SetCustomizeMode(BOOL bSet=TRUE);

参数

bSet
[in] 一个布尔值,该值指定是启用还是禁用自定义模式。 将此参数设置为 TRUE 以启用自定义模式或设置为 FALSE 以禁用它。

返回值

如果调用此方法会更改自定义模式,则为 TRUE;否则为 FALSE

注解

此方法调整布局并重新绘制应用程序中的的每个工具栏。 调用 CMFCToolBar::IsCustomizeMode 方法以确定应用程序是否处于自定义模式。

CMFCToolBar::SetGrayDisabledButtons

指定工具栏上不可用的按钮是否变暗,或者是否使用按钮不可用的图像。

void SetGrayDisabledButtons(BOOL bGrayDisabledButtons);

参数

bGrayDisabledButtons
[in] 一个布尔值,指定如何显示不可用的按钮。 如果此参数为 TRUE,框架会使按钮变暗。 否则,框架使用按钮不可用的图像的集合。

注解

默认情况下,不可用的按钮将变暗。

CMFCToolBar::SetHeight

设置工具栏的高度。

void SetHeight(int cyHeight);

参数

cyHeight
[in] 工具栏的高度(以像素为单位)。

备注

此方法在设置高度后重新绘制工具栏。

CMFCToolBar::SetHelpMode

static void __stdcall SetHelpMode(BOOL bOn = TRUE);

参数

[in] bOn\

备注

CMFCToolBar::SetHot

BOOL SetHot(CMFCToolBarButton* pMenuButton);

参数

[in] pMenuButton\

返回值

备注

CMFCToolBar::SetHotBorder

指定是否热跟踪工具栏按钮。

void SetHotBorder(BOOL bShowHotBorder);

参数

bShowHotBorder
[in] 一个布尔值,指定是否热跟踪工具栏按钮。 如果此参数为 TRUE,工具栏会热跟踪其按钮。 否则,工具栏不会热跟踪其按钮。

注解

如果热跟踪按钮,则在鼠标移动到其上方时,框架会突出显示该按钮。 默认情况下,每个工具栏都会热跟踪其按钮。

调用 CMFCToolBar::GetHotBorder 方法以确定工具栏是否热跟踪其按钮。

CMFCToolBar::SetHotTextColor

设置热工具栏按钮的文本颜色。

static void SetHotTextColor(COLORREF clrText);

参数

clrText
[in] 指定热跟踪的工具栏按钮的文本颜色。

备注

有关热跟踪的工具栏按钮的详细信息,请参阅 CMFCToolBar::GetHotBorderCMFCToolBar::SetHotBorder

CMFCToolBar::SetIgnoreSetText

void SetIgnoreSetText(BOOL bValue);

参数

[in] bValue\

备注

CMFCToolBar::SetLargeIcons

指定工具栏按钮是否显示大图标。

static void SetLargeIcons(BOOL bLargeIcons=TRUE);

参数

bLargeIcons
[in] 一个布尔值,该值指定要使用的图标。 如果此参数为 TRUE,框架将显示大图标。 否则,框架将显示常规图标。

备注

当用户在“自定义”对话框的“选项”选项卡中更改“大图标”复选框的状态时,框架将调用此方法。 此方法调整应用程序中所有工具栏的大小。

默认情况下,框架将显示常规图标。

有关“自定义”对话框的详细信息,请参阅 CMFCToolBarsCustomizeDialog

CMFCToolBar::SetLockedSizes

设置工具栏上锁定的按钮和锁定的图像的大小。

void SetLockedSizes(
    SIZE sizeButton,
    SIZE sizeImage,
    BOOL bDontScale = FALSE);

参数

sizeButton
[in] 指定锁定的工具栏按钮的大小。

sizeImage
[in] 指定锁定的工具栏图像的大小。

bDontScale
指定是否在高 DPI 模式下缩放锁定的工具栏图像。

备注

锁定的按钮的默认大小为 23x22 像素。 锁定的图像的默认大小为 16x15 像素。

调用 CMFCToolBar::GetLockedImageSize 方法以检索锁定的图像的大小。 调用 CMFCToolBar::GetButtonSize 方法以检索锁定的工具栏按钮的大小。

CMFCToolBar::SetMaskMode

void SetMaskMode(BOOL bMasked);

参数

[in] bMasked\

注解

CMFCToolBar::SetMenuSizes

设置工具栏菜单按钮及其图像的大小。

static void __stdcall SetMenuSizes(
    SIZE sizeButton,
    SIZE sizeImage);

参数

sizeButton
[in] 指定工具栏按钮的大小(以像素为单位)。

sizeImage
[in] 指定工具栏图像的大小(以像素为单位)。

备注

默认情况下,菜单按钮及其图像具有未定义的大小。

调用 CMFCToolBar::GetMenuButtonSize 方法以确定菜单按钮的大小,并调用 CMFCToolBar::GetMenuImageSize 方法以确定菜单按钮图像的大小。

有关使用此方法的示例,请参阅 IEDemo 和 MSMoneyDemo 示例。

CMFCToolBar::SetNonPermittedCommands

设置用户无法执行的命令的列表。

static void SetNonPermittedCommands(CList<UINT,UINT>& lstCommands);

参数

lstCommands
[in] 对包含用户无法执行的命令的 CList 对象的引用。

备注

调用此方法以阻止用户选择某些命令。 例如,出于安全原因,你可能希望阻止用户选择某些命令。 有关使用此方法的示例,请参阅 MDITabsDemo 和 MenuSubSet 示例。

此方法清除不允许的命令的上一个列表。 默认情况下,不允许的命令的列表为空。

CMFCToolBar::SetOneRowWithSibling

将工具栏及其同级定位在同一行上。

void SetOneRowWithSibling();

注解

当用户选择“在一行上显示按钮”按钮时,框架将调用此方法。

调用 CMFCToolBar::SetSiblingToolBar 方法以启用“在一行上显示按钮”或“分两行显示按钮”按钮。 如果为此工具栏调用 CMFCToolBar::SetSiblingToolBar,则同级工具栏将移动到此工具栏所在的行。 否则,此工具栏将移动到同级所在的行。

当用户选择“分两行显示按钮”按钮时,框架将调用 CMFCToolBar::SetTwoRowsWithSibling 方法。

CMFCToolBar::SetOrigButtons

void SetOrigButtons(const CObList& lstOrigButtons);

参数

[in] lstOrigButtons\

备注

CMFCToolBar::SetPermament

指定用户是否可以关闭工具栏。

void SetPermament(BOOL bPermament=TRUE);

参数

bPermament
[in] 一个布尔值,该值指定用户是否可以关闭工具栏。 如果此参数为 TRUE,则用户无法关闭工具栏。 否则,用户可以关闭工具栏。

备注

默认情况下,用户可以关闭每个工具栏。

调用 CMFCToolBar::CanBeClosed 方法以确定用户是否可以关闭工具栏。

CMFCToolBar::SetRouteCommandsViaFrame

指定是父框架还是所有者将命令发送到工具栏。

void SetRouteCommandsViaFrame(BOOL bValue);

参数

bValue
[in] 如果此参数为 TRUE,父框架会将命令发送到工具栏。 否则,所有者会将命令发送到工具栏。

注解

默认情况下,父框架将命令发送到工具栏。 调用 CMFCToolBar::GetRouteCommandsViaFrame 方法以确定是父框架还是所有者将命令发送到工具栏。

CMFCToolBar::SetShowTooltips

指定框架是否显示工具提示。

static void SetShowTooltips(BOOL bValue);

参数

bValue
[in] 如果此参数为 TRUE,框架将显示工具提示。 否则,框架将隐藏工具提示。

备注

默认情况下,框架将显示工具提示。

调用 CMFCToolBar::GetShowTooltips 方法以确定框架是否显示工具提示。

CMFCToolBar::SetSiblingToolBar

指定工具栏的同级。

void SetSiblingToolBar(CMFCToolBar* pBrotherToolbar);

参数

pBrotherToolbar
[in] 指向同级工具栏的指针。

注解

此方法启用在用户显示“自定义”弹出菜单时显示的“在一行上显示按钮”或“分两行显示按钮”按钮。 如果希望使用户能够指定相关工具栏是显示在同一行上还是不同行上,请调用此方法。

在启用工具栏上显示的“自定义”按钮后调用此方法。 若要启用“自定义”按钮,请调用 CMFCToolBar::EnableCustomizeButton 方法。

若要检索工具栏的同级,请调用 CMFCToolBar::GetSiblingToolBar

CMFCToolBar::SetSizes

指定所有工具栏上的按钮和图像的大小。

static void __stdcall SetSizes(
    SIZE sizeButton,
    SIZE sizeImage);

参数

sizeButton
[in] 工具栏按钮的大小(以像素为单位)。

sizeImage
[in] 工具栏按钮图像的大小(以像素为单位)。

备注

工具栏按钮的默认大小为 23x22 像素。 工具栏按钮图像的默认大小为 16x15 像素。

调用 CMFCToolBar::GetImageSize 方法以检索工具栏按钮图像的大小。 调用 CMFCToolBar::GetButtonSize 方法以检索工具栏按钮的大小。

CMFCToolBar::SetToolBarBtnText

指定工具栏上的按钮的属性。

void SetToolBarBtnText(
    UINT nBtnIndex,
    LPCTSTR szText=NULL,
    BOOL bShowText=TRUE,
    BOOL bShowImage=TRUE);

参数

nBtnIndex
[in] 工具栏按钮列表中的工具栏按钮的从零开始的索引。

szText
[in] 指定工具栏按钮的文本标签。

bShowText
[in] 如果此参数为 TRUE,框架将显示文本标签。 否则,框架将隐藏文本标签。

bShowImage
[in] 如果此参数为 TRUE,框架将显示工具栏按钮图像。 否则,框架将隐藏工具栏按钮图像。

备注

默认情况下,框架将显示工具栏按钮的图像,但不显示工具栏按钮的文本标签。

在调试生成中,如果 nBtnIndex 不引用有效的工具栏按钮或工具栏按钮是分隔符,此方法将生成断言失败。

CMFCToolBar::SetTwoRowsWithSibling

将工具栏及其同级定位在单独的行上。

void SetTwoRowsWithSibling();

备注

当用户选择“分两行显示按钮”按钮时,框架将调用此方法。

调用 CMFCToolBar::SetSiblingToolBar 方法以启用“在一行上显示按钮”或“分两行显示按钮”按钮。 如果为此工具栏调用 CMFCToolBar::SetSiblingToolBar,则同级工具栏将移动到单独的行。 否则,此工具栏将移动到单独的行。

当用户选择“在一行上显示按钮”按钮时,框架将调用 CMFCToolBar::SetOneRowWithSibling 方法。

CMFCToolBar::SetUserImages

设置应用程序中用户定义的图像的集合。

static BOOL SetUserImages(CMFCToolBarImages* pUserImages);

参数

pUserImages
[in] 指向用户定义的图像的集合的指针。

返回值

如果该方法成功,则为非零;如果指定的 CMFCToolBarImages 对象无效或其图像大小不同于工具栏的默认图像大小,则为 0。

注解

框架使用用户定义的图像绘制由用户自定义的工具栏按钮。 应用程序中的所有工具栏之间共享 pUserImages 指定的图像列表。

如果指定的 CMFCToolBarImages 对象无效或其图像大小不同于工具栏的默认图像大小,此方法将在调试生成中生成断言失败。

OutlookDemo、ToolTipDemo 和 VisualStudioDemo 示例使用此方法设置用户定义的图像的全局集合。 它们加载名为 UserImages.bmp 的文件,该文件位于应用程序的工作目录中。

调用 `CMFCToolBar::GetUserImages 方法以检索应用程序中用户定义的图像的集合。

CMFCToolBar::StretchPane

垂直或水平拉伸工具栏,并在必要时重新定位按钮。

virtual CSize StretchPane(
    int nLength,
    BOOL bVert);

参数

nLength
[in] 要拉伸窗格的量(以像素为单位)。

bVert
[in] 如果为 TRUE,则垂直拉伸窗格。 如果为 FALSE,则水平拉伸窗格。

返回值

指定工具栏工作区的大小的 CSize 对象。

备注

此方法调用 CMFCToolBar::WrapToolBar 以重新定位拉伸的工具栏中的按钮。

通过调用 CMFCToolBar::CalcSize 确定返回值。

CMFCToolBar::TranslateChar

如果指定的键代码对应于有效的键盘快捷方式,则执行按钮命令。

virtual BOOL TranslateChar(UINT nChar);

参数

nChar
[in] 指定虚拟键代码。 有关标准虚拟键代码的列表,请参阅 Winuser.h

返回值

如果指定的键代码不可打印或与有效的键盘快捷方式不对应,则为 FALSE;如果指定的键代码与下拉菜单选项对应,则为 TRUE;否则为来自 CMFCToolBar::ProcessCommand 的返回值。

备注

当键与 Alt 键一起按下时,框架将调用此方法。

CMFCToolBar::UpdateButton

更新指定按钮的状态。

void UpdateButton(int nIndex);

参数

nIndex
[in] 指定要更新的按钮的从零开始的索引。

备注

CMFCToolBar::WrapToolBar

在给定维度中重新定位工具栏按钮。

int WrapToolBar(
    int nWidth,
    int nHeight = 32767,
    CDC* pDC = NULL,
    int nColumnWidth = -1,
    int nRowHeight = -1);

参数

nWidth
[in] 工具栏的最大宽度。

nHeight
[in] 工具栏的最大高度。 如果工具栏浮动,则不使用。

pDC
[in] 指向设备上下文的指针。 如果为 NULL,则使用工具栏的设备上下文。

nColumnWidth
[in] 按钮宽度。 如果为 -1,则使用当前宽度。

[in] mnRowHeight 按钮高度。 如果为 -1,则使用当前高度。

返回值

工具栏上按钮的行数。

注解

此方法将按钮重新定位到工具栏中,如有必要,将按钮包装到其他行。

CMFCToolBar::m_bDontScaleImages

指定是否在高 DPI 模式下缩放工具栏图像。 设置为 TRUE,以在图像大小与按钮大小不匹配时防止图像缩放。

AFX_IMPORT_DATA static BOOL m_bDontScaleImages;

另请参阅

层次结构图

CMFCMenuBar
CMFCPopupMenuBar
CMFCDropDownToolBar
演练:将控件置于工具栏上