vc++按钮应用大全

本文详细介绍了在VC++环境中创建和使用按钮的各种方法,包括基础应用、进阶应用、高级应用和特殊应用。基础应用涵盖了普通按钮、复选按钮和单选按钮的创建;进阶应用讲解了按钮的成员函数及风格设置;高级应用中提到了CBitmapButton类的使用,以实现个性化按钮;特殊应用则展示了如何创建不规则形状的按钮。文章还涉及到按钮的鼠标事件处理和声音添加,以及通过CRgn类改变按钮形状的技术。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

本文需要的主要工具:

VC6.0

MSDN

MFC类库详解(网上可以下载,对于英文不过关的人很方便) 等等…

本例源代码:vc++按钮应用大全

I按钮应用大全

按钮是最常用的控件,使用也比较简单,因此介绍控件的用法就从按钮开始。本文计划通过四个阶段对按钮的使用进行详细阐述,即基础进阶高级特殊

一、基础应用

(一)在视图中创建按钮

示例程序:Button

1、普通按钮

在视图中创建按钮非常简单,需要以下步骤:

(1)在视图类中定义成员变量或CButton指针

在CButtonView类上点击右键,选择Add Member Variable…,添加成员变量m_Btn,*p_Btn;

(2)为按钮分配ID号

我们可以为按钮分配超过100以上的任意ID号,但是规范的做法是在资源视图中选择String Table,在其中添加资源ID及其注解或标题。

(图I-1)

(3)为视图类添加windows消息处理函数OnCreate(…)

一个窗口创建之后发送的第一个消息就是WM_CREATE消息,其消息响应函数为OnCreate(),因此在这个函数中创建按钮最合适。在CButtonView类上点击右键,选择Add Windows Message Handle…,在生成的对话框中选择WM_CREATE消息,生成函数。

(4)首先获取资源中按钮的标题(当然也可以用任意标题,例如第二个按钮),如果定义的是成员变量,则直接调用Create函数创建按钮;如果是指针,则先new一个对象,然后用Create函数创建按钮。

在OnCreate函数中添加如下代码(附注释):

//定义字符串,用来存储按钮标题

       CString str_push1;

       //获取按钮1标题

       str_push1.LoadString(IDC_BUTTON_PUSH1);

       //创建按钮1

       m_Btn.Create(str_push1,WS_CHILD | WS_VISIBLE | WS_TABSTOP | BS_PUSHBUTTON ,CRect(10,10,200,60),

              this,IDC_BUTTON_PUSH1);

      

       //生成按钮对象

       p_Btn=new CButton();

       //创建按钮2

       p_Btn->Create(_T("第二个按钮"),WS_CHILD | WS_VISIBLE | WS_TABSTOP | BS_PUSHBUTTON ,CRect(10,70,200,120),

              this,IDC_BUTTON_PUSH2);

Create函数具体用法这里就不赘述了,需要注意的是,按钮窗口风格包括以下内容:

BS_3STATE 与复选框一样本样式按钮可被单击变暗。变暗状态通常用于指示本样式的按键正处于禁用状态。

*.

BS_AUTO3STATE 与三状态的复选框一样当用户选中它本按钮样式状态外观会改变。

*.

BS_AUTOCHECKBOX 与复选框一样,除了在用户点控件后会出现一个选中标志,当用户在下一次点选时,该标志会消失。

*.

BS_AUTORADIOBUTTON 与单先框一样,不同的是,用户点选它时会高亮显示,同时,会把同一组的其它同样的按钮的高亮状态转移到自己身上。

*.

BS_BITMAP 指定按钮以一张位图显示。

*.

BS_BOTTOM 把按钮标题放置到按钮矩形区域的底部。

*.

BS_CENTER 按钮标题在按钮的矩形区域中央显示。

*.

BS_CHECKBOX 在按钮的右边创建一个小方块(此样式必须与BS_LEFTTEXT结合使用。)

*.

BS_DEFPUSHBUTTON 创建一个通用的默认按钮该按钮有一个厚重的黑色边框。用户可以通过按回车键来点选本按钮,该按钮可以实现用户通常要使用的功能(即默认执行动作功能)。

*.

BS_FLAT 指定按钮为2D按钮,不采用3D控件所使用的阴影。

*.

BS_GROUPBOX 创建一个分组框来给控件分组,如果使用了标题,则标题会出现在分组框的左上角位置。

*.

BS_ICON 指定按钮上显示一个图标。

*.

BS_LEFT 在控件的矩形区域内左对齐标题。如果按钮是一个没有 BS_RIGHTBUTTON 样式的复选框或单选框 ,那么文本居将在复选框或单选框的右边居左对齐(这话有些多余,意思文本在复选框或单选框的那个可选被小方框或圆圈的右边。)。

*.

BS_LEFTTEXT 当按钮是单选或是复选框时,标题文本将出现在单选或复选框的客户区(即复选框的矩形框,单选框的圆形框)的左边。

*.

BS_MULTILINE 如果标题文本太长,将在绘制区域内对文本进行折行处理。

*.

BS_NOTIFY 激活按钮,使之可对父窗口发送BN_DBLCLK, BN_KILLFOCUS,  BN_SETFOCUS 消息,注意:不管有没有使用本样式,按钮都有一个 BN_CLICKED 可发送消息。

*.

BS_OWNERDRAW 创建一个自绘风格的按钮。当按钮的外观发生改变时,框架会调用DrawItem成员函数。本样式在使用CBitmapButton类时必须设置。

*.

BS_PUSHBUTTON 创建一个按钮(即最常见的按钮),该按钮在点击时,将向父窗口发送一个WM_COMMAND 消息。

*.

BS_PUSHLIKE 把(多选框,三态多选框,单选框)以按钮的形式显示,该按钮在未选种状态时是浮起的,但在选中状态时是陷入状态的。

*.

BS_RADIOBUTTON 创建单选框,该按钮有一个圆形的客户区,(在本样式不与 BS_LEFTTEXT 样式结合使用的情况下)标题文本在其右方。单选框通常用于有相关联的多个可选项里面,但相互之间只有作一个选择的情况下。

*.

BS_RIGHT 在按钮的绘制区域内右对齐文本。但如果按钮是一个没有BS_RIGHTBUTTON样式的单选或复选框,标题文本将在单选或复选框可点选区的右边居右对齐。

*.

BS_RIGHTBUTTON 设定单选框的圆形可选区或复选框的方开形复选区出现在按钮的矩形区域的右边。与 BS_LEFTTEXT 的效果一样。

*.

BS_TEXT 指定按钮将显示文本标题。

*.

BS_TOP 将标题文本显示在按钮的绘制区域的顶边。

*.

BS_USERBUTTON 已废弃不用,只作为兼容16位系统版本的Windows,基于32位windows系统的请用 BS_OWNERDRAW 样式取代。

*.

BS_VCENTER 设定按钮的标题在绘制区域的垂直方向居中。

我们可以使用上述按钮风格的组合,创造出不同样式和种类的按钮。

(5)使用指针的情况下,在析构函数中释放对象。

delete p_Btn;

 

2、复选按钮

创建复选按钮的方法与普通按钮相同,只需要调整按钮风格即可,创建代码如下:

//创建三态复选按钮

m_BtnC.Create(_T("三态复选按钮"),WS_CHILD | WS_VISIBLE | WS_TABSTOP | BS_AUTO3STATE,CRect(10,130,200,180),this,IDC_BUTTON_CHECK);

3、单选按钮

创建方法与前类似,但是由于单选按钮往往是成组出现的,需注意创建时第一个按钮必须加上windows风格WS_GROUP。创建代码如下:

//创建单选按钮1

m_BtnR1.Create(_T("单选按钮1"),WS_CHILD | WS_VISIBLE | WS_TABSTOP | BS_AUTORADIOBUTTON | WS_GROUP,CRect(10,190,200,240),          this,IDC_BUTTON_RADIO1);

//创建单选按钮2

m_BtnR2.Create(_T("单选按钮2"),WS_CHILD | WS_VISIBLE | WS_TABSTOP | BS_AUTORADIOBUTTON,CRect(10,250,200,300),

              this,IDC_BUTTON_RADIO2);

(二)为按钮添加消息响应函数

由于是动态创建的按钮,因此不能简单的使用ClassWizard添加消息响应函数,只能手动添加,以第一个按钮为例,添加单击消息响应函数步骤如下:

(1)在MESSAGE_MAP中添加响应函数。

ON_BN_CLICKED(IDC_BUTTON_PUSH1,OnBtnClk)

(2)在头文件中添加函数定义。

//消息响应函数定义

afx_msg void OnBtnClk();

(3)正常编写消息响应函数的实现部分。例如:

void CButtonView::OnBtnClk()

{

       MessageBox(_T("点击了普通按压式按钮!"));

}

运行效果如图I-2

二、进阶应用

前文已经对按钮的创建和使用方法进行了介绍,通过上文我们已经可以在自己的程序中使用按钮了,但是如果想要更好的运用按钮,还必须对其中的函数有比较深刻的了解。

(一)按钮的成员函数

CButton类的成员函数比较少,而且简单,主要包括获取按钮状态(或风格)和设置按钮状态(或风格)两个方面内容。另外还有一个DrawItem()函数,在高级应用中我们将重点讲到它。按钮的成员函数主要包括如下内容:

函数名称

用途

GetState

检索按钮控件的选中状态、加亮状态和获得焦点状态

SetState

设置按钮控件的加亮状态

GetCheck

检索按钮控件的选中状态

SetCheck

设置按钮控件的选中状态

GetButtonStyle

检索按钮控件的风格

SetButtonStyle

设置按钮控件的风格

GetIcon

检索此前调用SetIcon设置的图标句柄

SetIcon

指定一个在按钮上显示的图标

GetBitmap

检索此前调用SetBitmap设置的位图的句柄

SetBitmap

设置在按钮上显示的位图

GetCursor

检索此前调用SetCursor设置的光标图像的句柄

SetCursor

设置在按钮上显示的光标图像

1、首先我们先看一下获取和设置按钮风格(style)的函数。

GetButtonStyle

检索按钮控件的风格

SetButtonStyle

设置按钮控件的风格

(1)CButton::GetButtonStyle

UINT GetButtonStyle( ) const;

返回值:返回CBu

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值