如何讓編輯框響應滑鼠單擊

2021-04-12 19:11:28 字數 811 閱讀 2146

滑鼠單擊會產生wm_lbuttondown訊息,此訊息屬於標準視窗訊息。標準視窗訊息的路由是從子類向父類傳遞,因此我們可以利用標準訊息的路由來實現。

預設情況下編輯框是不響應滑鼠單擊的,因為當你單擊編輯框時產生的wm_lbuttondown訊息都流向了編輯框的基類cedit。

所以我們要想編輯框響應滑鼠單擊,就得為編輯框派生乙個新類。這樣當我們單擊編輯框時,wm_lbuttondown訊息就會流向我們派生的新類,在這個新類中我們就有機會處理該訊息。

比如:首先建乙個基於對話方塊的應用程式,工程名為test,建成以後通過類嚮導給當前工程新增乙個新類取名為newedit,這樣在我們的工程test中就有了乙個新類cnewedit

然後通過類嚮導,為編輯框關聯乙個cnewedit型別的控制項變數

cnewedit   m_newedit;

再給我們的新類cnewedit新增乙個wm_lbuttondown訊息處理函式,

在這個訊息處理函式中我們就可以處理編輯框的滑鼠單擊訊息了!!

其實上面的方法是通用的,我們要讓編輯框響應滑鼠雙擊,右擊,讓按鈕

響應滑鼠移動等等,我們都可以利用上面的方法來實現,實現的關鍵在於你

能否理解標準訊息的傳遞路由。

假設有乙個editbox關聯的cedti變數為m_test

建乙個基於對話方塊的程式,然後過載pretranslatemessage函式

新增如下**:

bool ctestdialogdlg::pretranslatemessage(msg* pmsg)

return cdialog::pretranslatemessage(pmsg);}

MFC中有關滑鼠單擊雙擊響應的問題

今天修改一程式的bug,修改了半天,終無頭緒。後猛然發現是因為雙擊的時候,也是響應單擊訊息函式。遂google,發現 windows系統在系統的雙擊時間限制裡雙擊滑鼠左鍵呼叫onlbuttondblclk,雙擊滑鼠左鍵實際上產生4個事件 wm lbuttondown wm lbuttonup,然後w...

如何讓單行密碼編輯框只能輸入數字

1 在視窗中建立例項變數 boolean ib change false 2 建立乙個事件 ue changing event id 為 pbm enchange 如下 if not ib change then ib change true int i int li pos string lsda...

讓編輯框動態顯示系統時間

這是乙個很簡單的程式設計。在你的對話方塊上放置乙個edit控制項,要有一定的長度便於顯示。在oninitdialog中新增如下 cstring strtime ctime tm tm ctime getcurrenttime 獲得系統時間 strtime tm.format y年 m月 d日 x 格...