1. 程式人生 > >1.2學習MFC之控制元件資料交換UpdateData

1.2學習MFC之控制元件資料交換UpdateData

在編寫MFC程式時,需要用到大量控制元件,用於資料的輸入輸出。這些控制元件中的變數與程式變數的傳遞,依靠的是UpdateData這一函式。

UpdateData()引數有兩個,預設為TRUE。

    UpdateData(TRUE),重新整理控制元件內的值到對應的變數。 即:控制元件的值-->變數。

    UpdateData(FALSE),拷貝變數的值到控制元件中顯示。即:變數-->控制元件內容。

一個簡單的例子:對話方塊中有三個編輯框:EDIT1,EDIT2,EDIT3;對應了三個整型變數m_num1, m_num2和m_sum。

點選按鈕之後,EDIT1,EDIT2中的數傳遞到變數m_num1和m_num2中,求和,顯示到m_sum中。

首先將相關控制元件放到對話方塊上,然後為編輯框新增成員變數。


然後給按鈕新增點選函式。

void CUpdateDataDlg::OnButton1() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);			// 控制元件中的值傳遞到變數中
	m_sum = m_num1 + m_num2;	// 完成相加
	UpdateData(FALSE);			// 變數中的值更新到控制元件中
}

執行效果如下圖所示。


UpdateData函式重新整理的是整個對話方塊中控制元件的資料。

也可以單獨設定或取得某些控制元件的資料。可以使用SetDlgItemText()和GetDlgItemText()這兩個函式(方案一);  或者SetWindowText()和GetWindowText()這兩個函式(方案二)。

給出方案一的實驗效果。


核心程式碼。

// 下面兩個函式用來演示SetDlgItemText()和GetDlgItemText()這兩個函式
void CUpdateDataDlg::OnButton3() 
{
	// SetDlgItemText,設定第4個編輯框中的內容
	SetDlgItemText(IDC_EDIT4, "set");
}

void CUpdateDataDlg::OnButton2() 
{
	// GetDlgItemText按鈕, 取得第4個編輯框中的內容,顯示到第5個編輯框中
	CString tmp;
	GetDlgItemText(IDC_EDIT4, tmp);
	SetDlgItemText(IDC_EDIT5, tmp);
}


下面給出方案二的效果和核心程式碼


// 下面兩個函式用來演示SetWindowText()和GetWindowText()這兩個函式
void CUpdateDataDlg::OnSetWindowText() 
{
	// TODO: Add your control notification handler code here
	m_edit6.SetWindowText("setWindowText");
}

void CUpdateDataDlg::OnGetWindowText() 
{
	// TODO: Add your control notification handler code here
	char tmp[1000];
	m_edit6.GetWindowText(tmp, 1000);
	m_edit7.SetWindowText(tmp);
}