问题:假如一个对话框里有20多个编辑框,需要读取这些编辑框的数,如果每个编辑框都关联一个double类型的变量,用UpdateData()来获取读数,会很麻烦。
解决办法:
1. 建立第一个编辑框,之后按住Ctrl键用鼠标拖住编辑框,进行复制,这样可以保证编辑框的ID是按+1顺序。
是否是按+1顺序排列,需要在Resource.h里面确认一下,例如:
#define IDC_EDIT1 1001
#define IDC_EDIT2 1002
#define IDC_EDIT3 1003
#define IDC_EDIT4 1004
#define IDC_EDIT5 1005
2.读取数的代码如下:
VC2010测试代码下载:http://download.youkuaiyun.com/download/qq_27183003/9250537
void CTestDlgDlg::OnBnClickedButton1()
{
UINT ID=IDC_EDIT1;
double A[10],sum;
char buf[50];
int count=0;
sum=0;
for(int i=0; i<10; i++)
{
GetDlgItemText(ID+i,buf,49);
A[i]=atof(buf);
if(fabs(A[i])>0.0001)
{
count++;
sum+=A[i];
}
}
sprintf(buf,"%.2lf",sum);
SetDlgItemText(IDC_EDIT11,buf);
sprintf(buf,"%d",count);
SetDlgItemText(IDC_EDIT12,buf);
}
void CTestDlgDlg::OnBnClickedButton1()
{
UINT ID[5]={IDC_EDIT1,IDC_EDIT2,IDC_EDIT3,IDC_EDIT4,IDC_EDIT5};
double A[5],sum;
char buf[50];
UpdateData(true);
sum=0;
for(int i=0; i<5; i++)
{
GetDlgItemText(ID[i],buf,49);
A[i]=atof(buf);
sum+=A[i];
}
}
测试运行界面: