本文介绍如何在MFC文档工程中添加多个按钮
样例中添加了两个按钮,如果有需要,可以使用数组来动态添加,参见
CSDN论坛某贴7L的回答。
1.添加ID
在Resource.h文件中添加按钮的ID,编号不与之前重复就可以,这里我添加了两个按钮。
#define IDB_BTN_NTRANS 307//旋转、缩放变换的按钮
#define IDB_BTN_SHEAR 308//错切的按钮
别忘了保存。
2.在view中添加成员变量
在项目中的View文件添加按钮变量,比如我的工程是ShapeTransform,我就在ShapeTransformView.h中添加。
private:
CButton* btn_transform;//缩放、旋转的变换
CButton* btn_shear;//斜切的按钮
3.添加OnCreate()函数
类视图中给view添加onCreate函数,头文件中有了:
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
在cpp文件中编辑函数,将动态按钮生成并添加到屏幕上:
int CShapeTransformView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO: 在此添加您专用的创建代码
btn_transform = new CButton;//一定要通过new CButton的形式来创建,否则不会显示
btn_transform->Create( _T("自由变换"), WS_CHILD | WS_VISIBLE | WS_BORDER, CRect(20,20,100,60),this, IDB_BTN_NTRANS);
//上一行,第一个参数为按钮字样,CRect表示按钮的位置和大小,最后一个参数为第一步添加的ID名称
btn_transform->ShowWindow(SW_SHOWNORMAL);
btn_shear = new CButton;
btn_shear->Create(_T("斜切"), WS_CHILD | WS_VISIBLE | WS_BORDER, CRect(220,20,300,60),this, IDB_BTN_SHEAR);
btn_shear->ShowWindow(SW_SHOWNORMAL);
return 0;
}
接下来添加响应函数。
4.添加成员函数
在view.h文件中添加函数:
protected: // 仅从序列化创建
CShapeTransformView();
DECLARE_DYNCREATE(CShapeTransformView)
//edit here
afx_msg void OnBtnNTransformDown();
afx_msg void OnBtnShearDown();
5.将按钮与响应函数对应
在view.cpp文件的开头BEGIN_MESSAGE_MAP(CShapeTransformView, CView)和END_MESSAGE_MAP()之间添加语句,将按钮ID和响应函数对应起来:
ON_COMMAND(IDB_BTN_NTRANS, OnBtnNTransformDown)
ON_COMMAND(IDB_BTN_SHEAR,OnBtnShearDown)
6.编辑响应函数
这里自由发挥,比如先来个提示框:
void CShapeTransformView::OnBtnNTransformDown(){
MessageBox(_T("点击了按钮!"));
}
void CShapeTransformView::OnBtnShearDown(){
MessageBox(_T("错切变换!"));
}
OK,运行以下试试看吧。
没想到简单的两个按钮折腾了1个小时……
这实验还怎么继续做啊(掀桌)