MFC 对话框怎么才能动态创建按钮,求助!
方法二:用CButton类,创建对象,然后Create,然后Show就可以了
那又怎样为这个按钮添加相应函数呢?
先隐藏再显示的,和直接显示的一样。
后面通过代码添加的:
自己设计一个类,CMyButton: public CButton
可以继承CButton类的函数。
消息响应可以直接在
MESSAGE_MAP
里面直接添加
------------------------------------------------
方法三:
CRect rect;
RECT rtBtn;
GetClientRect(&rect);
rtBtn.left= rect.left + 10;
rtBtn.top= rect.top + 10;
rtBtn.right = rtBtn.left+50;
rtBtn.bottom = rtBtn.top+30;
m_bt1.Create("按钮1",WS_VISIBLE,rtBtn,this,IDC_MY_BUTTON_START);
rtBtn.left+=60;
rtBtn.right = rtBtn.left+50;
rtBtn.bottom = rtBtn.top+30;
m_bt2.Create("按钮2",WS_VISIBLE,rtBtn,this,IDC_MY_BUTTON_START+1);
这是创建代码,在resource.h中添加两个变量:
#define IDC_MY_BUTTON_START 10000
#define IDC_MY_BUTTON_END 20000
这样你就可以创建10000个按钮了
可以为新增的类CMyButton的所有对象都设置同一个消息响应函数:
在CMyButton类(类选项卡)中右击,选择“Add Windows Message Handler”,选择“=BN_CLICK”,这样就为按钮按下事件定义了一个统一的函数(OnClick,可以改,随便)。
然后在OnClick函数中加入以下语句:
int id = GetDlgCtrlID();
((CTryAddBtnDlg*)GetParent())->OnAddedButton(id);
这样Dialog(就是Parent类,创建Button对象的类)对象就能知道具体是哪一个按钮被按下;
在dialog类的OnAddedButton函数中:
void CTryAddBtnDlg::OnAddedButton(int id)
{
switch(id)
{
case IDC_MY_BUTTON_START:
MessageBox("按钮1 Click!");
break;
...
}}
这样就可以了。
这样可以Create任意个按钮,而且每个按钮可以执行不同的操作。
我已经试验过了。
有什么不明白的可以继续追问。
你可以留下邮箱,我把我的示例程序发给你。
---------------------------------------------
够尽职尽责吧?包你会,要加分哦。