就是這樣一個簡單的界面,窗口上重繪的對話框(這種寫法參考我之前博文):

需要做到的就是點擊確定,獲取文本框中內容。
// 處理對話框消息 INT_PTR CALLBACK NewDlgProc(HWND hdlg, UINT msg, WPARAM wParam, LPARAM lParam) { int ret_num; HWND hwnd; WCHAR buff[32]; switch (msg) { case WM_COMMAND: { switch(LOWORD(wParam)) { case IDC_BUTTON3: ret_num = GetDlgItemText(hdlg,IDC_EDIT1,buff,32); //注釋部分是另一種獲取文本框文本的寫法 hwnd = GetDlgItem(hdlg,IDC_EDIT1); ret_num = GetWindowText(hwnd, buff, 32 ); MessageBox(hdlg, buff, L"提示", MB_OK | MB_ICONINFORMATION); break; default: break; } } return 0; } return (INT_PTR)FALSE; }
在對話框消息的處理函數中的按鈕響應事件里加入代碼。
兩種寫法,一種是GetDlgItemText
一種是GetWindowText
GetDlgItemText需要參數對話框句柄,文本框id,字符存儲buffer,長度。
需要注意的是,字符存儲buffer這個參數,在函數聲明里是要求LPWSTR這個類型。一開始我就聲明了一個LPWSTR str這樣的變量傳進去,結果獲取不到。
后來我發現這實際是指WCHAR這個類型。聲明WCHAR buff[32]就可以了。
GetWindowText要獲取輸入框文本的話,需要將輸入框的句柄(控件)作為參數。
獲取控件的句柄需要這樣寫法,hwnd = GetDlgItem(hdlg,IDC_EDIT1); hdlg是窗口(對話框)句柄。
效果:

