關於mfc中的滑鼠事件

2021-06-03 06:54:08 字數 983 閱讀 9874

前幾天徐老師的小學期,他丟給我了乙個學生的問題,問題和解決如下:

問題

我想改變游標形狀

用以下函式

void cmy97testdlg::

onmousemove(uint nflags,

cpoint point)

為什麼當游標移動到按鈕控制項上 就變回箭頭了

如果加一句setcature(); 

游標就無法按下按鈕或進行別的操作

我的理解

首先這個**改變游標是由滑鼠移動(mousemove)事件觸發的,這個時間觸發實在對話方塊的基礎上新增的訊息函式,但是對話方塊的訊息不一定能影響控制項,就像在對話方塊裡加乙個滑鼠左鍵按下的事件訊息(onlbuttondown),

首先這個**改變游標是由滑鼠移動(

mousemove)事件觸發的,

這個時間觸發實在對話方塊的基礎上新增的訊息函式,

但是對話方塊的訊息不一定能影響控制項,

就像在對話方塊裡加乙個滑鼠左鍵按下的事件訊息(

onlbuttondown),

void ccursedlg::onlbuttondown(uint nflags, cpoint point)

就是說按下了滑鼠左鍵,就彈乙個"hello"的對話方塊,

可是如果我在控制項上(如在按鈕ok)按下滑鼠左鍵上,

它不會執行這段**,而是執行控制項的程式**乙個道理,

就是這些在對話方塊新增的滑鼠事件並不會影響到控制項

解決辦法是在類嚮導裡新增乙個 wm_setcursor的訊息,設定新的游標後要立即 return true; 

不能用其預設的返回值, 否則系統就會呼叫預設的函式,**如下:

bool ccursedlg::onsetcursor(cwnd* pwnd, uint nhittest, uint message)

.html

MFC 華而不實的滑鼠響應事件

前幾天搞了注入dll 的問題,今天偶然想到如何實現控制項響應滑鼠事件,如何滑鼠移動到某控制項上靜態編輯框或者滑鼠顯示提示資訊,經過幾番搜尋,還好全部解決,就上回的 先在maindialogwnd.cpp中宣告乙個物件用過存放滑鼠提示資訊 手動新增 我還是再找找相關資料,竟然被我找到了函式名為wm i...

QT關於滑鼠滾輪事件

首先在標頭檔案中宣告 include進行protected函式宣告 protected void wheelevent qwheelevent event 實現函式 滾輪事件 void mainwindow wheelevent qwheelevent event else 在滾輪事件處理函式中,使...

webAPI中的滑鼠事件

事件 事件源 誰 事件名稱 做了什麼 事件處理程式 發生了什麼效果 注意點 事件註冊時不會執行事件處理程式的,只有滿足事件觸發條件才會執行事件處理程式.事件註冊的方式 on 事件名稱 滑鼠單擊事件 onclick 滑鼠移入事件 onmouseover 滑鼠移出事件 onmouseout 滑鼠按下事件...