MFC訪問對話框控件的7種方法
方法一:
讀編輯框數據:GetDlgItem(IDC_EDIT)->GetWindowText(string ,length);
寫編輯框數據:GetDlgItem(IDC_EDIT)->SetWindowText(string);
[
](javascript:void(0)😉
1 void CMFCApplication2Dlg::OnBnClickedButton1()
2 {
3 int n1, n2, n3;
4 _TCHAR str1[10], str2[10], str3[10];
5 GetDlgItem(IDC_EDIT1)->GetWindowText(str1,10);
6 GetDlgItem(IDC_EDIT2)->GetWindowText(str2, 10);
7 n1 = _ttoi(str1);
8 n2 = _ttoi(str2);
9 n3 = n1 + n2;
10 _itot_s(n3, str3, 10);
11 GetDlgItem(IDC_EDIT3)->SetWindowText(str3);
12
13
14 }
[
](javascript:void(0)😉
GetWindowText();
可以獲取指定窗口的標題文本或者從窗口類派生的控件的文本(如Combox)
函數功能
該函數將指定窗口的標題條文本(如果存在)拷貝到一個緩存區內。如果指定的窗口是一個控件,則拷貝控件的文本。但是,GetWindowText不能接收在其他應用程序中的控件的文本。
函數原型:Int GetWindowText(HWND hWnd,LPTSTR lpString,Int nMaxCount);
參數
hWnd:帶文本的窗口或控件的句柄。
IpString:指向接收文本的緩沖區的指針。
nMaxCount:指定要保存在緩沖區內的字符的最大個數,其中包含NULL字符。如果文本超過界限,它就被截斷。
返回值
如果函數成功,返回值是拷貝的字符串的字符個數,不包括中斷的空字符;如果窗口無標題欄或文本,或標題欄為空,或窗口或控制的句柄無效,則返回值為零。若想獲得更多錯誤信息,請調用GetLastError函數。
函數不能返回在其他應用程序中的編輯控件的文本。
備注
如果目標窗口屬於當前進程,GetWindowText函數給指定的窗口或控件發送WM_GETTEXT消息。如果目標窗口屬於其他進程,並且有一個窗口標題,則GetWindowTeXt返回窗口的標題文本,如果窗口無標題,則函數返回空字符串。
SetWindowText();
函數功能:該函數改變指定窗口的標題欄的文本內容(如果窗口有標題欄)。如果指定窗口是一個控件,則改變控件的文本內容。然而,SetWindowText函數不改變其他應用程序中的控件的文本內容。 函數原型:BOOL SetWindowText(HWND hwnd,LPCTSTR lpString); 參數: hWnd:要改變文本內容的窗口或控件的句柄。 lpString:指向一個空結束的字符串的指針,該字符串將作為窗口或控件的新文本。 返回值:如果函數成功,返回值為非零;如果函數失敗,返回值為零。若想獲得更多錯誤信息,請調用GetLastError函數。 備注:如果目標窗口屬於當前進程,SetWindowText函數會使WM_SETTEXT消息發送給指定的窗口或控件。然而,如果控件是以WS_CAPTION風格創建的列表框控件,SetWindowText函數將為控件設置文本,而不是為列表項設置文本。 SetWindowText函數不擴展tab字符(ASCII代碼0×09),Tab字符以字符‘}’來顯示。
方法二:
讀編輯框數據:GetDlgItemText(IDC_EDIT,string,length);
寫編輯框數據:SetDlgItemText(IDC_EDIT,string);

方法三:
讀編輯框數據:value=GetDlgItemInt(IDC_EDIT);
寫編輯框數據:SetDlgItemInt(IDC_EDIT,value);

方法四與方法五常用到的四個函數:
DoDataExchange();
DDC_xxxx();//關聯變量
DDV_xxxx();//驗證變量
UpdateData();//UpdateData(TRUE)為從編輯框獲取數據,UpdateData(FALSE)為更新數據到編輯框

方法四:
把控件和整型變量相關聯:如為控件添加整型成員變量m_num
對整型成員變量直接進行操作

方法五:
把控件和控件變量相關聯:如為控件添加控件成員變量m_edit
對控件類進行操作:
讀編輯框數據:m_edit.GetWindowText(ch,length);
寫編輯框數據:m_edit.SetWindowText(ch);

方法六:
發送消息函數:SendMessage();
讀編輯框數據: ::SendMessage(GetDlgItem(IDC_EDIT)->m_hWnd,WM_GETTEXT,length,(LPARAM)ch);
寫編輯框數據: ::SendMessage(GetDlgItem(IDC_EDIT)->m_hWnd,WM_SETTEXT,0,(LPARAM)ch);
其中GetDlgItem(IDC_EDIT)->m_hWnd)為編輯框窗口句柄;

方法七:
發送消息函數:SendDlgItemMessage();
SendDlgItemMessage()相當於是將SendMessage()和GetDlgItem(IDC_EDIT)->m_hWnd合並而來的;
讀編輯框數據:SendDlgItemMessage(IDC_EDIT,WM_GETTEXT,12,(LPARAM)ch);
寫編輯框數據:SendDlgItemMessage(IDC_EDIT,WM_SETTEXT,0,(LPARAM)ch);

————————————————
原文鏈接:https://blog.csdn.net/pengz0807/article/details/47685583
