首先建立个基于对话框的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"
- }
- // 声明
- 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) // 响应函数