MicrosoftWare 微软官网说明:
CButton::Create
创建Windows按钮控件并将它附加到 CButton 对象。
virtual BOOL Create( LPCTSTR lpszCaption, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID );
参数
lpszCaption
指定按钮控件的文本。dwStyle
指定按钮控件的样式。 适用于 按钮样式 的任意组合按钮。rect
指定按钮控件的大小和位置。 它可以是 CRect 对象或 RECT 结构。pParentWnd
指定按钮控件的父窗口,通常 CDialog。 不能为 NULL。nID
指定按钮控件的ID.返回值
非零,如果成功;否则为0。
备注
在构造在两个步骤的一 CButton 对象。 首先,调用构造函数然后调用 Create,创建Windows按钮控件并将它附加到 CButton 对象。
如果给定 WS_VISIBLE 样式,Windows发送按钮控件所需的所有信息激活和显示按钮。
将以下 窗口样式 于按钮控件:
始终WS_CHILD
通常WS_VISIBLE
少见WS_DISABLED
对控件分组的WS_GROUP
包含按钮的WS_TABSTOP 按tab键顺序
按钮类型
下表列出了按钮类型。 可以选择下列项目之一。 如果不指定按钮类型,则默认为 BS_PUSHBUTTON。
类型
说明
BS_3STATE
创建具有三种状态的复选框按钮:BST_CHECKED、BST_INDETERMINATE 和 BST_UNCHECKED。 单击按钮将发送 BN_CLICKED 通知到所有者窗口,但并不更改按钮的状态。 默认情况下,关联的文本显示在复选框右侧。 若要在复选框左侧显示文本,请使用 BS_LEFTTEXT 或 BS_RIGHTBUTTON 样式。
BS_AUTO3STATE
创建具有三种状态的复选框按钮:BST_CHECKED、BST_INDETERMINATE 和 BST_UNCHECKED。 单击按钮将发送 BN_CLICKED 通知到所有者窗口并更改按钮的状态。 按钮的状态按 BST_CHECKED、BST_INDETERMINATE 和 BST_UNCHECKED 的顺序循环。 默认情况下,关联的文本显示在复选框右侧。 若要在复选框左侧显示文本,请使用 BS_LEFTTEXT 或 BS_RIGHTBUTTON 样式。
BS_AUTOCHECKBOX
创建具有两种状态的复选框按钮:BST_CHECKED 和 BST_UNCHECKED。 单击按钮将发送 BN_CLICKED 通知到所有者窗口并更改按钮的状态。 默认情况下,关联的文本显示在复选框右侧。 若要在复选框左侧显示文本,请使用 BS_LEFTTEXT 或 BS_RIGHTBUTTON 样式。
BS_AUTORADIOBUTTON
创建具有两种状态的单选按钮:BST_CHECKED 和 BST_UNCHECKED。 单选按钮通常在组中使用,每个组一次最多可以拥有一个选中项。 单击按钮将发送 BN_CLICKED 通知到所有者窗口,将选中的单选按钮的状态设置为 BST_CHECKED,然后将按钮组中的其他所有单选按钮的状态设置为 BST_UNCHECKED。 默认情况下,关联的文本显示在单选按钮右侧。 若要在单选按钮左侧显示文本,请使用 BS_LEFTTEXT 或 BS_RIGHTBUTTON 样式。
BS_CHECKBOX
创建具有两种状态的复选框按钮:BST_CHECKED 和 BST_UNCHECKED。 单击按钮将发送 BN_CLICKED 通知到所有者窗口,但并不更改按钮的状态。 默认情况下,关联的文本显示在复选框右侧。 若要在复选框左侧显示文本,请使用 BS_LEFTTEXT 或 BS_RIGHTBUTTON 样式。
BS_COMMANDLINK
创建一个命令链接按钮。 命令链接按钮是 Windows Vista 特有的命令按钮,主文本左边显示有一个绿色按钮,主文本下方显示注释。 可以使用 CButton::SetNote 设置注释文本。
BS_DEFCOMMANDLINK
创建一个命令链接按钮。 命令链接按钮是 Windows Vista 特有的命令按钮,主文本左边显示有一个绿色按钮,主文本下方显示注释。 可以使用 CButton::SetNote 设置注释文本。 如果按钮出现在对话框中,则即使按钮没有输入焦点,也要按 ENTER 键发送一个 BN_CLICKED 通知到该对话框。
BS_DEFPUSHBUTTON
创建一个具有深黑色边框的命令按钮。 如果按钮出现在对话框中,则即使按钮没有输入焦点,也要按 ENTER 键发送一个 BN_CLICKED 通知到该对话框。
BS_DEFSPLITBUTTON
创建拆分按钮。 拆分按钮是包含位于下拉箭头旁的按钮 Windows Vista 特有的命令按钮。 单击该按钮时,系统会执行默认命令。 单击下拉箭头时,其他命令菜单会显示出来。 如果拆分按钮出现在对话框中,则即使按钮没有输入焦点,也要按 ENTER 键发送一个 BN_CLICKED 通知到该对话框
BS_GROUPBOX
创建一个可在此分组其他按钮的矩形。 该样式的文本在矩形的左上角显示。
BS_OWNERDRAW
创建一个所有者描述的按钮。 当按钮的可视方面已更改时,该框架将调用 DrawItem 方法。 当使用 CBitmapButton 选件类时,必须设置该样式。
BS_PUSHBUTTON
创建一个命令按钮,当用户单击按钮时 BN_CLICKED 通知将发送到所有者窗口。
BS_RADIOBUTTON
创建具有两种状态的单选按钮:BST_CHECKED 和 BST_UNCHECKED。 单选按钮通常在组中使用,每个组一次最多可以拥有一个选中项。 单击按钮将发送 BN_CLICKED 通知到所有者窗口,但并不自动更改组中任何按钮的状态。 默认情况下,关联的文本显示在单选按钮右侧。 若要在单选按钮左侧显示文本,请使用 BS_LEFTTEXT 或 BS_RIGHTBUTTON 样式。
BS_SPLITBUTTON
创建拆分按钮。 拆分按钮是包含位于下拉箭头旁的按钮 Windows Vista 特有的命令按钮。 单击该按钮时,系统会执行默认命令。 单击下拉箭头时,其他命令菜单会显示出来。
BS_USERBUTTON
已弃用,但可与 Windows 16 位版兼容。 基于 Win32 的应用程序应改用 BS_OWNERDRAW。
单选按钮和复选框样式
下表列出了特定于单选按钮和复选框的样式。 其他按钮类型都忽略这些样式。 可以选择以下一个或多个项目。
样式
说明
BS_LEFTTEXT
在单选按钮或复选框样式中,该文本显示在单选按钮或复选框的左侧。
BS_RIGHTBUTTON
在单选按钮或复选框样式中,该文本显示在单选按钮或复选框的左侧。 此样式与 BS_LEFTTEXT 样式相同。
BS_PUSHLIKE
使复选框或单选按钮的外观和行为与命令按钮相似。 当该按钮显示为 BST_CHECKED 时处于按下状态,当显示为 BST_INDETERMINATE 时处于按下和灰显状态,当显示为 BST_UNCHECKED 时处于释放状态。
文本对齐样式
下表列出了水平和垂直文本对齐选项。 可以选择下列项目之一。
样式
说明
BS_LEFT
将矩形按钮内的文本左对齐。 但是,如果该按钮是不具有 BS_RIGHTBUTTON 样式的复选框或单选按钮,则该文本将在复选框或单选按钮右侧进行左端对齐。
BS_RIGHT
将矩形按钮内的文本右对齐。 但是,如果该按钮是不具有 BS_RIGHTBUTTON 样式的复选框或单选按钮,则该文本将在复选框或单选按钮右侧进行右端对齐。
BS_CENTER
将按钮内的文本水平居中对齐。
BS_TOP
将文本置于矩形按钮的顶部。
BS_BOTTOM
将文本置于矩形按钮的底部。
BS_VCENTER
将按钮内的文本垂直居中对齐。
按钮内容选项
下表列出了用于指示按钮中显示的内容的选项。 仅显示文本忽略这些样式的按钮类型。 可以选择下列项目之一。
样式
说明
BS_BITMAP
将按钮指定成以位图形式显示。
BS_ICON
指定按钮以图标形式显示。
BS_TEXT
将按钮指定成以文本形式显示。
其他选项
下表列出了可用于任意按钮类型的附加选项。 可以选择以下一个或多个项目。
样式
说明
BS_FLAT
指定按钮是二维的且不带默认底纹以绘制三维图形。
BS_MULTILINE
如果文本字符串太长而无法容纳在该按钮矩形的一行中,那么就将按钮文本折为多行。
BS_NOTIFY
启用一个按钮以发送 BN_DBLCLK、BN_KILLFOCUS 和 BN_SETFOCUS 通知消息到其父窗口。 请注意,按钮将发送 BN_CLICKED 通知,而无论是否指定样式。
示例
c++
复制
CButton myButton1, myButton2, myButton3, myButton4;
// Create a push button.
myButton1.Create(_T("My button"), WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,
CRect(10,10,100,30), pParentWnd, 1);
// Create a radio button.
myButton2.Create(_T("My button"), WS_CHILD|WS_VISIBLE|BS_RADIOBUTTON,
CRect(10,40,100,70), pParentWnd, 2);
// Create an auto 3-state button.
myButton3.Create(_T("My button"), WS_CHILD|WS_VISIBLE|BS_AUTO3STATE,
CRect(10,70,100,100), pParentWnd, 3);
// Create an auto check box.
myButton4.Create(_T("My button"), WS_CHILD|WS_VISIBLE|BS_AUTOCHECKBOX,
CRect(10,100,100,130), pParentWnd, 4);
本文例程
创建CheckeBox类型按钮。
CButton cHeckBok;
if (!cHeckBok.Create(_T("BUTTON"),
WS_CHILD | WS_VISIBLE | BS_CHECKBOX| BS_AUTOCHECKBOX| BS_VCENTER|BS_CENTER| BS_FLAT/*| BS_OWNERDRAW*/,
rect, this, nID))
{
TRACE("Failed to create button\n");
return FALSE;
}
创建按钮控件
CButton cButton;
if (!cButton.Create(L"退出系统", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON| BS_OWNERDRAW, rect, this, nID))
{
TRACE("Failed to create combo-box\n");
return FALSE;
}
m_buttonOne.SetTextFont(m_buttonTextHeight, TRUE,TRUE, m_ButtonTextstrFaceName);