編輯控制項 edit

2021-04-20 23:47:47 字數 4993 閱讀 3040

編輯框(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...