1.2學習MFC之控制元件資料交換UpdateData
阿新 • • 發佈:2019-02-17
在編寫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);
}