用过VB的知道,VB中控件数组的概念的确极大方便了编程。其实在VC中同样可以使用控件数组,但是是以起别名的方式来实现的。
最近做了一个对话框程序,由于静态文本(STATIC)比较多,所以考虑使用控件数组。控件数组在VC中的使用显然比在VB中麻烦些。现在以使用STATIC数组为例简单说一下。
在程序中使用11个STATIC,如果要做成数组,必须首先声明一个字符串数组:
CString str[11];
然后在DoDataExchange()函数中加入以下代码(BTW:此函数用于数据交换,一看名字就知道了):
DDX_Text(pDX, IDC_T1, str[0]);
DDX_Text(pDX, IDC_T2, str[1]);
DDX_Text(pDX, IDC_T3, str[2]);
DDX_Text(pDX, IDC_T4, str[3]);
DDX_Text(pDX, IDC_T5, str[4]);
DDX_Text(pDX, IDC_T6, str[5]);
DDX_Text(pDX, IDC_T7, str[6]);
DDX_Text(pDX, IDC_T8, str[7]);
DDX_Text(pDX, IDC_T9, str[8]);
DDX_Text(pDX, IDC_T10, str[9]);
DDX_Text(pDX, IDC_T11, str[10]);
where,IDC_TX是文本ID。
当然这里有常见错误。
1、出现parsing error错误。检查此函数内的数据交换定义,看看是否破坏函数结构。
2、出现程序的非法操作(afx.inl错误)。检查控件ID名是否重复,定义是否重复,反正是一切重复都要避免。
另外本人有一个疑问,就是STATIC静态文本只能用DDX_Text进行定义,而不能使用DDX_Control,没有想清楚为什么。也请有经验人给予解答,谢谢!
用户136423 2011-9-23 00:08