MFC對話框控件訪問的七種方式
阿新 • • 發佈:2018-07-21
class 編輯 等價 ble cpp push 通過 == cte
void CTestDlg::OnButtonAdd() { // TODO: Add your control notification handler code here //動態創建按鈕 /* if ( FALSE == m_bIsCreate ) // 亦可以通過靜態變量 static BOOL bIsCreate = FALSE; { m_btn.Create("Lee", BS_DEFPUSHBUTTON | WS_VISIBLE | WS_CHILD, CRect(0,0,100,65), this, 111); // m_btn.ShowWindow(SW_NORMAL);//若上句沒有WS_VISIBLE,就加上showWindow m_bIsCreate = TRUE; } else { m_btn.DestroyWindow(); m_bIsCreate = FALSE; } */ /* //最簡單的動態創建按鈕 if (!m_btn.m_hWnd) //窗口句柄不為空 { m_btn.Create("Lee", BS_DEFPUSHBUTTON | WS_VISIBLE | WS_CHILD, CRect(0,0,100,65), this, 111); } else { m_btn.DestroyWindow(); // 會自動將 m_hWnd = NULL } */ //實現 點擊Add按鈕,將 編輯框1的數 + 編輯框2 的數 放到編輯框3中 /* int num1, num2, num3; char ch1[10], ch2[10], ch3[10]; GetDlgItem(IDC_EDIT1)->GetWindowText(ch1,10); //將編輯框的文本存到ch1中,最大10個字符 GetDlgItem(IDC_EDIT2)->GetWindowText(ch2,10); num1 = atoi(ch1); // 將字符串轉換為整型 num2 = atoi(ch2); num3 = num1 + num2; itoa(num3, ch3, 10); // 將整數num3 轉換到ch3中,以十進制的方式 GetDlgItem(IDC_EDIT3)->SetWindowText(ch3); // 將ch3字符數值,存到編輯框3中 */ /* //也可以 int num1, num2, num3; char ch1[10], ch2[10], ch3[10]; GetDlgItemText(IDC_EDIT1, ch1, 10); GetDlgItemText(IDC_EDIT2, ch2, 10); num1 = atoi(ch1); // 將字符串轉換為整型 num2 = atoi(ch2); num3 = num1 + num2; itoa(num3, ch3, 10); SetDlgItemText(IDC_EDIT3, ch3); */ /* //還可以 int num1, num2, num3; num1 = GetDlgItemInt(IDC_EDIT1); // 直接獲得編輯框中的數值 num2 = GetDlgItemInt(IDC_EDIT2); num3 = num1 + num2; SetDlgItemInt(IDC_EDIT3, num3); */ /* //最簡單的一種,用classwizard 關聯 控件與成員變量(以值) UpdateData(); m_num3 = m_num2 + m_num1; UpdateData(FALSE); */ /* //第五種方式 用classwizard 關聯 控件與成員變量(以控件)。與第一種相似 int num1, num2, num3; char ch1[10], ch2[10], ch3[10]; m_edit1.GetWindowText(ch1, 10); m_edit2.GetWindowText(ch2, 10); num1 = atoi(ch1); // 將字符串轉換為整型 num2 = atoi(ch2); num3 = num1 + num2; itoa(num3, ch3, 10); m_edit3.SetWindowText(ch3); */ /* //第六種方式,發送消息 int num1, num2, num3; char ch1[10], ch2[10], ch3[10]; //::SendMessage(GetDlgItem(IDC_EDIT1)->m_hWnd, WM_GETTEXT, 10, (LPARAM)ch1); //::SendMessage(m_edit1.m_hWnd, WM_GETTEXT, 10, (LPARAM)ch1); //GetDlgItem(IDC_EDIT1)->SendMessage(WM_GETTEXT, 10, (LPARAM)ch1); m_edit1.SendMessage(WM_GETTEXT, 10, (LPARAM)ch1); //以上四句等價 m_edit2.SendMessage(WM_GETTEXT, 10, (LPARAM)ch2); num1 = atoi(ch1); // 將字符串轉換為整型 num2 = atoi(ch2); num3 = num1 + num2; itoa(num3, ch3, 10); m_edit3.SendMessage(WM_SETTEXT, 10, (LPARAM)ch3); */ //第七種方式 int num1, num2, num3; char ch1[10], ch2[10], ch3[10]; SendDlgItemMessage(IDC_EDIT1, WM_GETTEXT, 10, (LPARAM)ch1);//直接給子控件發消息 SendDlgItemMessage(IDC_EDIT2, WM_GETTEXT, 10, (LPARAM)ch2); num1 = atoi(ch1); // 將字符串轉換為整型 num2 = atoi(ch2); num3 = num1 + num2; itoa(num3, ch3, 10); SendDlgItemMessage(IDC_EDIT3, WM_SETTEXT, 10, (LPARAM)ch3); SendDlgItemMessage(IDC_EDIT3, EM_SETSEL, 0, -1); //復選所有的文本 //GetDlgItem(IDC_EDIT3)->SetFocus(); //將焦點聚到edit3. 或者 m_edit3.SetFocus(); }
MFC對話框控件訪問的七種方式