1. 程式人生 > >VC獲取控制元件文字的幾種方法

VC獲取控制元件文字的幾種方法

一:GetDlgItem()->GetWindowText();
二:GetDlgItemText();
三:GetDlgItemInt();這個函式取到控制元件文字並將之轉換成int返回給呼叫者.這對如使用EDIT控制元件獲取整數非常方便,並且它可以有效處理有符號數.這個函式的呼叫稍有複雜,查閱MSDN!
四:\r\n將控制元件與成員變數相關聯,比如要從EDIT控制元件獲取整數,可以直接將EDIT控制元件與int型別的變數相關聯,它會直接獲取整數,並自動做相關的輸入資料的\r\n型別檢測,當然也可以關聯CEdit型變數,再間接獲取資料,用這種方法時要注意UpdateData()函式的適時呼叫!如果是CEdit控制元件,可以用\r\nCEdit中的GetWindowText()函式獲取其內容!
五:通過傳送WM_GETTEXT或者WM_SETTEXT訊息的方式獲取:
分為三種情況:
(1)使用合全域性的::SendMessage(),如下:
::SendMessage(GetDlgItem(IDC_EDIT1)->m_hWnd,WM_GETTEXT,10,(LPARAM)ch1);//ch1是一個字元陣列
或者是:
::SendMessage(m_edit1.m_hWnd,WM_GETTEXT,10,(LPARAM)ch1);   //這是已關聯控制元件變數的情況下
(2)使用CWnd的SendMessage(),如下:
GetDlgItem(IDC_EDIT1)->SendMessage(WM_GETTEXT,10,(LPARAM)ch1);
或者是:
m_edit1.SendMessage(WM_GETTEXT,10,(LPARAM)ch1);
(3):使用CWnd::SendDlgItemMessage()函式,它實際上相當於先用GetDlgItem()得到控制元件控制代碼,再SendMessage(),是一種組合的方便方式!如:
SendDlgItemMessage(IDC_EDIT1,WM_GETTEXT,10,(LPARAM)ch1);
在講這個的時候,還講到了可以獲得一個控制元件中選中的內容的訊息-EM_GETSEL以及可以設定哪些內容被選中的EM_SETSEL訊息.使用方法見MSDN.如:
SendDlgItemMessage(IDC_EDIT1,EM_SETSEL,1,3);
m_edit1.SetFocus();//這句的意義是因為如果該控制元件不是當前的FOCUS所在,那麼即使顯示了選中也會不可見.