滑鼠單擊會產生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 格...