VS2019 MFC动态创建按钮和复选框,CButton类 Create成员函数应用创建复选框和按钮[MFC动态创建控件一]

35 篇文章 8 订阅

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);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值