按钮控件在MFC中使用CButton表示,CButton包含了三种样式:Push Button,Check Box,Radio Button。
一、静态控件
将Toolbox中的Push Button,Check Box,Radio Button控件拖放到对话框中,并使用VisualStudio的Wizard功能关联CButton变量及添加对应响应事件。
当然,将Button控件拖放到对话框上之后,也可以手动关联变量及添加事件响应函数。
步骤如下(以Push Button为例):
1.在对话框类中添加变量CButton m_btn;
2.关联变量:在DoDataExchange函数中添加DDX_Control(pDX, IDC_BUTTON1, m_btn);
3.添加消息映射:
在BEGIN_MESSAGE_MAP和END_MESSAGE_MAP之间添加:ON_BN_CLICKED(IDC_BUTTON1, &CTestDlg::OnBnClickedButton1)
并添加对话框类的成员函数void CTestDlg::OnBnClickedButton1()。
二、动态创建
1.创建CButton实例
CButton *p_MyButton = new CButton();
2.调用CButton类的Create()函数创建
该函数原型如下:
BOOL Create(
LPCTSTR lpszCaption,
DWORD dwStyle,
const RECT& rect,
CWnd* pParentWnd,
UINT nID);
lpszCaption --- 按钮上显示的文本
dwStyle --- 窗口风格,可以是以下风格的组合:
【通用】
WS_CHILD 子窗口,必须有
WS_VISIBLE 窗口可见
WS_TABSTOP 可用Tab键切换焦点
WS_GROUP 成组,用于Radio Button按钮组中的第一个按钮
WS_DISABLED 禁用窗口
【按钮专用】
BS_PUSHBUTTON 下压式按钮即Push Button
BS_AUTORADIOBUTTON 单选按钮及Radio Button
BS_AUTOCHECKBOX 复选按钮及Check Box
rect --- 按钮的大小和位置
pParentWnd --- 父窗口
nID --- 和按钮关联的ID
3.添加消息映射(同上)
4.销毁资源
delete
在CButton类的析构函数中有调用DestroyWindow来释放和其相关的窗口资源
代码示例:
// 创建Push Button
CButton *m_pMyButton = new CButton();
CRect rcBtn(0, 0, 100, 20);
m_pMyButton->Create(TEXT("Test"), WS_CHILD | WS_VISIBLE | WS_TABSTOP | BS_PUSHBUTTON,
rcBtn, this, 1000);
// 设置和对话框一样的字体
m_pMyButton->SetFont(this->GetFont());
// 释放资源
delete m_pMyButton;
三、具体使用细则
1.Radio Button的Group规则
WS_GROUP风格指定Radio Button组的首个控件。
该控件组是由这个首控件和在它之后定义的所有Radio Button组成,直到下一个拥有WS_GROUP风格的Radio Button为止。
2.GetCheck与SetCheck
功能:获取及设置Radio Button以及Check Box的选择状态
int GetCheck( ) const;
返回值为BST_UNCHECKED,BST_CHECKED
void SetCheck(int nCheck);
nCheck为BST_UNCHECKED,BST_CHECKED