EDIT消息

業精於勤而荒於嬉,行成於思而毀於隨。

編輯框(Edit)控件實際上是一個簡易的文本編輯器,用戶可以在編輯框中輸入可添加或插入文本。還有複製、粘貼、剪切、刪除等編輯功能。
  應用程序用CreateWindowEx創建編輯框控件時,可根據控件的用途在下表中選擇部份常數來設定其風格屬性(style)。 常數說明
ES_MULTILINE 多行文本,指定編輯控件可以多行文本編輯,用戶每按一次Enter,在當前光標次輸入一個回車換行符(0Dh,0Ah),文本增加一行。
ES_LEFT 文本顯示居左。
ES_CENTER 文本顯示居中。
ES_RIGHT 文本顯示居右。
ES_LOWERCASE 把用戶輸入的字母統統轉換成小寫字母。
ES_UPPERCASE 把用戶輸入的字母統統轉換成大寫字母。
ES_OEMCONVERT 使編輯框中的正文可以在ANSI字符集和OEM字符集之間相互轉換。這在編輯框中包含文件名時是很有用的。
ES_AUTOHSCROLL 當用戶在行尾鍵入一個字符時,正文將自動向右滾動10個字符,當用戶按回車鍵時,正文總是滾向左邊。
ES_AUTOVSCROLL 當用戶在最後一個可見行按回車鍵時,正文向上滾動一頁。
ES_NUMBER 只接收數碼輸入,其它字符輸入一律無效。
ES_NOHIDESEL 當編輯框失去輸入焦點,正文中的選擇保持不變,缺省時正文中的選擇將失效。
ES_READONLY 將編輯框設置成只讀的。
ES_PASSWORD 使所有鍵入的字符都用“*”來顯示。
ES_WANTRETURN 使多行編輯器接收回車鍵輸入並換行。如果不指定該風格,按回車鍵會選擇缺省的命令按鈕,這往往會導致對話框的關閉。

  當用戶在編輯控件上進行各種操作時,其父窗口將收到WM_COMMAND通知消息,同時wParam的低16位帶控件的ID。lParam帶控件句柄(hWnd),wParam的高16位帶有如下表的消息代碼。消息代碼 用戶操作
EN_CHANGE 編輯框的內容被用戶改變了。與EN_UPDATE不同,該消息是在編輯框顯示的正文被刷新後才發出的。
EN_ERRSPACE 編輯框控件無法申請足夠的動態內存來滿足需要。
EN_HSCROLL 用戶在水平滾動條上單擊鼠標。
EN_KILLFOCUS 編輯框失去輸入焦點。
EN_MAXTEXT 輸入的字符超過了規定的最大字符數。在沒有ES_AUTOHSCROLL或ES_AUTOVSCROLL的編輯框中,當正文超出了編輯框的邊框時也會發出該消息。
EN_SETFOCUS 編輯框獲得輸入焦點。
EN_UPDATE 在編輯框準備顯示改變了的正文時發送該消息。
EN_VSCROLL 用戶在垂直滾動條上單擊鼠標。

  應用程序可以通過調用SendMessage向控件發送如下消息來設定和查詢控件各種參數。 uMsg wParam lParam 說明
EM_UNDO 0 0 撤消前一次在控件的編輯操作,當重複發送本消息,控件將在撤消和恢復中來回切換。
EM_CANUNDO 0 0 檢測控件撤消緩衝區是否爲空,通常控件把最後一次在控件的編輯操作保存在一個撤消緩衝區,如果緩衝區非空則返回TRUE表示上次操作可以撤消,否則返回FALSE,應用程序可以利用該返回值來禁止或允許菜單或工具條的“撤消”項。
EM_EMPTYUNDOBUFFER 0 0 清除控件的撤消緩衝區,使其不能撤消前一次編輯操作。
EM_REPLACESEL TRUE或FALSE 替換文本指針用指定文本替換編輯控件中的當前選定內容,如果wParam爲TRUE,則本次操作允許撤消,FALSE禁止撤消。
EM_SETSEL 起點 終點設置編輯控件中文本選定內容範圍,該範圍被高亮度顯示,用於爲複製、替換、粘貼、剪切、刪除等編輯功能指定範圍。使用本功能,鍵盤光標將被移至指定的終點後面,通常使用指定相同起點和終點來移動鍵盤光標而不選定範圍。當指定的起點等於0和終點等於-1時,全文全部被選中,此法常用在清空編輯控件。當指定的起點等於-2和終點等於-1時,全文均不選,鍵盤光標移至文本未端,此法常用在文本未端追加內容。注意:當控件沒有輸入焦點時,本操作將會失敗,一般在執行本操作前都應調用SetFocus先取得輸入焦點。
EM_GETSEL 起點緩衝地址
或NULL 終點緩衝地址
或NULL 取得編輯控件中選定內容的範圍,返回值中低16位爲起點與高16位爲終點,如果wParam和lParam中指定了地址,則會在該地址填入相應值(dword)。本操作也常用來求取鍵盤光標位置。
EM_CHARFROMPOS 0 位置取得指定位置處的字符相對於文本頭部的偏移,使用本操作應先在lParam的高16位指定行號,低16位指定列號,行列是按編輯控件的客戶區左上角爲原點(0,0)計算的。如果指定的位置超出控件客戶區則返回-1
EM_FMTLINES TRUE或FALSE 0 決定是否在取回的文本宇串中包含軟回車字符
EM_GETFIRSTVISIBLELINE 0 0 取得編輯控件中顯示的第一行
EM_GETHANDLE 0 0 取得編輯控件文本緩衝區。
EM_GETLIMITTEXT 0 0 獲取一個編輯控件中文本的最大長度
EM_GETLINE 行號 緩衝地址 從編輯控件取回一行的內容,緩衝區第一個字(word)必須先填寫緩衝區的長度,
EM_GETLINECOUNT 0 0 取得一個編輯控件的總行數
EM_GETMARGINS 0 0 獲取編輯控件的左、右邊距,返回值低16位爲左邊距,高16位爲右邊距
EM_GETMODIFY 0 0 取編輯控件的修改標誌,返回 TRUE則控件文本已被修改,返回FALSE則未變。此值可以來決定是否提示用戶存盤。
EM_GETPASSWORDCHAR 0 0 取得編輯控件用來顯示密碼的字符,返回NULL表示沒有字符。
EM_GETRECT 0 RECT結構地址 獲取一個編輯控件的格式化矩形
EM_GETTHUMB 0 0 取得多行文本編輯控件的滾動框的當前位置。
EM_GETWORDBREAKPROC 0 0 取得整字換行回調函數EditWordBreakProc指針。
EM_LIMITTEXT 最大值 0 限制編輯中文本的最大長度
EM_LINEFROMCHAR 字符偏移 0 取得指定的字符偏移處的行號。
EM_LINEINDEX 行號 0 取得指定行第一個字符偏移
EM_LINELENGTH 字符偏移 0 取得指定字符偏移處對應的一行長度字符數。
EM_LINESCROLL 列字符 行數 滾動編輯控件
EM_POSFROMCHAR POINT結構地址 字符偏移取得指定字符偏移的顯示位置行列號,行列是按編輯控件的客戶區左上角爲原點(0,0)計算的。字符偏移是相對於文本頭部的偏移。
EM_SCROLL SB_LINEDOWN
SB_LINEUP
SB_PAGEDOWN
SB_PAGEUP 0 編輯框顯示文本垂直滾動。滾動方向:SB_LINEDOWN向下滾動一行,SB_LINEUP向上滾動一行,SB_PAGEDOWN向下滾動一頁,SB_PAGEUP向上滾動一頁。
EM_SCROLLCARET 0 0 把鍵盤光標移至可見範圍。
EM_SETHANDLE 緩衝區指針 0 爲編輯控件指定新的文本緩衝區。此操作僅適用對話框創建帶DS_LOCALEDIT風格的控件。
EM_SETLIMITTEXT 長度(字節) 0 限制編輯控件中的文本緩衝區最大長度。
EM_SETMARGINS EC_LEFTMARGIN
EC_RIGHTMARGIN
EC_USEFONTINFO 邊距設置編輯控件的左、右邊距,當wParam含EC_LEFTMARGIN時在lParam的低16位指定左邊距點數,當wParam含EC_RIGHTMARGIN時在lParam的高16位指定右邊距點數。當指定wParam爲EC_USEFONTINFO時,則用當前字體的字符"A"的寬度指定右邊距和字符"C"的寬度指定左邊距lParam被忽略。
EM_SETMODIFY TRUE或FALSE 0 用於設置或清除一個編輯控件的修改標誌
EM_SETPASSWORDCHAR 字符 0 指定控件用來顯示密碼字符,缺省爲“*”。當wParam爲0時,本操作將清除控件的ES_PASSWORD風格,並按實際字符顯示。
EM_SETREADONLY TRUE或FALSE 0 決定是否將編輯控件設爲只讀,同時決定控件的ES_READONLY風格
EM_SETRECT 0 RECT結構地址 爲一個編輯控件設置格式化矩形
EM_SETRECTNP 0 RECT結構地址 與EM_SETRECT類似,只是控件此時不會重畫
EM_SETTABSTOPS 製表站數 站距表地址設置編輯控件中的製表站間距,當製表站數爲0時lParam被忽略,所有制表站距均爲32個對話框單位,當製表站數不爲0時lParam指向一個由32位(dword)組成的站距表,以對話框單位爲寬度計算單位。
EM_SETWORDBREAK 0 0 本操作現已不支持,請使用EM_SETWORDBREAKPROC。
EM_SETWORDBREAKPROC 0 函數入口地址 設置整字換行回調函數EditWordBreakProc指針

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