动态创建按钮
2014-05-07 12:58
176 查看
我们有时候我动态创建一个按钮,同时要加上响应函数。主要是由几个步骤完成的。
1.在类中创建一个按钮成员。CButtion m_btn;
2.在适当的位置(你自己安排)创建这个控件
m_btn.Create("new",/////按钮上显示的文本
BS_DEFPUSHBUTTON|WS_VISIBLE|WS_CHILD,///如果没有制定WS_VISIBLE还要调用ShowWindow将其显示出来
CRect(0,0,100,100),/////左上角的坐标(0,0),长度为100,100
this,//父窗口
123);
3.在MESSAGEMAP中加入响应的响应函数,ON_BTN_CLIKED(ID,pfun) ID为123,我们创建的时候定义的ID号为准。
4.在头文件中来写消息响应函数的声明,afx_msg viod pfun();
5.在cpp文件中实现void pfun()
通过以上几个步骤我们就能完成一个动态按钮的创建和添加他的消息响应函数。其实和我们静态的拖控件的方法一样。另外可以参看以下链接
http://blog.163.com/up_tlx/blog/static/206022202201241992431218/
注意事项:ID不要和别的资源ID 重了。第二要写对按钮创建的属性。写明父窗口是什么 ,通常是this。
以下是别人写的
第一步:
在Resource.h中,添加按钮ID:ID_BTN_TEMP = 1001
第二步:
在View类【CView的子类】中添加一个变量,判断按钮是否已经创建:
bool m_bIsCreatButton;
第三步:
创建一个按钮数组:
CBitmapButton *m_bitList[11]
第四步:
在View类【CView的子类】的构造函数中,初始化bIsCreatButton:
m_bIsCreatButton = false;
第五步:
在View类【CView的子类】中添加函数创建按钮:
CBitmapButton* CHisNavView::CreateButton(int nID, char* text,int left, int top, int right, int bottom)
{
CRect rect;
GetClientRect(rect);
CBitmapButton *pButton = new CBitmapButton();
ASSERT_VALID(pButton); pButton->Create(TEXT(text),
WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
CRect(left, top, right, bottom),
this, nID);
return pButton;
}
其中,nID为按钮ID,text为按钮文本。 其他为按钮显示范围。
第六步:
在View类【CView的子类】的OnDraw方法中创建按钮:
m_bitList[0] = CreateButton(ID_BTN_TEMP, "天志的按钮", 50, 50, 150, 80);
第六步:
在View类【CView的子类】中声明函数:
afx_msg void OnTest()
第七步:
在View类【CView的子类】的BEGIN_MESSAGE_MAP(CHisNavView, CView)添加:
ON_BN_CLICKED(ID_BTN_TEMP, CHisNavView::OnTest)
第八步:实现OnTest()函数
void CHisNavView::OnTest()
{
MessageBox(TEXT("天志自己写着玩!"), NULL, MB_OK);
}
1.在类中创建一个按钮成员。CButtion m_btn;
2.在适当的位置(你自己安排)创建这个控件
m_btn.Create("new",/////按钮上显示的文本
BS_DEFPUSHBUTTON|WS_VISIBLE|WS_CHILD,///如果没有制定WS_VISIBLE还要调用ShowWindow将其显示出来
CRect(0,0,100,100),/////左上角的坐标(0,0),长度为100,100
this,//父窗口
123);
3.在MESSAGEMAP中加入响应的响应函数,ON_BTN_CLIKED(ID,pfun) ID为123,我们创建的时候定义的ID号为准。
4.在头文件中来写消息响应函数的声明,afx_msg viod pfun();
5.在cpp文件中实现void pfun()
通过以上几个步骤我们就能完成一个动态按钮的创建和添加他的消息响应函数。其实和我们静态的拖控件的方法一样。另外可以参看以下链接
http://blog.163.com/up_tlx/blog/static/206022202201241992431218/
注意事项:ID不要和别的资源ID 重了。第二要写对按钮创建的属性。写明父窗口是什么 ,通常是this。
以下是别人写的
在mfc中动态创建按钮
第一步:在Resource.h中,添加按钮ID:ID_BTN_TEMP = 1001
第二步:
在View类【CView的子类】中添加一个变量,判断按钮是否已经创建:
bool m_bIsCreatButton;
第三步:
创建一个按钮数组:
CBitmapButton *m_bitList[11]
第四步:
在View类【CView的子类】的构造函数中,初始化bIsCreatButton:
m_bIsCreatButton = false;
第五步:
在View类【CView的子类】中添加函数创建按钮:
CBitmapButton* CHisNavView::CreateButton(int nID, char* text,int left, int top, int right, int bottom)
{
CRect rect;
GetClientRect(rect);
CBitmapButton *pButton = new CBitmapButton();
ASSERT_VALID(pButton); pButton->Create(TEXT(text),
WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
CRect(left, top, right, bottom),
this, nID);
return pButton;
}
其中,nID为按钮ID,text为按钮文本。 其他为按钮显示范围。
第六步:
在View类【CView的子类】的OnDraw方法中创建按钮:
m_bitList[0] = CreateButton(ID_BTN_TEMP, "天志的按钮", 50, 50, 150, 80);
第六步:
在View类【CView的子类】中声明函数:
afx_msg void OnTest()
第七步:
在View类【CView的子类】的BEGIN_MESSAGE_MAP(CHisNavView, CView)添加:
ON_BN_CLICKED(ID_BTN_TEMP, CHisNavView::OnTest)
第八步:实现OnTest()函数
void CHisNavView::OnTest()
{
MessageBox(TEXT("天志自己写着玩!"), NULL, MB_OK);
}
相关文章推荐
- .Net 调用SAP RFC接口来读取数据实战纪实
- unity3d读取csv文件
- ENDNOTE 使用中总是出现this library appears to be damaged。。
- jQuery实现DIV拖动
- 第九周作业
- mysql 变量名称的使用不当的一个错误
- 和机器学习和计算机视觉相关的数学
- 每天进步一点点_抽奖程序
- hdu 2892 多边形与园面积相交
- 夫妻经典小笑话····
- DatePicker功能及示例
- NDK 与 JNI 的关系
- android开发学习路线(转自Mars微博)
- java 判断是否是奇数问题
- 学渣们都在启动逗B模式
- 关于C#中的API的定义
- 第七周作业
- 图
- 小朋友排队
- SVN :This XML file does not appear to have any style information associated with it.