編輯框(Edit)控件實(shí)際上是一個(gè)簡(jiǎn)易的文本編輯器,用戶可以在編輯框中輸入可添加或插入文本。還有復(fù)制、粘貼、剪切、刪除等編輯功能。
應(yīng)用程序用CreateWindowEx創(chuàng)建編輯框控件時(shí),可根據(jù)控件的用途在下表中選擇部份常數(shù)來設(shè)定其風(fēng)格屬性(style)。 常數(shù) 說明
ES_MULTILINE 多行文本,指定編輯控件可以多行文本編輯,用戶每按一次Enter,在當(dāng)前光標(biāo)次輸入一個(gè)回車換行符(0Dh,0Ah),文本增加一行。
ES_LEFT 文本顯示居左。
ES_CENTER 文本顯示居中。
ES_RIGHT 文本顯示居右。
ES_LOWERCASE 把用戶輸入的字母統(tǒng)統(tǒng)轉(zhuǎn)換成小寫字母。
ES_UPPERCASE 把用戶輸入的字母統(tǒng)統(tǒng)轉(zhuǎn)換成大寫字母。
ES_OEMCONVERT 使編輯框中的正文可以在ANSI字符集和OEM字符集之間相互轉(zhuǎn)換。這在編輯框中包含文件名時(shí)是很有用的。
ES_AUTOHSCROLL 當(dāng)用戶在行尾鍵入一個(gè)字符時(shí),正文將自動(dòng)向右滾動(dòng)10個(gè)字符,當(dāng)用戶按回車鍵時(shí),正文總是滾向左邊。
ES_AUTOVSCROLL 當(dāng)用戶在最后一個(gè)可見行按回車鍵時(shí),正文向上滾動(dòng)一頁。
ES_NUMBER 只接收數(shù)碼輸入,其它字符輸入一律無效。
ES_NOHIDESEL 當(dāng)編輯框失去輸入焦點(diǎn),正文中的選擇保持不變,缺省時(shí)正文中的選擇將失效。
ES_READONLY 將編輯框設(shè)置成只讀的。
ES_PASSWORD 使所有鍵入的字符都用“*”來顯示。
ES_WANTRETURN 使多行編輯器接收回車鍵輸入并換行。如果不指定該風(fēng)格,按回車鍵會(huì)選擇缺省的命令按鈕,這往往會(huì)導(dǎo)致對(duì)話框的關(guān)閉。
當(dāng)用戶在編輯控件上進(jìn)行各種操作時(shí),其父窗口將收到WM_COMMAND通知消息,同時(shí)wParam的低16位帶控件的ID。lParam帶控件句柄(hWnd),wParam的高16位帶有如下表的消息代碼。 消息代碼 用戶操作
EN_CHANGE 編輯框的內(nèi)容被用戶改變了。與EN_UPDATE不同,該消息是在編輯框顯示的正文被刷新后才發(fā)出的。
EN_ERRSPACE 編輯框控件無法申請(qǐng)足夠的動(dòng)態(tài)內(nèi)存來滿足需要。
EN_HSCROLL 用戶在水平滾動(dòng)條上單擊鼠標(biāo)。
EN_KILLFOCUS 編輯框失去輸入焦點(diǎn)。
EN_MAXTEXT 輸入的字符超過了規(guī)定的最大字符數(shù)。在沒有ES_AUTOHSCROLL或ES_AUTOVSCROLL的編輯框中,當(dāng)正文超出了編輯框的邊框時(shí)也會(huì)發(fā)出該消息。
EN_SETFOCUS 編輯框獲得輸入焦點(diǎn)。
EN_UPDATE 在編輯框準(zhǔn)備顯示改變了的正文時(shí)發(fā)送該消息。
EN_VSCROLL 用戶在垂直滾動(dòng)條上單擊鼠標(biāo)。
應(yīng)用程序可以通過調(diào)用SendMessage向控件發(fā)送如下消息來設(shè)定和查詢控件各種參數(shù)。 uMsg wParam lParam 說明
EM_UNDO 0 0 撤消前一次在控件的編輯操作,當(dāng)重復(fù)發(fā)送本消息,控件將在撤消和恢復(fù)中來回切換。
EM_CANUNDO 0 0 檢測(cè)控件撤消緩沖區(qū)是否為空,通常控件把最后一次在控件的編輯操作保存在一個(gè)撤消緩沖區(qū),如果緩沖區(qū)非空則返回TRUE表示上次操作可以撤消,否則返回FALSE,應(yīng)用程序可以利用該返回值來禁止或允許菜單或工具條的“撤消”項(xiàng)。
EM_EMPTYUNDOBUFFER 0 0 清除控件的撤消緩沖區(qū),使其不能撤消前一次編輯操作。
EM_REPLACESEL TRUE或FALSE 替換文本指針 用指定文本替換編輯控件中的當(dāng)前選定內(nèi)容,如果wParam為TRUE,則本次操作允許撤消,F(xiàn)ALSE禁止撤消。
EM_SETSEL 起點(diǎn) 終點(diǎn) 設(shè)置編輯控件中文本選定內(nèi)容范圍,該范圍被高亮度顯示,用于為復(fù)制、替換、粘貼、剪切、刪除等編輯功能指定范圍。使用本功能,鍵盤光標(biāo)將被移至指定的終點(diǎn)后面,通常使用指定相同起點(diǎn)和終點(diǎn)來移動(dòng)鍵盤光標(biāo)而不選定范圍。當(dāng)指定的起點(diǎn)等于0和終點(diǎn)等于-1時(shí),全文全部被選中,此法常用在清空編輯控件。當(dāng)指定的起點(diǎn)等于-2和終點(diǎn)等于-1時(shí),全文均不選,鍵盤光標(biāo)移至文本未端,此法常用在文本未端追加內(nèi)容。注意:當(dāng)控件沒有輸入焦點(diǎn)時(shí),本操作將會(huì)失敗,一般在執(zhí)行本操作前都應(yīng)調(diào)用SetFocus先取得輸入焦點(diǎn)。
EM_GETSEL 起點(diǎn)緩沖地址
或NULL 終點(diǎn)緩沖地址
或NULL 取得編輯控件中選定內(nèi)容的范圍,返回值中低16位為起點(diǎn)與高16位為終點(diǎn),如果wParam和lParam中指定了地址,則會(huì)在該地址填入相應(yīng)值(dword)。本操作也常用來求取鍵盤光標(biāo)位置。
EM_CHARFROMPOS 0 位置 取得指定位置處的字符相對(duì)于文本頭部的偏移,使用本操作應(yīng)先在lParam的高16位指定行號(hào),低16位指定列號(hào),行列是按編輯控件的客戶區(qū)左上角為原點(diǎn)(0,0)計(jì)算的。如果指定的位置超出控件客戶區(qū)則返回-1
EM_FMTLINES TRUE或FALSE 0 決定是否在取回的文本宇串中包含軟回車字符
EM_GETFIRSTVISIBLELINE 0 0 取得編輯控件中顯示的第一行
EM_GETHANDLE 0 0 取得編輯控件文本緩沖區(qū)。
EM_GETLIMITTEXT 0 0 獲取一個(gè)編輯控件中文本的最大長(zhǎng)度
EM_GETLINE 行號(hào) 緩沖地址 從編輯控件取回一行的內(nèi)容,緩沖區(qū)第一個(gè)字(word)必須先填寫緩沖區(qū)的長(zhǎng)度,
EM_GETLINECOUNT 0 0 取得一個(gè)編輯控件的總行數(shù)
EM_GETMARGINS 0 0 獲取編輯控件的左、右邊距,返回值低16位為左邊距,高16位為右邊距
EM_GETMODIFY 0 0 取編輯控件的修改標(biāo)志,返回 TRUE則控件文本已被修改,返回FALSE則未變。此值可以來決定是否提示用戶存盤。
EM_GETPASSWORDCHAR 0 0 取得編輯控件用來顯示密碼的字符,返回NULL表示沒有字符。
EM_GETRECT 0 RECT結(jié)構(gòu)地址 獲取一個(gè)編輯控件的格式化矩形
EM_GETTHUMB 0 0 取得多行文本編輯控件的滾動(dòng)框的當(dāng)前位置。
EM_GETWORDBREAKPROC 0 0 取得整字換行回調(diào)函數(shù)EditWordBreakProc指針。
EM_LIMITTEXT 最大值 0 限制編輯中文本的最大長(zhǎng)度
EM_LINEFROMCHAR 字符偏移 0 取得指定的字符偏移處的行號(hào)。
EM_LINEINDEX 行號(hào) 0 取得指定行第一個(gè)字符偏移
EM_LINELENGTH 字符偏移 0 取得指定字符偏移處對(duì)應(yīng)的一行長(zhǎng)度字符數(shù)。
EM_LINESCROLL 列字符 行數(shù) 滾動(dòng)編輯控件
EM_POSFROMCHAR POINT結(jié)構(gòu)地址 字符偏移 取得指定字符偏移的顯示位置行列號(hào),行列是按編輯控件的客戶區(qū)左上角為原點(diǎn)(0,0)計(jì)算的。字符偏移是相對(duì)于文本頭部的偏移。
EM_SCROLL SB_LINEDOWN
SB_LINEUP
SB_PAGEDOWN
SB_PAGEUP 0 編輯框顯示文本垂直滾動(dòng)。滾動(dòng)方向:SB_LINEDOWN向下滾動(dòng)一行,SB_LINEUP向上滾動(dòng)一行,SB_PAGEDOWN向下滾動(dòng)一頁,SB_PAGEUP向上滾動(dòng)一頁。
EM_SCROLLCARET 0 0 把鍵盤光標(biāo)移至可見范圍。
EM_SETHANDLE 緩沖區(qū)指針 0 為編輯控件指定新的文本緩沖區(qū)。此操作僅適用對(duì)話框創(chuàng)建帶DS_LOCALEDIT風(fēng)格的控件。
EM_SETLIMITTEXT 長(zhǎng)度(字節(jié)) 0 限制編輯控件中的文本緩沖區(qū)最大長(zhǎng)度。
EM_SETMARGINS EC_LEFTMARGIN
EC_RIGHTMARGIN
EC_USEFONTINFO 邊距 設(shè)置編輯控件的左、右邊距,當(dāng)wParam含EC_LEFTMARGIN時(shí)在lParam的低16位指定左邊距點(diǎn)數(shù),當(dāng)wParam含EC_RIGHTMARGIN時(shí)在lParam的高16位指定右邊距點(diǎn)數(shù)。當(dāng)指定wParam為EC_USEFONTINFO時(shí),則用當(dāng)前字體的字符"A"的寬度指定右邊距和字符"C"的寬度指定左邊距l(xiāng)Param被忽略。
EM_SETMODIFY TRUE或FALSE 0 用于設(shè)置或清除一個(gè)編輯控件的修改標(biāo)志
EM_SETPASSWORDCHAR 字符 0 指定控件用來顯示密碼字符,缺省為“*”。當(dāng)wParam為0時(shí),本操作將清除控件的ES_PASSWORD風(fēng)格,并按實(shí)際字符顯示。
EM_SETREADONLY TRUE或FALSE 0 決定是否將編輯控件設(shè)為只讀,同時(shí)決定控件的ES_READONLY風(fēng)格
EM_SETRECT 0 RECT結(jié)構(gòu)地址 為一個(gè)編輯控件設(shè)置格式化矩形
EM_SETRECTNP 0 RECT結(jié)構(gòu)地址 與EM_SETRECT類似,只是控件此時(shí)不會(huì)重畫
EM_SETTABSTOPS 制表站數(shù) 站距表地址 設(shè)置編輯控件中的制表站間距,當(dāng)制表站數(shù)為0時(shí)lParam被忽略,所有制表站距均為32個(gè)對(duì)話框單位,當(dāng)制表站數(shù)不為0時(shí)lParam指向一個(gè)由32位(dword)組成的站距表,以對(duì)話框單位為寬度計(jì)算單位。
EM_SETWORDBREAK 0 0 本操作現(xiàn)已不支持,請(qǐng)使用EM_SETWORDBREAKPROC。
EM_SETWORDBREAKPROC 0 函數(shù)入口地址 設(shè)置整字換行回調(diào)函數(shù)EditWordBreakProc指針
posted on 2009-12-16 19:33
李陽 閱讀(2274)
評(píng)論(1) 編輯 收藏 引用