极语言官方网站

工具栏——通知消息

工具栏是包含一个或多个按钮的控件。用户单击每个按钮时,都会向父窗口发送一条命令消息。

通常,工具栏中的按钮对应于应用程序菜单项,为用户另外提供了一种更直接的方式来访问应用程序命令。

以下屏幕截图显示了一个窗口,其中包含用于文件操作的简单工具栏。 应用程序已启用视觉样式。

“保存”按钮是“热”的,因为拍摄屏幕截图时光标悬停在它上方。

控件的实际外观因操作系统和用户选择的主题而异。


指定工具栏大小和位置

如果使用 建工具栏 创建工具栏,则使用 函数可以指定工具栏的高度和宽度(以像素为单位)。

不建议使用 建工具栏 ,因为它不支持工具栏的新功能,包括图像列表。

创建窗口 函数没有用于指定工具栏大小的参数。 工具栏窗口过程会自动设置工具栏窗口的大小和位置。

高度基于工具栏中按钮的高度。宽度与父窗口工作区的宽度一样。

若要更改自动大小设置,请发送 工具按钮大小 消息。顶部和底部常见控件样式确定工具栏是沿工作区的顶部还是底部放置。

默认情况下,工具栏具有 顶部左侧 样式。

此外,工具栏窗口过程会在收到 窗口缩放 或 工具自动调整 消息时自动调整工具栏的大小。

每当父窗口的大小发生更改或发送需要调整工具栏大小的消息

例如, 工具按钮大小 消息)后,应用程序应发送其中任一消息。

可以通过设置 禁止缩放 和 自由位置 常用控件样式

来关闭工具栏默认大小调整和定位行为。

伸缩条 控件承载的工具栏控件必须设置这些样式,因为 伸缩条 控件会调整工具栏的大小和位置。


透明工具栏

工具栏控件支持透明外观,允许工具栏下的工作区显示。

有两种类型的透明工具栏,一种是带有平面按钮,一种是带有三维按钮。

如果希望应用程序与 Windows 界面匹配,请使用平面透明样式工具栏。

以下屏幕截图显示了两种透明工具栏,不使用视觉样式。

若要创建透明工具栏,在设计工具栏控件时只需将 平面效果 或 背景透明 勾选上。

如果不希望显示指示工具栏底部的线条,请不要使用 细线边框 窗口样式。


列表样式工具栏

使用工具栏按钮可以同时显示文本和位图。

使用 文本置右 样式创建的工具栏上的按钮将文本放置在位图的右侧而不是位图下方。

以下屏幕截图显示了具有列表样式的工具栏。

可以将 文本置右 工具栏样式与 平面效果 样式结合使用,以创建带有平面按钮的工具栏。


定义按钮图像

有两种方法可以指定按钮的图像 - 按位图或按图像列表。 应用程序必须选择要使用的方法。

想要使用图像列表方法的应用程序必须使用 创建窗口 函数来创建工具栏控件。


使用位图定义按钮图像

工具栏中的每个按钮都可以包含位图图像。 工具栏使用内部列表来存储绘制图像所需的信息。

设计的工具栏控件图像的大小为 16 x 15 像素的默认尺寸。

可以使用 工具图像大小 消息更改位图图像的尺寸,但必须在将任何图像添加到内部列表之前执行此操作。

每个图像都有一个从零开始的索引。 添加到内部列表的第一个图像的索引为 0,第二个图像的索引为 1,依依此。

工具添加图像 将图像添加到列表末尾,并返回它添加的第一个新图像的索引。

若要将图像与按钮相关联,必须在向内部图像列表添加位图后发送 工具添加按钮 消息并指定图像的索引。


使用图像列表定义按钮图像

还可以将按钮图像存储在一组 图像列表中。 图像列表是大小相同的图像的集合,每个图像都可以通过其索引来引用。

图像列表用于管理大型图标或位图集。

最多可以使用三个不同的图像列表来显示处于不同状态的按钮,如下表所示。

状态数值释义
普通0处于默认状态的按钮。
热项1指针下或按下的按钮。热项仅在具有 平面效果 样式的工具栏控件中受支持。
已禁用2已禁用的按钮。

销毁工具栏后,应用程序必须释放其创建的任何图像列表。


定义按钮的文本

除了图像之外,每个按钮还可以显示字符串,也可以显示而不是图像。

工具栏维护一个内部列表,其中包含可用于工具栏按钮的所有字符串。 使用 工具添加字符

消息将字符串添加到内部列表,并指定包含要添加的字符串的缓冲区的地址。

每个字符串必须以 0 结尾,最后一个字符串必须以两个 0 字符结尾。

每个字符串都有一个从零开始的索引。

添加到内部字符串列表中的第一个字符串的索引为 0,第二个字符串的索引为 1,依次类推。

工具添加字符 将字符串添加到列表末尾,并返回第一个新字符串的索引。

使用字符串的索引将字符串与按钮相关联。

使用 工具添加字符 不是将字符串添加到工具栏的唯一方法。

通过在传递给 工具添加按钮 的 工具按钮类 结构的 文字 成员中传递字符串指针,

可以在按钮中显示字符串。此外,还可以使用 工具修改信息 将文本分配给工具栏按钮。


添加工具栏按钮

如果使用 CreateToolbarEx 函数创建工具栏,

可以通过填充 工具按钮类 结构的数组并在函数调用中指定数组的地址,将按钮添加到工具栏。

但是设计工具栏控件不能指定 工具按钮类 结构。

可以通过发送 工具添加按钮 消息并指定 工具按钮类 结构的地址,创建一个空工具栏。

创建工具栏后,可以通过发送 工具插入按钮 或 工具添加按钮 消息来添加按钮。

每个按钮由 工具按钮类 结构描述,

该结构定义按钮的属性,包括其字符串和位图的索引,以及其样式、状态、命令标识符和应用程序定义的 32 位值。

如果使用界面设计器创建工具栏,则必须在添加任何按钮之前发送 工具结构大小 消息。

消息将 工具按钮类 结构的大小传递到工具栏。


工具栏按钮样式

按钮的样式决定了按钮的显示方式以及按钮对用户输入的响应方式。

例如, 标准按钮 样式会创建一个行为类似于标准按下按钮的工具栏按钮。

具有 复选按钮 样式的按钮类似于标准按钮,不同之处在于每次用户单击按钮时,它都会在按下状态和非按下状态之间切换。

可以使用 分组单选 或加上 复选按钮 样式创建类似于单选按钮的工具栏按钮组。

这会导致按钮保持按下状态,直到用户选择组中的另一个按钮。

组定义为按钮的连续集合,全部采用这种样式。是分隔条样式在按钮之间创建一个小间隙,

或在平面工具栏上的按钮之间绘制刻字。按钮不会接收用户输入。


工具栏按钮状态

工具栏中的每个按钮都有一个 状态。 工具栏更新按钮的状态以反映用户操作,例如单击按钮。

状态指示按钮当前是按下还是未按下、启用或禁用、隐藏或可见。

尽管应用程序在将按钮添加到工具栏时设置按钮的初始状态,

但它可以通过向工具栏发送 工具获取状态 和 工具设置状态 消息来更改和检索状态。工具栏状态


命令标识符

每个按钮都有一个与之关联的应用程序定义的命令标识符。

按钮标识符通常在应用程序头文件中定义。 例如,“粘贴”按钮可以定义为:常量 粘贴=100

当用户选择按钮时,工具栏会向父窗口发送包含按钮命令标识符的 命令事件 或 控件事件 消息。

父窗口检查命令标识符并执行与按钮关联的命令。


按钮大小和位置

工具栏通过为每个按钮分配位置索引来跟踪其按钮。

索引从零开始;也就是说,最左侧的按钮的索引为 0,右侧的下一个按钮的索引为 1,依此而行。

应用程序必须在发送消息时指定按钮的索引,以检索有关按钮的信息或设置按钮的属性。

工具栏在插入和删除按钮时更新位置索引。

应用程序可以使用 工具按钮序号 消息检索按钮的当前位置索引。

消息指定按钮的命令标识符,工具栏窗口使用该标识符查找按钮并返回其位置索引。

工具栏中的所有按钮大小均相同。设计的工具栏控件,初始大小设置为 24 x 22 像素的默认尺寸。

可以使用 工具按钮大小 消息更改按钮大小,

但必须在将任何按钮添加到工具栏之前执行此操作。工具按钮边框 消息检索按钮的当前尺寸。

添加的字符串比工具栏中当前任何字符串都长时,工具栏会自动重置其按钮的宽度。

宽度设置为容纳工具栏中最长的字符串。


启用自定义

工具栏具有内置自定义功能,你可以通过为工具栏提供 拖动调整 通用控件样式来向用户提供这些功能。

用户可以通过自定义功能将按钮拖动到新位置,

或通过将按钮拖出工具栏删除该按钮。

此外,用户可以双击工具栏以显示“自定义工具栏”对话框,以便添加、删除和重排工具栏按钮。

若要显示对话框,请使用 工具自定义框 消息。

应用程序确定自定义功能是否对用户可用,并控制用户可自定义工具栏的程度。

作为自定义过程的一部分,应用程序通常需要保存和还原工具栏的状态。

例如,许多应用程序在用户开始自定义工具栏之前存储工具栏状态,

以防用户以后想要将工具栏还原到其原始状态。

工具栏控件不会自动保留其预自定义状态的记录。

应用程序必须保存工具栏状态才能还原它。


启用热跟踪

热跟踪意味着当指针移到某个项上时,按钮的外观会更改。

启用视觉样式后,工具栏默认支持热跟踪。 否则,只有使用 平面效果 样式。

可以将其他窗口样式与 平面效果 结合使用,以生成启用热跟踪但具有与平面工具栏不同的外观的工具栏。

如何创建工具栏

使用界面设计器生成的工具栏最初不包含任何按钮。

使用 工具添加按钮 或 工具插入按钮 消息将按钮添加到工具栏。

必须将所有项和字符串插入控件后发送 工具自动调整 消息,使工具栏根据其内容重新计算其大小。

以下示例代码使用标准系统图标创建图中显示的工具栏。设计时勾选多行按钮样式 。

程序段 窗体启动
	整数 图列=图表创建(16,16,[图像16位 | 图像掩码],3,0)
	文本 数组[60];
	发送消息(工具栏1,工具设置图表,0,图列)
	发送消息(工具栏1,工具加载图表,0,-1)
	工具按钮类 数组[3]={
	{6,1,4,0x10,0,0,"新建"},
	{7,1,4,0x10,0,0,"打开"},
	{8,1,4,0x10,0,0,"保存"}}
	发送消息(工具栏1,工具结构大小,20,0)
	发送消息(工具栏1,工具按钮添加,3,数组)
	发送消息(工具栏1,工具自动调整,0,0)
结束

最初禁用“ 保存 ”按钮。

以下示例以大致相同的方式创建相同的工具栏,但在本例中,字符串是从资源读取的。

程序段 窗体启动
	整数 图列=图表创建(16,16,[图像16位 | 图像掩码],3,0)
	发送消息(工具栏1,工具设置图表,0,图列)
	发送消息(工具栏1,工具加载图表,0,-1)
	整数 新字=发送消息(工具栏1,工具添加字符,0x400000,1)
	文本 数组[60];
	数组&=6;.&4=1;.&8=0x1004;.&12=0;.&16=新字;
	.&20=7;.&24=2;.&28=0x1004;.&32=0;.&16=新字+1;
	.&40=8;.&44=3;.&48=0x1000;.&52=0;.&16=新字+2;
	发送消息(工具栏1,工具结构大小,20,0)
	发送消息(工具栏1,工具按钮添加,3,数组)
	发送消息(工具栏1,工具自动调整,0,0)
结束

创建垂直工具栏

创建垂直工具栏的关键是在窗口样式中勾选 垂直显示 ,并为每个按钮设置 0x20按钮换行 样式。

以下示例代码创建如下图所示的垂直工具栏。

程序段 窗体启动
	整数 图列=图表创建(24,24,[图像16位 | 图像掩码],3,0)
	发送消息(工具栏1,工具设置图表,0,图列)
	发送消息(工具栏1,工具加载图表,0,-1)
	工具按钮类 数组[3]={
	{6,1,0x24,0,0,0,0},
	{7,2,0x24,0,0,0,0},
	{8,3,0x24,0,0,0,0}}
	发送消息(工具栏1,工具结构大小,20,0)
	发送消息(工具栏1,工具按钮添加,3,数组)
结束

动态标记工具栏按钮

以下示例演示如何将前面示例中第三个按钮的文本从 “保存” 更改为 “另存为”。假定保存按钮的标识为102

工具信息类 改信息(大小=20,掩码=2)

程序段 更改按钮
	改信息.文字="另存为"
	发送消息(工具栏1,工具修改信息,102,改信息)
结束

如何显示按钮的工具提示

指定 提示文本 样式时,工具栏将创建和管理工具提示控件。

当用户将指针移到工具栏按钮上并留在那里大约一秒钟时才会显示。

应用程序可以通过以下任一方式向工具提示控件提供文本:

将工具提示文本设置为每个按钮的 工具按钮类 结构的 文字 成员。

还必须发送 工具限最多行 消息,并将最大文本行设置为 0,以便文本不显示为按钮标签而不是工具提示。

使用 文本置右 样式创建工具栏,然后设置 8 扩展样式。

标签仅显示具有 显示文本 样式的按钮。否则将显示包含按钮文本的工具提示。响应 提示显示信息 通知代码。

需要将消息直接发送到工具提示控件的应用程序可以使用 工具获取提示 消息检索控件的句柄。

应用程序可以使用 工具设置提示 消息将工具栏的工具提示控件替换为另一个工具提示控件。

提供工具提示文本的最灵活方法是响应工具栏控件以控件事件消息的形式发送给其父级的提示显示信息或工具提示信息通知代码。

对于 提示显示信息, ④数据 参数包含指向 提示显示类 结构的指针, 该结构指定需要帮助文本的按钮的命令标识符。

此标识符位于 通知.标识 成员中。

应用程序可以将帮助文本复制到结构、指定包含帮助文本的字符串的地址,或指定字符串资源的实例句柄和资源标识符。

以下示例代码通过提供资源标识符中的文本来处理 提示显示信息 工具提示通知代码。

这里把提示指定为标识符对应的数值1 2 3

程序段 公共事件(数据)
	整数 窗口=数据&,标识=.&4,事件=.&8,提示=.&12;
	判断(事件)为 提示显示信息{.&12=标识}
结束

中文名字常量数值英文名称释义
控件单击左键-2NM_CLICK用户在控件上点击了鼠标左键
控件双击左键-3NM_DBLCLK用户在控件上双击了鼠标左键
控件单击右键-5NM_RCLICK用户在控件上点击了鼠标右键
控件双击右键-6NM_RDBLCLK用户在控件上双击了鼠标右键
控件自行绘制-12NM_CUSTOMDRAW通知控件的父窗口有关自定义绘制操作的信息。
控件按下键盘-15NM_KEYDOWN控件获得键盘焦点并按下某键
控件释放鼠标-16NM_RELEASEDCAPTURE控件要释放鼠标捕捉
控件键入字符-18NM_CHAR字符键被处理后由控件发送
控件工具提示-19NM_TOOLTIPSCREATED通知控件的父窗口控件已创建工具提示控件。④数据:NMTOOLTIPSCREATED 结构
控件鼠标左键-20NM_LDOWN通知控件的父窗口已按下鼠标左键。
工具按钮信息-700TBN_GETBUTTONINFOA获取工具栏的自定义信息
工具拖起按钮-701TBN_BEGINDRAG用户已开始拖动工具栏的某个按钮
工具拖放按钮-702TBN_ENDDRAG用户已停止拖动工具栏的某个按钮
工具开始定义-703TBN_BEGINADJUST用户已开始自定义一个工具栏
工具结束定义-704TBN_ENDADJUST用户已停止自定义一个工具栏
工具已经重置-705TBN_RESET用户在自定义工具栏对话框中已经对工具栏进行重置了
工具可插左侧-706TBN_QUERYINSERT按钮是否可被插入到指定按钮的左侧
工具可被删除-707TBN_QUERYDELETE用户自定义工具栏时一个按钮是否可被删除
工具已被改变-708TBN_TOOLBARCHANGE用户已经定制完一个工具栏
工具选择帮助-709TBN_CUSTHELP用户已经选择了自定义工具栏对话框上的帮助按钮
工具单击下拉-710TBN_DROPDOWN当用户单击下拉按钮时,工具栏控件发送。
工具放置目标-712TBN_GETOBJECT请求放置目标对象。
工具热项更改-713TBN_HOTITEMCHANGE突出显示的热 () 项更改
工具拖出按钮-714TBN_DRAGOUT用户单击按钮,然后将光标移出按钮
工具按钮删除-715TBN_DELETINGBUTTON按钮即将被删除
工具显示信息-716TBN_GETDISPINFOA检索工具栏项的显示信息
工具信息显示-717TBN_GETDISPINFOW检索工具栏项的显示信息
工具提示信息-718TBN_GETINFOTIPA检索工具栏项的信息提示信息。
工具信息提示-719TBN_GETINFOTIPW检索工具栏项的信息提示信息。
工具按钮定义-720TBN_GETBUTTONINFOW获取工具栏的自定义信息
工具正在还原-721TBN_RESTORE通知工具栏的父窗口正在还原工具栏。
工具正在保存-722TBN_SAVE通知工具栏的父窗口正在保存工具栏。
工具定义开始-723TBN_INITCUSTOMIZE通知工具栏的父窗口自定义已开始。
工具热项要改-724TBN_WRAPHOTITEM使用两个或多个工具栏通知应用程序热项即将更改。
工具查快捷键-725TBN_DUPACCELERATOR确定加速键是否可以在两个或多个活动工具栏上使用。
工具快捷序号-726TBN_WRAPACCELERATORA请求与指定快捷键字符对应的一个或多个工具栏中的按钮索引。
工具拖动显示-727TBN_DRAGOVER确定是否应为拖动的按钮发送突出显示消息。
工具快捷索引-728TBN_MAPACCELERATORW请求工具栏中对应于指定快捷键字符的按钮的索引。
发送消息——常数表
工具启用按钮0x401TB_ENABLEBUTTON启用或禁用工具栏中的指定按钮。③参数:标识;④数据:假=禁用,真=启用
工具选择按钮0x402TB_CHECKBUTTON选中或取消选中工具栏中的给定按钮。③参数:标识;④数据:假=不检查,真=检查
工具按下按钮0x403TB_PRESSBUTTON按下或释放工具栏中的指定按钮。③参数:标识;④数据:假=释放,真=按下
工具隐藏按钮0x404TB_HIDEBUTTON隐藏或显示工具栏中的指定按钮。③参数:标识;④数据:假=显示,真=隐藏
工具不明按钮0x405TB_INDETERMINATE设置或清除工具栏中指定按钮的不确定状态。③参数:标识;④数据:假=清除,真=不确定(暗灰)
工具突出按钮0x406TB_MARKBUTTON设置工具栏控件中给定按钮的突出显示状态。③参数:标识;④数据:假=平常,真=突出
工具按钮可用0x409TB_ISBUTTONENABLED确定工具栏中的指定按钮是否已启用。③参数:标识;④数据:0
工具按钮已选0x40ATB_ISBUTTONCHECKED确定是否选中工具栏中的指定按钮。③参数:标识;④数据:0
工具按钮按下0x40BTB_ISBUTTONPRESSED确定是否按下工具栏中的指定按钮。③参数:标识;④数据:0
工具按钮隐藏0x40CTB_ISBUTTONHIDDEN确定是否隐藏工具栏中的指定按钮。③参数:标识;④数据:0
工具按钮不明0x40DTB_ISBUTTONINDETERMINATE确定工具栏中的指定按钮是否不确定。③参数:标识;④数据:0
工具按钮突出0x40ETB_ISBUTTONHIGHLIGHTED检查工具栏按钮的突出显示状态。③参数:标识;④数据:0
工具设置状态0x411TB_SETSTATE设置工具栏中指定按钮的状态。③参数:标识;④数据:1选中,2按下,4可用,8隐藏,16灰显,32换行,64省略号,128标记
工具获取状态0x412TB_GETSTATE检索有关工具栏中指定按钮是启用、按下还是选中。③参数:标识;④数据:0
工具添加图像0x413TB_ADDBITMAP将一个或多个图像添加到按钮图像列表中。③参数:数量;④数据:工具图像类
工具添加按钮0x414TB_ADDBUTTONSA将一个或多个按钮添加到工具栏。③参数:数量;④数据:工具按钮类
工具插入按钮0x415TB_INSERTBUTTONA在工具栏中插入按钮。③参数:序号;④数据:工具按钮类
工具删除按钮0x416TB_DELETEBUTTON从工具栏中删除按钮。③参数:序号;④数据:0
工具获取按钮0x417TB_GETBUTTON检索有关工具栏中指定按钮的信息。③参数:序号;④数据:工具按钮类
工具按钮数量0x418TB_BUTTONCOUNT检索工具栏中当前按钮的计数。③参数:0;④数据:0
工具按钮序号0x419TB_COMMANDTOINDEX检索与指定命令标识符关联的按钮的序号。③参数:标识;④数据:0
工具保存状态0x41ATB_SAVERESTOREA启动保存或还原工具栏状态。③参数:真=保存,假=还原;④数据:工具保存类
工具自定义框0x41BTB_CUSTOMIZE显示“自定义工具栏”对话框。③参数:0;④数据:0
工具添加字符0x41CTB_ADDSTRINGA将新字符串添加到工具栏的字符串池。③参数:0=字符串,实例=资源;④数据:资源标识或字符数组
工具按钮边框0x41DTB_GETITEMRECT检索工具栏中按钮的边框。③参数:序号;④数据:矩形类
工具结构大小0x41ETB_BUTTONSTRUCTSIZE指定 工具按钮类的大小。③参数:大小;④数据:0
工具按钮大小0x41FTB_SETBUTTONSIZE设置工具栏上按钮的大小。③参数:0;④数据:宽高各16位
工具图像大小0x420TB_SETBITMAPSIZE设置要添加到工具栏的位图图像的大小。③参数:0;④数据:宽高各16位
工具自动调整0x421TB_AUTOSIZE导致调整工具栏的大小。③参数:0;④数据:0
工具获取提示0x423TB_GETTOOLTIPS检索与工具栏关联的工具提示控件的句柄。③参数:0;④数据:0
工具设置提示0x424TB_SETTOOLTIPS将工具提示控件与工具栏相关联。③参数:控件;④数据:0
工具设置父窗0x425TB_SETPARENT设置工具栏控件向其发送通知消息的窗口。③参数:窗口;④数据:0
工具设置行数0x427TB_SETROWS设置工具栏中按钮的行数。③参数:低16位行数,高位真=可超行;④数据:矩形(改后边框)
工具获取行数0x428TB_GETROWS获取工具栏中按钮的行数。③参数:0;④数据:0
工具设置标识0x42ATB_SETCMDID设置工具栏按钮的命令标识符。③参数:序号;④数据:标识
工具更换图像0x42BTB_CHANGEBITMAP更改工具栏中按钮的位图。③参数:标识;④数据:图像序号
工具图像序号0x42CTB_GETBITMAP检索与工具栏中的按钮关联的位图的索引。③参数:标识;④数据:0
工具按钮文本0x42DTB_GETBUTTONTEXTA检索工具栏上按钮的显示文本。③参数:标识;④数据:内容
工具替换图像0x42ETB_REPLACEBITMAP将现有位图替换为新位图。③参数:0;④数据:工具替换类
工具设置缩进0x42FTB_SETINDENT设置工具栏控件中第一个按钮的缩进。③参数:像素值;④数据:0
工具设置图表0x430TB_SETIMAGELIST设置工具栏按钮的图像列表。③参数:0序号;④数据:图像列表
工具获取图表0x431TB_GETIMAGELIST获取工具栏按钮的图像列表。③参数:0;④数据:0
工具加载图表0x432TB_LOADIMAGES加载系统定义的图像列表。③参数:0标准小图,1标准大图,系统图像列表;④数据:-1;
工具获取边框0x433TB_GETRECT检索指定工具栏按钮的边框。③参数:标识;④数据:矩形
工具设置热图0x434TB_SETHOTIMAGELIST设置工具栏显示热按钮的图像列表。③参数:0;④数据:图像列表
工具获取热图0x435TB_GETHOTIMAGELIST获取工具栏显示热按钮的图像列表。③参数:0;④数据:0
工具设置禁图0x436TB_SETDISABLEDIMAGELIST设置工具栏显示禁用按钮的图像列表。③参数:0;④数据:图表
工具获取禁图0x437TB_GETDISABLEDIMAGELIST检索工具栏显示非活动按钮的图像列表。③参数:0;④数据:0
工具设置样式0x438TB_SETSTYLE设置工具栏控件的样式。③参数:0;④数据:样式
工具获取样式0x439TB_GETSTYLE获取工具栏控件的样式。③参数:0;④数据:0
工具按钮宽高0x43ATB_GETBUTTONSIZE检索工具栏按钮当前的大小。③参数:0;④数据:0
工具按钮宽度0x43BTB_SETBUTTONWIDTH设置工具栏控件中的最小和最大按钮宽度。③参数:0;④数据:最小/最大
工具限最多行0x43CTB_SETMAXTEXTROWS设置工具栏按钮上显示的文本行的最大数量。③参数:行数;④数据:0
工具取最多行0x43DTB_GETTEXTROWS检索工具栏按钮上可显示的最大文本行数。③参数:0;④数据:0
工具获取对象0x43ETB_GETOBJECT检索工具栏控件的拖放目标对象。③参数:拖放标识;④数据:@接口
工具获取信息0x43FTB_GETBUTTONINFOW检索工具栏中的现有按钮的信息。③参数:标识;④数据:工具信息类
工具设置信息0x440TB_SETBUTTONINFOW设置工具栏中的现有按钮的信息。③参数:标识;④数据:工具信息类
工具读取信息0x441TB_GETBUTTONINFOA检索工具栏中的现有按钮的信息。③参数:标识;④数据:工具信息类
工具修改信息0x442TB_SETBUTTONINFOA设置工具栏中的现有按钮的信息。③参数:标识;④数据:工具信息类
工具按钮插入0x443TB_INSERTBUTTONW在工具栏中插入按钮。③参数:序号;④数据:工具按钮类
工具按钮添加0x444TB_ADDBUTTONSA将一个或多个按钮添加到工具栏。③参数:数量;④数据:工具按钮类
工具获取点位0x445TB_HITTEST确定某个点在工具栏控件中的位置。③参数:0;④数据:坐标类;返回负数不在按钮内,否则是按钮索引
工具绘制标志0x446TB_SETDRAWTEXTFLAGS设置工具栏的文本绘制标志。③参数:DT_位标志;④数据:DT_方式标志
工具获取热项0x447TB_GETHOTITEM检索工具栏中热项的索引。③参数:0;④数据:0
工具设置热项0x448TB_SETHOTITEM设置工具栏中的热项。③参数:序号,-1取消;④数据:0
工具设置突出0x449TB_SETANCHORHIGHLIGHT设置工具栏的定位点突出显示设置。③参数:真=启用,假=禁用;④数据:0
工具获取突出0x44ATB_GETANCHORHIGHLIGHT检索工具栏的定位点突出显示设置。③参数:0;④数据:0
工具按钮文字0x44BTB_GETBUTTONTEXTW检索工具栏上按钮的显示文本。③参数:标识;④数据:内容
工具保存还原0x44CTB_SAVERESTOREW启动保存或还原工具栏状态。③参数:真=保存,假=还原;④数据:工具保存类
工具添加字组0x44DTB_ADDSTRINGW将新字符串添加到工具栏的字符串池。③参数:0=字符串,实例=资源;④数据:资源标识或字符数组
工具快捷键号0x44ETB_MAPACCELERATORA确定对应于指定加速键字符的按钮的编号。③参数:快捷键;④数据:@编号
工具获取标记0x44FTB_GETINSERTMARK检索工具栏的当前插入标记。③参数:0;④数据:工具标记类
工具设置标记0x450TB_SETINSERTMARK设置工具栏的当前插入标记。③参数:0;④数据:工具标记类
工具取点标记0x451TB_INSERTMARKHITTEST检索工具栏中点的插入标记信息。③参数:坐标类;④数据:工具标记类
工具移动按钮0x452TB_MOVEBUTTON将按钮从一个索引移到另一个索引。③参数:原序号;④数据:新序号
工具总体大小0x453TB_GETMAXSIZE检索工具栏中所有可见的按钮和分隔符的总大小。③参数:0;④数据:尺寸类
工具设置扩展0x454TB_SETEXTENDEDSTYLE设置工具栏控件的扩展样式。③参数:0;④数据:扩展样式
工具获取扩展0x455TB_GETEXTENDEDSTYLE获取工具栏控件的扩展样式。③参数:0;④数据:0
工具获取填充0x456TB_GETPADDING获取工具栏有自动大小样式的填充区域大小。③参数:0;④数据:0
工具设置填充0x457TB_SETPADDING设置工具栏有自动大小样式的填充区域大小。③参数:0;④数据:宽/高
工具改标记色0x458TB_SETINSERTMARKCOLOR设置用于绘制工具栏的插入标记的颜色。③参数:0;④数据:颜色
工具取标记色0x459TB_GETINSERTMARKCOLOR检索用于绘制工具栏的插入标记的颜色。③参数:0;④数据:0
工具快捷编号0x45ATB_MAPACCELERATORW确定对应于指定加速键字符的按钮的编号。③参数:快捷键;④数据:@编号
工具获取文本0x45BTB_GETSTRINGW从工具栏的字符串池中检索字符串。③参数:长度/序号;④数据:内容
工具获取文字0x45CTB_GETSTRINGA从工具栏的字符串池中检索字符串。③参数:长度/序号;④数据:内容
工具多列边界0x45DTB_SETBOUNDINGSIZE设置多列工具栏控件的边界大小。③参数:0;④数据:尺寸类(忽略宽度)
工具修改热项0x45ETB_SETHOTITEM2设置工具栏中的热项。③参数:序号,-1取消;④数据:热项修改标志
工具快捷计数0x45FTB_HASACCELERATOR检索具有指定快捷键字符的工具栏按钮计数。③参数:键字;④数据:@计数
工具设置间距0x460TB_SETLISTGAP设置特定工具栏上的工具栏按钮之间的距离。③参数:像素值;④数据:0
工具取图表数0x462TB_GETIMAGELISTCOUNT获取与工具栏关联的图像列表数。③参数:0;④数据:0
工具理想大小0x463TB_GETIDEALSIZE获取工具栏的理想大小。③参数:真=高度,假=宽度;④数据:尺寸类
工具获取指标0x465TB_GETMETRICS检索工具栏控件的指标。③参数:0;④数据:工具指标类
工具设置指标0x466TB_SETMETRICS设置工具栏控件的指标。③参数:0;④数据:工具指标类
工具下拉边框0x467TB_GETITEMDROPDOWNRECT获取具有下拉样式的工具栏项的下拉窗口边框。③参数:序号;④数据:边框
工具设置按图0x468TB_SETPRESSEDIMAGELIST设置工具栏按下状态的按钮的图像列表。③参数:0;④数据:图表
工具获取按图0x469TB_GETPRESSEDIMAGELIST获取工具栏按下状态的按钮的图像列表。③参数:0;④数据:0
控件设置配色0x2002CCM_SETCOLORSCHEME此消息用于设置控件的颜色配置。③参数:0;④数据:COLORSCHEME;
控件获取配色0x2003CCM_GETCOLORSCHEME此消息用于获取控件的颜色配置。③参数:0;④数据:COLORSCHEME;
控件设置宽字0x2005CCM_SETUNICODEFORMAT设置控件的 Unicode 字符格式标志。③参数:是否宽字;④数据:0;
控件获取宽字0x2006CCM_GETUNICODEFORMAT获取控件的 Unicode 字符格式标志。③参数:0;④数据:0;
控件设置样式0x200BCCM_SETWINDOWTHEME此消息用于设置控件的视觉样式。③参数:0;④数据:样式(宽字符);
控件启用缩放0x200CCCM_DPISCALE树表、表格、强组合框、标题、按钮、工具栏、动画启用dpi缩放。③参数:真;④数据:0;

工具栏——控件样式:

中文名字英文名称数值释义
顶部左侧CCS_TOP1使控件自身位于父窗口工作区的顶部,并将宽度设置为与父窗口的宽度相同。 默认情况下,工具栏具有此样式。
缩放调整CCS_NOMOVEY2导致控件在响应 WM_SIZE 消息时水平(而不是垂直)调整大小并移动自身。 如果使用CCS_NORESIZE,则此样式不适用。 默认情况下,标题窗口具有此样式。
底部右侧CCS_BOTTOM3使控件将自身定位在父窗口工作区的底部,并将宽度设置为与父窗口的宽度相同。 默认情况下,状态窗口具有此样式。
禁止缩放CCS_NORESIZE4防止控件在设置其初始大小或新大小时使用默认宽度和高度。 相反,控件使用在创建或调整大小的请求中指定的宽度和高度。
自由位置CCS_NOPARENTALIGN8防止控件自动移动到父窗口的顶部或底部。 相反,控件会将其位置保留在父窗口中,尽管更改了父窗口的大小。
如果还使用了CCS_TOP或CCS_BOTTOM,则会将高度调整为默认值,但位置和宽度保持不变。
拖动调整CCS_ADJUSTABLE0x20启用工具栏的内置自定义功能,使用户能够将按钮拖动到新位置,或通过将按钮从工具栏上拖动来删除按钮。
此外,用户可以双击工具栏以显示“ 自定义工具栏 ”对话框,使用户能够添加、删除和重新排列工具栏按钮。
禁止突显CCS_NODIVIDER0x40防止在控件顶部绘制双像素的突出显示。
垂直显示CCS_VERT0x80版本 4.70。 使控件垂直显示。
垂直左侧CCS_LEFT0x81版本 4.70。 使控件垂直显示在父窗口的左侧。
垂直缩放CCS_NOMOVEX0x82版本 4.70。 导致控件调整大小并垂直移动自身,而不是水平移动,以响应 WM_SIZE 消息。 如果使用CCS_NORESIZE,则此样式不适用。
垂直右侧CCS_RIGHT0x83版本 4.70。 使控件垂直显示在父窗口的右侧。
提示文本TBSTYLE_TOOLTIPS0x100创建一个工具提示控件,应用程序可以使用该控件显示工具栏中按钮的描述性文本。
多行按钮TBSTYLE_WRAPABLE0x200创建可以包含多行按钮的工具栏。
Alt拖动TBSTYLE_ALTDRAG0x400按住 Alt 键的同时拖动工具栏按钮来更改工具栏按钮的位置。否则拖动按钮时按住 Shift 键。
平面效果TBSTYLE_FLAT0x800创建平面工具栏。在平面工具栏中,工具栏和按钮都是透明的,并且已启用热跟踪。
文本置右TBSTYLE_LIST0x1000创建一个平面工具栏,其按钮文本在位图右侧。
自绘通知TBSTYLE_CUSTOMERASE0x2000当工具栏处理 擦除背景 消息时,生成 自绘控件 通知代码。
支持拖放TBSTYLE_REGISTERDROP0x4000生成 获取对象 通知代码,以在光标经过工具栏按钮时请求放置目标对象。
背景透明TBSTYLE_TRANSPARENT0x8000 创建透明工具栏。在透明工具栏中,工具栏是透明的,但按钮不是。


工具栏——系统定义的按钮图像列表:

英文名称常量释义
IDB_STD_SMALL_COLOR0小的彩色标准位图。
IDB_STD_LARGE_COLOR1大型彩色标准位图。
IDB_VIEW_SMALL_COLOR4小的颜色视图位图。
IDB_VIEW_LARGE_COLOR5大的颜色视图位图。
IDB_HIST_SMALL_COLOR8小尺寸的 Windows 资源管理器位图。
IDB_HIST_LARGE_COLOR9大尺寸的 Windows 资源管理器位图。
IDB_HIST_NORMAL12处于正常状态的 Windows 资源管理器旅行按钮和收藏夹位图。
IDB_HIST_HOT13处于热状态的 Windows 资源管理器旅行按钮和收藏夹位图。
IDB_HIST_DISABLED14处于禁用状态的 Windows 资源管理器旅行按钮和收藏夹位图。
IDB_HIST_PRESSED15处于按下状态的 Windows 资源管理器旅行按钮和收藏夹位图。

工具栏——标准小图和标准大图:

英文名称常量释义
STD_CUT0剪切操作。
STD_COPY1复制操作。
STD_PASTE2粘贴操作。
STD_UNDO3撤消操作。
STD_REDOW4恢复操作。
STD_DELETE5删除操作。
STD_FILENEW6新建文件操作。
STD_FILEOPEN7打开文件操作。
STD_FILESAVE8保存文件操作。
STD_PRINTPRE9打印预览操作。
STD_PROPERTIES10属性操作。
STD_HELP11帮助操作。
STD_FIND12查找操作。
STD_REPLACE13替换操作。
STD_PRINT14打印操作。

工具栏——视窗小图和视窗大图:

英文名称常量释义
VIEW_LARGEICONS0大图标视图。
VIEW_SMALLICONS1小图标视图。
VIEW_LIST2列表视图。
VIEW_DETAILS3详细信息视图。
VIEW_SORTNAME4按名称排序。
VIEW_SORTSIZE5按大小排序。
VIEW_SORTDATE6按日期排序。
VIEW_SORTTYPE7
VIEW_PARENTFOLDER8转到父文件夹。
VIEW_NETCONNECT9连接到网络驱动器。
VIEW_NETDISCONNECT10断开与网络驱动器的连接。
VIEW_NEWFOLDER11新建文件夹。
VIEW_VIEWMENU12菜单视图

工具栏——文件资源管理器小图和资源管理器大图:

英文名称常量释义
HIST_BACK0退后。
HIST_FORWARD1前进。
HIST_FAVORITES2打开收藏夹文件夹。
HIST_ADDTOFAVORITES3释义
HIST_VIEWTREE4视图树。

工具栏——扩展样式:

英文名称常量释义
TBSTYLE_EX_DRAWDDARROWS1允许按钮具有单独的下拉箭头。指定"下拉按钮"样式
TBSTYLE_EX_MULTICOLUMN2为工具栏提供垂直方向,并将工具栏按钮组织成列。
TBSTYLE_EX_VERTICAL4为工具栏提供垂直方向。 工具栏按钮从上到下流动,而不是水平排列。
TBSTYLE_EX_MIXEDBUTTONS8允许你为所有按钮设置文本,未显示在按钮上的文本将自动用作按钮的工具提示文本。
TBSTYLE_EX_HIDECLIPPEDBUTTONS0x10隐藏部分剪辑的按钮。 如果相邻的带区覆盖按钮的一部分,则不会显示该按钮。
TBSTYLE_EX_DOUBLEBUFFER0x80对工具栏进行双重缓冲。 双重缓冲是一种检测工具栏何时更改的机制。

工具栏——热项修改原因标志:

英文名称常量释义
HICF_OTHER0热项中的更改是由于无法确定的事件导致的。
HICF_MOUSE1热项中的更改由鼠标事件导致。
HICF_ARROWKEYS2热项中的更改是由箭头键引起的。
HICF_ACCELERATOR4热项中的更改是由快捷键引起的。
HICF_DUPACCEL8多个项具有相同的快捷键字符。
HICF_ENTERING0x10设置了此标志,则不存在以前的热项
HICF_LEAVING0x20设置了此标志,则不存在新的热项
HICF_RESELECT0x40热项中的更改是由于用户输入已热项的快捷键导致的。
HICF_LMOUSE0x80热项中的更改是左键单击鼠标事件导致的。
HICF_TOGGLEDROPDOWN0x100版本 5.80。使按钮切换状态。

工具栏——按钮样式:

中文名字英文名称常量释义
标准按钮TBSTYLE_BUTTON0创建标准按钮。
是分隔条TBSTYLE_SEP1创建一个分隔符,在按钮组之间提供小间隔。
复选按钮TBSTYLE_CHECK2创建一个双状态推送按钮,该按钮在用户每次单击时在按下状态和非按下状态之间切换。
分组单选TBSTYLE_GROUP4创建一个保持按下状态的按钮,直到按下组中的另一个按钮。
下拉按钮TBSTYLE_DROPDOWN8创建可在单击按钮时显示列表的下拉样式按钮。
自动适应TBSTYLE_AUTOSIZE0x10指定工具栏控件不应为按钮分配标准宽度。 相反,按钮的宽度将基于文本宽度加上按钮的图像计算。
不处理&符TBSTYLE_NOPREFIX0x20指定按钮文本将不具有与之关联的加速键前缀。
标准按钮BTNS_BUTTON0版本 5.80。创建标准按钮。此标志定义为 0,应用于表示未设置其他标志。
是分隔条BTNS_SEP1版本 5.80。 创建一个分隔符,在按钮组之间提供小间隔。 具有此样式的按钮不接收用户输入。
复选按钮BTNS_CHECK2版本 5.80。 创建一个双状态推送按钮,该按钮在用户每次单击时在按下状态和非按下状态之间切换。 按钮处于按下状态时具有不同的背景色。
分组单选BTNS_GROUP4版本 5.80。 与 BTNS_CHECK 结合使用时,创建一个保持按下状态的按钮,直到按下组中的另一个按钮。
分组复选BTNS_CHECKGROUP6版本 5.80。 创建一个在按下组中另一个按钮之前保持按下状态的按钮,类似于选项按钮 (也称为单选按钮) 。
下拉按钮BTNS_DROPDOWN8版本 5.80。 创建可在单击按钮时显示列表的下拉样式按钮。 下拉按钮发送TBN_DROPDOWN通知代码,而不是用于普通按钮的 WM_COMMAND 消息。可以让通知处理程序显示选项列表。
自动适应BTNS_AUTOSIZE0x10版本 5.80。指定工具栏控件不应为按钮分配标准宽度。 相反,按钮的宽度将基于文本宽度加上按钮的图像计算。
不处理&符BTNS_NOPREFIX0x20版本 5.80。 指定按钮文本将不具有与之关联的加速键前缀。
显示文本BTNS_SHOWTEXT0x40版本 5.80。指定应显示按钮文本。否则当光标悬停在按钮上时,工具栏控件将自动将其显示为工具提示。
下拉箭头BTNS_WHOLEDROPDOWN0x80版本 5.80。指定按钮将具有下拉箭头,但不能作为单独的部分。
标准按钮TBSTYLE_BUTTON0等效于 BTNS_BUTTON。 对 版本 4.72 及更早版本使用 TBSTYLE_BUTTON。
是分隔条TBSTYLE_SEP1等效于 BTNS_SEP。 对 版本 4.72 及更早版本使用 TBSTYLE_SEP。
复选按钮TBSTYLE_CHECK2等效于 BTNS_CHECK。 对 版本 4.72 及更早版本使用 TBSTYLE_CHECK。
分组单选TBSTYLE_GROUP4等效于 BTNS_GROUP。 对 版本 4.72 及更早版本使用 TBSTYLE_GROUP。
分组复选TBSTYLE_CHECKGROUP6等效于 BTNS_CHECKGROUP。 对 版本 4.72 及更早版本使用 TBSTYLE_CHECKGROUP。
下拉按钮TBSTYLE_DROPDOWN8等效于 BTNS_DROPDOWN。 对 版本 4.72 及更早版本使用 TBSTYLE_DROPDOWN。
自动适应TBSTYLE_AUTOSIZE0x10等效于 BTNS_AUTOSIZE。 对 版本 4.72 及更早版本使用 TBSTYLE_AUTOSIZE。
不处理&符TBSTYLE_NOPREFIX0x20等效于 BTNS_NOPREFIX。 对 版本 4.72 及更早版本使用 TBSTYLE_NOPREFIX。

工具栏——按钮状态:

英文名称常量释义
TBSTATE_CHECKED1选中状态
TBSTATE_PRESSED2按下状态
TBSTATE_ENABLED4可用状态
TBSTATE_HIDDEN8隐藏状态
TBSTATE_INDETERMINATE0x10灰暗状态
TBSTATE_WRAP0x20按钮后跟换行符。
TBSTATE_ELLIPSES0x40按钮的文本被截断,并显示省略号。
TBSTATE_MARKED0x80已标记按钮。标记项的解释取决于应用程序。

工具按钮类——结构体定义:
中文名字英文名称长度作用解释
工具按钮类TBBUTTON20包含有关工具栏中的按钮的信息。
工具按钮类——成员表
中文英文类型作用解释
图像iBitmap整数按钮图像的从零开始的索引。
标识idCommand整数与按钮关联的命令标识符。用于 WM_COMMAND 消息中。
状态fsState字节按钮状态标志。工具栏按钮状态列出的值的组合。
风格fsStyle字节按钮样式标志。工具栏按钮样式列出的值的组合。
预留bReserved整形预留。
数据dwData整数应用程序定义的值。
文字iString整数按钮字符串的从零开始的索引,或指向包含按钮文本的字符串缓冲区的指针。

工具信息类——结构体定义:
中文名字英文名称长度作用解释
工具信息类TBBUTTONINFO20包含或接收工具栏中特定按钮的信息。
工具信息类——成员表
中文英文类型作用解释
大小cbSize整数结构的大小。
掩码dwMask整数指示哪些成员包含有效信息的标志集。
标识idCommand整数按钮的命令标识符。掩码:0x20
图像iBitmap整数按钮图像的从零开始的索引。掩码:1
状态fsState字节按钮状态标志。掩码:4;工具栏按钮状态列出的值的组合。
风格fsStyle字节按钮样式标志。掩码:8;工具栏按钮样式列出的值的组合。
宽度cx整形按钮的宽度(以像素为单位)。掩码:0x40
数据lParam整数与按钮关联的应用程序定义值。掩码:0x10
文字pszText整数包含或接收按钮文本的字符缓冲区的地址。掩码:2
长度cchText整数接收按钮文本缓冲区的大小。掩码:2

工具保存类——结构体定义:
中文名字英文名称长度作用解释
工具保存类TBSAVEPARAMS12指定注册表中 保存还原 消息存储和检索工具栏状态信息的位置。
工具保存类——成员表
中文英文类型作用解释
表项hkr整数注册表项的句柄。
子项pszSubKey整数子项名称。
值名pszValueName整数值名称。

工具指标类——结构体定义:
中文名字英文名称长度作用解释
工具指标类TBMETRICS32定义用于收缩或展开工具栏项的工具栏的指标。
工具指标类——成员表
中文英文类型作用解释
大小cbSize整数结构的大小。
掩码dwMask整数获取指标的掩码。1取填充宽高,2取工具条宽高,4取间距宽高
填充宽cxPad整数按钮内填充的宽度,介于内容和按钮边缘之间。
填充高cyPad整数按钮内填充的高度,介于内容和按钮边缘之间。
宽度cxBarPad整数工具栏的宽度。未使用。
高度cyBarPad整数工具栏的高度。未使用。
间宽cxButtonSpacing整数工具栏按钮之间间距的宽度。
间高cyButtonSpacing整数工具栏按钮之间间距的高度。

工具标记类——结构体定义:
中文名字英文名称长度作用解释
工具标记类TBINSERTMARK8包含有关工具栏控件中插入标记的信息。
工具标记类——成员表
中文英文类型作用解释
序号iButton整数插入标记的从零开始的索引。如果此成员为-1,则没有插入标记。
标志dwFlags整数定义插入标记相对于指定按钮的位置。0左侧,1右侧,2背景(仅限取点标记)

工具图像类——结构体定义:
中文名字英文名称长度作用解释
工具图像类TBADDBITMAP8将包含按钮图像的位图添加到工具栏。
工具图像类——成员表
中文英文类型作用解释
实例hInst整数包含包含位图资源的可执行文件的模块实例的句柄。非资源写0
标识nID整数位图句柄或图像资源标识

工具替换类——结构体定义:
中文名字英文名称长度作用解释
工具替换类TBREPLACEBITMAP32将一个工具栏位图替换为另一个。
工具替换类——成员表
中文英文类型作用解释
原例hInstOld整数要替换的位图资源的模块实例句柄。0位图柄
原图nIDOld整数要替换的位图的位图柄或资源标识。
新例hInstNew整数包含新位图资源的模块实例句柄。0位图柄
新图nIDNew整数新位图的位图柄或资源标识。
数量nButtons整数新位图中包含的按钮图像数。 新映像的数量应与替换的图像数相同。

工具提示类——结构体定义:
中文名字英文名称长度作用解释
工具提示类NMTTDISPINFOA108包含用于处理 工具显示信息 通知代码的信息。
工具替换类——成员表
中文英文类型作用解释
通知hdr通知类包含有关通知的其他信息的 通知类 结构。
提示lpszText整数指向以 0 结尾的字符串的指针,该字符串将显示为工具提示文本。 如果 hinst 指定了实例句柄,则此成员必须是字符串资源的标识符。
内容szText[80]文本接收工具提示文本的缓冲区。 应用程序可以将文本复制到此缓冲区,而不是指定字符串地址或字符串资源。
实例hinst整数包含要用作工具提示文本的字符串资源的实例的句柄。 如果 提示 是工具提示文本字符串的地址,则此成员必须为 0。
标志uFlags整数指示如何解释包含的 通知类 结构的 标识 成员的标志。0=标识符,1=工具的句柄,4=从右到左阅读,0x8000保留提供的信息
附加lParam整数版本 4.70。 与工具关联的应用程序定义数据。