按钮样式

指定按钮样式的组合。 如果使用 BUTTON 类和 CreateWindow 或 CreateWindowEx 函数创建按钮,则可以指定下面列出的任何按钮样式。

示例

HRESULT Button::CreateText(HWND hParent, const TCHAR *szCaption, int nID, 
                               const Rect& rcBound)
{
    CREATESTRUCT create;
	ZeroMemory(&create, sizeof(CREATESTRUCT));

    create.x = rcBound.left;
    create.y = rcBound.top;
    create.cx = rcBound.right - create.x;
    create.cy = rcBound.bottom - create.y;

    create.hwndParent = hParent;
    create.lpszName = szCaption;
    create.hMenu = (HMENU)(INT_PTR)nID;
    create.lpszClass = TEXT("BUTTON");
    create.style = BS_PUSHBUTTON | BS_FLAT;
    return Control::Create(create);
}

GitHub 上的 Windows 经典示例中的例子。

常量

常数 说明
BS_3STATE
创建一个与检查框相同的按钮,只不过该框可以灰显,也可以选中或清除。 使用灰色状态可显示未确定检查框的状态。
BS_AUTO3STATE
创建一个与三状态检查框相同的按钮,不同之处在于该框会在用户选择它时更改其状态。 状态循环通过已检查、不确定和已清除。
BS_AUTOCHECKBOX
创建一个与检查框相同的按钮,不同之处在于用户每次选择检查框时,检查状态会自动在选中和清除之间切换。
BS_AUTORADIOBUTTON
创建与单选按钮相同的按钮,但当用户选择按钮时,系统会自动将按钮的检查状态设置为选中,并自动将同一组中所有其他按钮的检查状态设置为已清除。
BS_BITMAP
指定按钮显示位图。 请参阅“备注”部分,了解其与BS_ICON的交互。
BS_BOTTOM
将文本放置在按钮矩形的底部。
BS_CENTER
将按钮矩形中的文本水平居中。
BS_CHECKBOX
创建包含文本的小型空检查框。 默认情况下,文本显示在检查框右侧。 若要在检查框左侧显示文本,请将此标志与BS_LEFTTEXT样式 (或与等效BS_RIGHTBUTTON样式) 合并。
BS_COMMANDLINK
创建一个命令链接按钮,该按钮的行为类似于BS_PUSHBUTTON样式按钮,但命令链接按钮的左侧有一个绿色箭头,指向按钮文本。 可以通过将BCM_SETNOTE消息发送到按钮来设置按钮文本描述文字。
BS_DEFCOMMANDLINK
创建一个命令链接按钮,该按钮的行为类似于BS_PUSHBUTTON样式按钮。 如果该按钮位于对话框中,则用户可以通过按 Enter 键来选择命令链接按钮,即使命令链接按钮没有输入焦点也是如此。 此样式可用于让用户快速选择最可能 (默认) 选项。
BS_DEFPUSHBUTTON
创建一个推送按钮,该按钮的行为类似于BS_PUSHBUTTON样式按钮,但具有独特的外观。 如果该按钮位于对话框中,则用户可以通过按 Enter 键来选择该按钮,即使该按钮没有输入焦点也是如此。 此样式可用于让用户快速选择最可能 (默认) 选项。
BS_DEFSPLITBUTTON
创建一个拆分按钮,该按钮的行为类似于BS_PUSHBUTTON样式按钮,但也具有独特的外观。 如果拆分按钮位于对话框中,则用户可以通过按 Enter 键来选择拆分按钮,即使拆分按钮没有输入焦点也是如此。 此样式可用于让用户快速选择最可能 (默认) 选项。
BS_GROUPBOX
创建一个矩形,可在其中对其他控件进行分组。 与此样式关联的任何文本都显示在矩形的左上角。
BS_ICON
指定按钮显示图标。 请参阅“备注”部分,了解其与BS_BITMAP的交互。
BS_FLAT
指定按钮是二维的;它不使用默认着色来创建三维图像。
BS_LEFT
使按钮矩形中的文本左对齐。 但是,如果按钮是没有BS_RIGHTBUTTON样式的检查框或单选按钮,则文本在检查框或单选按钮的右侧保持对齐。
BS_LEFTTEXT
与单选按钮或检查框样式结合使用时,将文本放在单选按钮或检查框的左侧。 与BS_RIGHTBUTTON样式相同。
BS_MULTILINE
如果文本字符串太长,因而无法在按钮矩形中单行显示,则分多行显示按钮文本。
BS_NOTIFY
使按钮能够将 BN_KILLFOCUSBN_SETFOCUS 通知代码发送到其父窗口。
请注意,无论按钮是否具有此样式,按钮都会发送 BN_CLICKED 通知代码。 若要获取 BN_DBLCLK 通知代码,按钮必须具有BS_RADIOBUTTON或BS_OWNERDRAW样式。
BS_OWNERDRAW
创建所有者绘制的按钮。 当按钮的视觉方面发生更改时,所有者窗口会收到 WM_DRAWITEM 消息。 不要将BS_OWNERDRAW样式与任何其他按钮样式组合在一起。
BS_PUSHBUTTON
创建一个按钮,当用户选择该按钮时,该按钮会将 WM_COMMAND 消息发布到所有者窗口。
BS_PUSHLIKE
使按钮 (,例如检查框、三态检查框或单选按钮,) 看起来像一个按钮。 按钮在未按下或选中时看起来会引发,在按下或选中按钮时会凹陷。
BS_RADIOBUTTON
创建包含文本的小圆圈。 默认情况下,文本显示在圆圈的右侧。 若要在圆的左侧显示文本,请将此标志与BS_LEFTTEXT样式 (或等效BS_RIGHTBUTTON样式) 组合。 将单选按钮用于相关但互斥选项组。
BS_RIGHT
右对齐按钮矩形中的文本。 但是,如果按钮是没有BS_RIGHTBUTTON样式的检查框或单选按钮,则文本在检查框或单选按钮的右侧右对齐。
BS_RIGHTBUTTON
将单选按钮的圆或检查框的正方形置于按钮矩形的右侧。 与BS_LEFTTEXT样式相同。
BS_SPLITBUTTON
创建拆分按钮。 拆分按钮具有下拉箭头。
BS_TEXT
指定按钮显示文本。
BS_TOP
将文本放置在按钮矩形的顶部。
BS_TYPEMASK
请勿使用此样式。 在BS_* 样式位上使用 OR 运算符产生的复合样式位。 它可用于屏蔽给定位掩码中的有效BS_* 位。 请注意,这已过期,并且未正确包含所有有效样式。 因此,不应使用此样式。
BS_USERBUTTON
已过时,提供此项是为了与 16 位版本的 Windows 保持兼容。 应用程序应改用 BS_OWNERDRAW。
BS_VCENTER
将文本放置在按钮矩形) 的中间 (垂直放置。

备注

有关主按钮样式(如BS_CHECKBOX和BS_GROUPBOX)的插图,请参阅 按钮类型

按钮控件上文本或图标或两者的外观取决于BS_ICON和BS_BITMAP样式,以及是否发送 BM_SETIMAGE 消息。 可能的结果如下所示。

BS_ICON还是BS_BITMAP集? BM_SETIMAGE调用? 结果
仅显示图标。
显示图标和文本。
仅显示文本。
仅显示文本

要求

要求
标头
Winuser.h