編輯框(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_undo00
撤消前一次在控制項的編輯操作,當重**送本訊息,控制項將在撤消和恢復中來回切換。
em_canundo00
檢測控制項撤消緩衝區是否為空,通常控制項把最後一次在控制項的編輯操作儲存在乙個撤消緩衝區,如果緩衝區非空則返回true表示上次操作可以撤消,否則返回false,應用程式可以利用該返回值來禁止或允許選單或工具條的「撤消」項。
em_emptyundobuffer00
清除控制項的撤消緩衝區,使其不能撤消前一次編輯操作。
em_replacesel
true或false
替換文字指標
用指定文字替換編輯控制項中的當前選定內容,如果wparam為true,則本次操作允許撤消,false禁止撤消。
em_setsel
起點終點
設定編輯控制項中文字選定內容範圍,該範圍被高亮度顯示,用於為複製、替換、貼上、剪下、刪除等編輯功能指定範圍。使用本功能,鍵盤游標將被移至指定的終點後面,通常使用指定相同起點和終點來移動鍵盤游標而不選定範圍。當指定的起點等於0和終點等於-1時,全文全部被選中,此法常用在清空編輯控制項。當指定的起點等於-2和終點等於-1時,全文均不選,鍵盤游標移至文字未端,此法常用在文字未端追加內容。注意:當控制項沒有輸入焦點時,本操作將會失敗,一般在執行本操作前都應呼叫setfocus先取得輸入焦點。
em_getsel
起點緩衝位址
或null
終點緩衝位址
或null
取得編輯控制項中選定內容的範圍,返回值中低16位為起點與高16位為終點,如果wparam和lparam中指定了位址,則會在該位址填入相應值(dword)。本操作也常用來求取鍵盤游標位置。
em_charfrompos0位置
取得指定位置處的字元相對於文字頭部的偏移,使用本操作應先在lparam的高16位指定行號,低16位指定列號,行列是按編輯控制項的客戶區左上角為原點(0,0)計算的。如果指定的位置超出控制項客戶區則返回-1
em_fmtlines
true或false
0決定是否在取回的文字宇串中包含軟回車字元
em_getfirstvisibleline00
取得編輯控制項中顯示的第一行
em_gethandle00
取得編輯控制項文字緩衝區。
em_getlimittext00
獲取乙個編輯控制項中文字的最大長度
em_getline
行號緩衝位址
從編輯控制項取回一行的內容,緩衝區第乙個字(word)必須先填寫緩衝區的長度,
em_getlinecount00
取得乙個編輯控制項的總行數
em_getmargins00
獲取編輯控制項的左、右邊距,返回值低16位為左邊距,高16位為右邊距
em_getmodify00
取編輯控制項的修改標誌,返回 true則控制項文字已被修改,返回false則未變。此值可以來決定是否提示使用者存檔。
em_getpasswordchar00
取得編輯控制項用來顯示密碼的字元,返回null表示沒有字元。
em_getrect
0rect結構位址
獲取乙個編輯控制項的格式化矩形
em_getthumb00
取得多行文字編輯控制項的滾動框的當前位置。
em_getwordbreakproc00
取得整字換行**函式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_scrollcaret00
把鍵盤游標移至可見範圍。
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
0rect結構位址
為乙個編輯控制項設定格式化矩形
em_setrectnp
0rect結構位址
與em_setrect類似,只是控制項此時不會重畫
em_settabstops
製表站數
站距表位址
設定編輯控制項中的製表站間距,當製表站數為0時lparam被忽略,所有制表站距均為32個對話方塊單位,當製表站數不為0時lparam指向乙個由32位(dword)組成的站距表,以對話方塊單位為寬度計算單位。
em_setwordbreak00
本操作現已不支援,請使用em_setwordbreakproc。
em_setwordbreakproc
0函式入口位址
設定整字換行**函式editwordbreakproc指標。
MFC控制項關聯變數總結(EDIT編輯框)
1.不關聯控制項 使用getdlgitem idc edit1 getwindowtextw 變數名 來獲取控制項內容 使用getdlgitem idc edit1 setwindowtextw 變數名 來更新變數內容 2.關聯的是value型別的變數 value只是用來傳遞資料,不能對控制項進行其...
Win32控制項使用 Edit控制項
drecik學習經驗分享 edit控制項是乙個很強大的輸入控制項,可以處理很多樣式,通過vs的控制項屬性來設定,有單行,多行,密碼框,滾動條等。其中通知碼可以如下所示 獲得edit控制項輸入的內容可以通過之前討論過的通用函式 參考前面的博文 getwindowtext等。剪下,複製,刪除當前選擇內容...
讀取多個edit控制項控制代碼
建議首先用spy 看看視窗的層次結構 然後 var handle,ehandle1,ehandle2 thandle begin handle findwindow 父視窗類 父視窗標題 ehandle1 findwindowex 父視窗控制代碼,0,edit nil 第乙個edit的控制代碼 eh...