從編輯框讀數的技巧

問題:假如一個對話框裏有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);
}



如果編輯框的ID不是順序排列的。

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];
	}
}

測試運行界面:


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章