問題:假如一個對話框裏有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.csdn.net/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];
}
}
測試運行界面: