您的位置:首页 > 其它

对话框程序动态生成按钮数组并响应点击消息

2010-12-11 15:11 513 查看
首先建立个基于对话框的MFC应用程序工程TestDlg,接下来

一、动态创建按钮

此段代码可放在对话框的OnInitDialog()里,也可放在其他地方

int cntButton = 5;
CButton *pButton = new CButton[cntButton];
for(int i = 0; i < cntButton; i++)
{
// 按钮位置
CRect rect;
rect.top = 0;
rect.bottom = 30;
rect.left = i * 100 + 5;
rect.right =i*100 + 100;
// 按钮标题
CString strCaption;
strCaption.Format("按钮%d", i);
// 生成按钮
pButton[i].Create(strCaption,
WS_VISIBLE|WS_CHILD|BS_PUSHBUTTON,
rect,
this,
3000 + i);                //资源ID 可以"#define ID_BTN 3000" 此处就是"ID_BTN + i"
}
二、添加对话框类CtestDlgDlg的成员函数OnBnClickedButtonTest,作为点击按钮时的响应函数!

// 声明
afx_msg void OnBnClickedButtonTest(UINT uID);
// 定义
void CtestDlgDlg::OnBnClickedButtonTest(UINT uID)
{
CString strIndex;
strIndex.Format("%d", uID);
AfxMessageBox(strIndex);
}


三、添加映射ON_CONTROL_RANGE

// 加在在BEGIN_MESSAGE_MAP与END_MESSAGE_MAP之间
ON_CONTROL_RANGE(BN_CLICKED,  // 点击消息
3000,                       // 按钮控件数组第一个ID
3004,                       // 按钮控件数组最后一个ID(例子中是5个,3000~3004)
&CtestDlgDlg::OnBnClickedButtonTest)  // 响应函数


以上代码均用VS2008测试过...
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐