編輯框CEdit的EN CHANGE通知訊息

2021-08-04 20:13:13 字數 1207 閱讀 1036

編輯框控制項給其父視窗傳送訊息來報告多種輸入事件。在mfc應用程式中使用

on_en

訊息對映巨集將這些通知傳遞給了處理函式。

當控制項的文字被修改後,編輯框控制項會向其父視窗傳送en_change通知訊息。在父視窗中用

on_en_change

訊息對映巨集來註冊乙個訊息響應函式來處理

en_change

訊息。當文字輸入到編輯框控制項時,其父視窗就會呼叫這個註冊的函式,來實時動態的更新獲取文字。

在資源編輯器中選中該編輯框,之後在右側的「屬性」欄中選擇「控制項事件」,接下來在「en_change

」對應的欄中新增其訊息響應函式,如圖

1所示。

圖1 新增

en_change

通知訊息的響應函式

新增了響應函式之後,可以在對話方塊訊息對映巨集中看到自動新增了on_en_change巨集,

begin_message_map(cen_change_testdlg, cdialogex)

on_en_change(idc_edit1, &cen_change_testdlg::onenchangeedit1)

end_message_map()

該巨集的作用是,當編輯框idc_edit1中的文字內容發生變化時,就會呼叫onenchangeedit1()函式。

onenchangeedit1()函式的格式為

void cen_change_testdlg::onenchangeedit1()

在編寫某些程式時,當按下按鍵後,需要獲取編輯框中輸入的文字。在按下按鍵後需要判斷編輯框中是否是空,如果是空,則提示需要在編輯框中輸入相應的文字。

使用編輯框的en_change訊息則可以省去文字框是否為空的判斷。起始狀態下,可以將按鍵設定為不可用,只有當編輯框中輸入了文字之後,按鍵的狀態才變為可用。

在onenchangeedit1()函式中有如下**:

m_button.enablewindow(m_edit1.linelength());

其中,m_button是按鍵對應的變數,

m_edit1

是編輯框對應的變數。只有編輯框中的文字的長度

linelength()大於0

時,按鍵的狀態才變為可用;如果沒有在編輯框中輸入文字,則按鍵的狀態為不可用。

CEdit編輯框透明的實現

只是為了存下來,慢慢研究 實現方法1 直接在對話方塊中 hbrush clogindlg onctlcolor cdc pdc cwnd pwnd uint nctlcolor if nctlcolor ctlcolor static return hbr 如果只是這樣的話,編輯框無法回格刪除,所以...

CEdit獲取編輯框的內容

cedit 獲取編輯框的內容 大家對獲取編輯框的內容可能已經很熟悉了,無非是先定義乙個cstring型別的變數m str,然後呼叫getdlgitem 編輯框id getwindowtext str 這樣就可以輕鬆獲取到編輯框的內容。但如果我要設定此編輯框為唯讀模式,要求我們獲取編輯框的內容,那該怎...

重繪編輯框CEdit 繼承CEdit方式

編輯框是常用控制項之一,同時也是一種完全自實現較為繁瑣的控制項。本例實現了對編輯框的簡單的自繪製,在保留其自身的強大功能的前提下,實現了編輯框的邊框 背景 文字顏色以及禁用態的各種顏色的替換。要想重繪,我們必須知道要繪什麼。通過觀察預設的編輯框我們可以很清楚的看到編輯框有三個最基礎的部分需要我們繪製...