MFC文档添加多个按钮(及响应函数)

来源:互联网 发布:日本 穆斯林 知乎 编辑:程序博客网 时间:2024/05/19 16:48

本文介绍如何在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 hereafx_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个小时……
这实验还怎么继续做啊(掀桌)