文本框控件的消息及應(yīng)用

字號(hào):

文本(或文字)控件是“文本框控件”的簡(jiǎn)稱(chēng),它通常用于輸入和編輯文字。它屬于標(biāo)準(zhǔn)Windows編輯控件的一個(gè)子類(lèi),所以它支持所有編輯控件消息。這兒講述的技術(shù)也適用于由其他廠商設(shè)計(jì)的,以Windows編輯控件類(lèi)為基礎(chǔ)的其他控件。
    本文將介紹文本控件的消息,這些消息顯著擴(kuò)展了控件本身的能力,使我們?cè)诔绦蛑心軌蚋`活的控制控件,不必只僅僅依賴(lài)于Visual Basic所提供的屬性或事件,這些消息在進(jìn)行子類(lèi)處理中很有用處。下面先介紹控件的消息,然后介紹它們的一些應(yīng)用。
    下表列出了文本控件的常用通知消息:
    消息名稱(chēng) 消息說(shuō)明
    EN_CHANGE 編輯控件的內(nèi)容一旦發(fā)生改變,就發(fā)送這條消息。
    EN_ERRSPACE 任何時(shí)候只要由于內(nèi)存不足以完成一項(xiàng)編輯操作,就發(fā)送這條消息。
    EN_HSCROLL 只要用戶(hù)單擊了從屬于一個(gè)編輯控件的水平滾動(dòng)條的任何地方,就會(huì)發(fā)送這條消息。注意這條消息是在控件更新顯示之前發(fā)送出去的。
    EN_KILLFOCUS 一旦控件丟失了輸入焦點(diǎn),則發(fā)出這條消息。
    EN_MAXTEXT 只要用戶(hù)輸人的文字試圖超出由EM_LIMITTEXT消息規(guī)定購(gòu)界限,或試圖超出由VB Maxlength屬性規(guī)定的界限,就會(huì)發(fā)送這條消息。此外,倘若不允許自動(dòng)進(jìn)行水平滾動(dòng),同時(shí)插入點(diǎn)要超出控件的寬度;或者不允許自動(dòng)自動(dòng)滾動(dòng),同時(shí)插入點(diǎn)要超出接件的高度,那么也會(huì)觸發(fā)這條消息。
    EN_SETFOCUS 一旦控件接收到了輸入焦點(diǎn),就發(fā)出這條消息。
    EN_UPDATE 這條消息在控件顯示出已改變的文字之前發(fā)出。它與EN_CHANGE通知消息相似,只是它發(fā)生于更新文本顯示出來(lái)之前。
    EN_VSCROLL 只要用戶(hù)單擊了從屬于一個(gè)編輯控件的垂直滾動(dòng)條的任何地方,就會(huì)發(fā)送這條消息。注意這條消息是在控件更新顯示之前發(fā)送出去的。
    下表列出了文本控件的常用消息:
    消息名稱(chēng) 消息說(shuō)明
    EM_CANUNDO 決定前一次編輯操作是否能夠撤消
    EM_EMPTYUNDOBUFFER 清除控件的撤消緩沖區(qū),使其不可能撤消前一次編輯操作
    EM_UNDO 撤消前一次編輯操作
    EM_FMTLINES 決定是否在取回的文本宇串中包含軟回車(chē)字符
    EM_GETLIMITTEXT 獲取一個(gè)編輯控件中文本的長(zhǎng)度
    EM_GETMARGINS 獲取編輯控件的左、右邊距(不得用于NT3.51)
    EM_GETRECT 獲取一個(gè)編輯控件的格式化矩形
    EM_LIMITTEXT 限制編輯耀件甲購(gòu)文本長(zhǎng)度
    EM_SETLIMITTEXT 限制編輯控件中的文本長(zhǎng)度(不得用于NT3.51)
    EM_SETMARGINS 設(shè)置編輯控件的左、右邊距(不得用于NT3.51)
    EM_SETRECT 為一個(gè)編輯控件設(shè)置格式化矩形
    EM_SETRECTNP 與EM_SETRECT類(lèi)似,只是控件此時(shí)不會(huì)重畫(huà)
    EM_SETTABSS 設(shè)置編輯控件中的制表站間距
    EM_CHARFROMPOS 判斷編輯控件指定位置處的字符(不適用于NT3.51)
    EM_GETFIRSTVISIBLEIN 判斷編輯控件中顯示的第一行