Win32控件使用——Edit控件

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 );

發佈了61 篇原創文章 · 獲贊 7 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章