Drecik學習經驗分享
轉載請註明出處:http://blog.csdn.net/drecik__/article/details/8112844
Edit控件是一個很強大的輸入控件,可以處理很多樣式,通過VS的控件屬性來設置,有單行,多行,密碼框,滾動條等。
和Button控件一樣,編輯框想父窗口發送WM_COMMAND消息,各個參數的意義也和Button控件的一樣:
- LOWORD(wParam) 子窗口ID
- HIWORD(wParam) 通知碼
- lParam 子窗口句柄
其中通知碼可以如下所示:
- EN_SETFOCUS 編輯控件獲得輸入焦點
- EN_KILLFOCUS 編輯控件失去輸入焦點
- EN_CHANGE 編輯控件的內容將改變
- EN_UPDATE 編輯控件的內容已變化
- EN_ERRSPACE 編輯控件沒有空間了
- EN_MAXTEXT 編輯控件沒有控件完成插入了
- EN_HSCROLL 編輯控件水平滾動條被單擊了
- EN_VSCROLL 編輯控件垂直滾動條被單擊了
獲得Edit控件輸入的內容可以通過之前討論過的通用函數(參考前面的博文),GetWindowText等。
下面列舉下常用的使用SendMessage發送給編輯控件的消息:
// 剪切,複製,刪除當前選擇內容;
SendMessage( hWndEdit, WM_CUT, 0, 0 );
SendMessage( hWndEdit, WM_COPY, 0, 0 );
SendMessage( hWndEdit, WM_CLEAR, 0, 0 );
// 將剪貼板上的文本插入到編輯控件的當前位置;
SendMessage( hWndEdit, WM_PASTE, 0, 0 );
// 獲得當前選擇文本的初始位置和終止位置,終止位置時最後一個字符+1;
SendMessage( hWndEdit, EM_GETSEL, &iStart, &iEnd );
// 選擇文本;
SendMessage( hWndEdit, EM_SETSEL, iStart, iEnd );
// 使用其他文本取代當前選擇的文本;
SendMessage( hWndEdit, EM_REPLACESEL, 0, (LPARAM)szString );
// 獲得編輯器的行數;
iCount = SendMessage( hWndEdit, EM_GETLINECOUNT, 0, 0 );
// 獲得從編輯緩衝區起點到這行的位移量,如果iLine爲-1則默認爲插入符號所在行;
iOffset = SendMessage( hWndEdit, EM_LINEINDEX, iLine, 0 );
// 得到所在行的的長度;
iLength = SendMessage( hWndEdit, EM_LINELENGTH, iLine, 0 );
// 複製某一行到緩衝區;
iLength = SendMessage( hWndEdit, EM_GETLINE, iLine, (LPARAM)szBuffer );