C++ 关于控件数组

来源:百度知道 编辑:UC知道 时间:2024/09/19 19:38:32
用过VB的人都能够体会到控件数组的方便,可以在控件的相应事件里加上判断Index就可以避免许多重复的代码。

1、C++如何实现创建控件数组,例如一组CButton控件
2、创建控件数组之后他们的相应的事件能不能合并,假如能,用什么来判断哪个控件发生的事件?

谢谢解答
------------------------------------------------
1楼的高手,这样创建出来的控件好像并不可见啊……
我把你这段代码中的的创建的那块写在了OnInitDialog中了,不知道对不对。。

不能用建立类向导的方式来达到这个目的.

只能使用变通的方法 手动改代码.

先需要在类中定义一个数组
CString control[10];

在消息映射中
void CTestDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);

DDX_Control(pDX, IDC_C0, control[0]);
DDX_Control(pDX, IDC_C1, control[1]);
DDX_Control(pDX, IDC_C2, control[2]);
DDX_Control(pDX, IDC_C3, control[3]);
.......
}

将原来的控件消息更改为控件形式.

但有一点 不能再调用ClassWinzard就是类向导 否则将还原.

还有一种就是动态生成控件~

好像不能吧...
VC++其实很多都要自己写的...

VC++每个控件都有一个自己的ID
这个可以在Resource.h中看到.
只需要在创建数组时使用连续的ID
然后写消息响应时使用ON_COMMAND_RANGE(xxx,yyy,Fuc)即可

例子~刚做了这个程序
for(int i=0;i<5;i++)
{
CButton *save = new CButton();
save->Create("Save As",WS_CHILD|BS_PUSHBUTTON,(1,2,3,4),this,2500+i);
}
//创建好5个按钮
ON_COMMAND_RANGE(2500,2504,OnSaveAs)
//定义响应
afx_msg void OnSaveAs(UINT nID);
//定义响应函数
void