按钮类型

有多种类型的按钮和一个或多个按钮样式可以区分相同类型的按钮。

本文档讨论以下主题。

按钮类型和样式

按钮属于类型,并且可能具有影响其外观和行为的其他样式。 有关按钮样式表,请参阅按钮样式

以下屏幕截图显示不同类型的按钮。

screen shot of a dialog box that shows examples of eight types of buttons

屏幕截图显示按钮在 Windows Vista 中的显示方式。 外观因操作系统的不同版本而异,具体取决于用户设置的主题。

请注意有关此图的以下几点:

  • 三态复选框以不确定状态显示。 当选中或取消选中时,它看起来像一个正常的复选框。
  • 大按钮已以编程方式设置为按下状态(通过发送 BM_SETSTATE 消息),因此即使未单击时也会保留其外观。
  • 在显示的视觉样式中,默认按下按钮的背景(或具有输入焦点的其他按下按钮)在蓝色和灰色之间循环。

复选框

复选框包含一个方框和应用程序定义的标签、一个图标或者一个表示用户可以通过选择按钮进行选择的位图。 应用程序通常显示复选框,使用户能够选择一个或多个不相互排斥的选项。

复选框可以是四种样式之一:标准、自动、三态和自动三态,分别由常量 BS_CHECKBOXBS_AUTOCHECKBOXBS_3STATEBS_AUTO3STATE定义。 每个样式可以假定两个选中状态:选中(框内选中标记)或清除(无选中标记)。 此外,三态复选框可以假定不确定状态(复选框中的阴影框),这可能表示用户尚未做出选择。 重复单击标准或自动复选框,将其从选中切换为清除,然后再次返回。 重复单击三态复选框将其从选中切换为清除再切换为不确定,然后重复循环。

当用户单击复选框(任何样式),复选框将接收键盘焦点。 系统向复选框的父窗口发送包含 BN_CLICKED 通知代码的 WM_COMMAND 消息。 如果父窗口来自自动复选框或自动三态复选框,则无需处理此消息,因为系统会自动设置这些样式的选中状态。 但是,如果父窗口来自非自动复选框或三态复选框,则父窗口必须处理该消息,因为父窗口负责为这些样式设置选中状态。 无论复选框样式如何,系统在更改复选框状态后自动重新绘制该框。

应用程序可以使用 IsDlgButtonChecked 函数确定复选框的状态。

分组框

组框是一个包围一组控件的矩形,如复选框或单选按钮,其左上角带有应用程序定义的文本标签。 组框的唯一用途是组织相关的通用控件(通常由标签指示)。 组框只有一种样式,由常量 BS_GROUPBOX 定义。 由于无法选择组框,因此没有选中状态、焦点状态或按下状态。

按钮

按钮是一个矩形,其中包含应用程序定义的文本标签、图标或位图,指示用户选中的按钮的作用。

按钮可以是两种样式之一(标准或默认),由常量 BS_PUSHBUTTONBS_DEFPUSHBUTTON 定义。 标准按钮通常用于启动操作。 用户单击该按钮时会收到键盘焦点。 默认按钮通常用于指示最常见的选择或默认选择,例如关闭对话框。 在对话框中没有其他具有输入焦点的按钮时,用户只需按 Enter 即可选择该按钮。

用户单击一个按钮时会收到键盘焦点。 系统向按钮的父窗口发送包含 BN_CLICKED 通知代码的 WM_COMMAND 消息。

拆分按钮是 Windows Vista 和版本 6.00 中引入的特殊按钮。 拆分按钮分为两个部分。 主要部分的功能类似于常规或默认按钮。 第二部分有一个向下箭头。 通常,单击箭头时会显示一个菜单。

拆分按钮具有 BS_SPLITBUTTON 样式,或者 BS_DEFSPLITBUTTON 样式(如果是对话框中的默认按钮)。 可以使用 BCM_SETSPLITINFO 消息或相应的 Button_SetSplitInfo 宏来修改按钮的外观。

当用户单击拆分按钮的主要部分时,会发送 BN_CLICKED 通知,就像普通按钮一样。 但是,当用户单击向下箭头时,会发送 BCN_DROPDOWN 通知。 应用程序会显示一个菜单来响应 BCN_DROPDOWN。

Windows Vista 和 版本 6.00 还引入了另一种按钮,即命令链接。 从视觉上看,命令链接与普通按钮大相径庭,但却具有相同的功能。 命令链接通常显示箭头图标、文本行和字体较小的其他文本。

单选按钮

单选按钮(也称为选项按钮)包含一个圆形按钮和一个应用程序定义的标签、图标或者表示用户可以通过选择按钮进行选择的位图。 应用程序通常使用组框中的单选按钮,以允许用户选择一组相关,但相互排斥的选项。

单选按钮可以是两种样式之一:标准或自动,由样式常量 BS_RADIOBUTTONBS_AUTORADIOBUTTON 定义。 每个样式可以假定两个选中状态:选中(按钮中有一个点)或清除(按钮中没有点)。

当用户选择任一状态时,单选按钮将接收键盘焦点。 系统向按钮的父窗口发送包含 BN_CLICKED 通知代码的 WM_COMMAND 消息。 如果父窗口来自自动单选按钮,则不需要处理此消息,因为系统会自动设置该样式的选中状态。 但是,如果父窗口来自非自动单选按钮,则父窗口应处理该消息,因为父窗口负责设置该样式的选中状态。 无论单选按钮样式如何,系统都会在按钮状态发生更改时自动重新绘制按钮。

单选按钮按组排列,随时只能选中组中的一个按钮。 如果为任何单选按钮设置 WS_GROUP 标志,该按钮是组中的第一个按钮,并且紧随其后按选项卡顺序(但不具有 WS_GROUP 标志)显示的所有按钮都是其组中的一部分。 如果没有单选按钮具有 WS_GROUP 标志,则对话框中的所有单选按钮都被视为单个组。

应用程序可以使用 IsDlgButtonChecked 函数确定单选按钮是否选中。

引用

按钮样式

Conceptual

使用按钮