設定滑鼠在對話方塊某個區域的響應,可以新增wm_mousemove訊息響應,並在onmousemove()函式中實現操作。
但是,控制項其實也是乙個對話方塊。所以,如果要設定滑鼠在控制項所在範圍內的事件,用wm_mousemove是行不通的。
解決方法:
過載onsetcursor()方法。
步驟:1.開啟對應對話方塊的類嚮導classwizard。
2.在訊息對映messagemaps中新增訊息message:wm_setcursor。
3.然後程式**中會新增進函式:
onsetcursor(cwnd* pwnd, uint nhittest, uint message)
4.在該函式中新增if語句,其中的條件語句判斷是否到達指定控制項,
如:if(pwnd == getdlgitem(idc_btn_modify))
5.在if語句中將滑鼠設定成目標樣式
setcursor(loadcursor(null, idc_hand));
//此處idc_hand是自定義的滑鼠形狀,下面再詳細解釋
整個函式的**如下:
bool chall::onsetcursor(cwnd* pwnd, uint nhittest, uint message)
return cdialog::onsetcursor(pwnd, nhittest, message);}
*滑鼠形狀
滑鼠的形狀由setcursor函式的第二個引數決定,表示游標資源。
1.系統游標資源名稱
標準的箭頭和小沙漏
idc_arrow
標準的箭頭
idc_cross
十字游標
idc_help
標準的箭頭和問號
idc_ibeam
工字游標
idc_no
禁止圈idc_sizeall
四向箭頭指向東、西、南、北
idc_sizenesw
雙箭頭指向東北和西南
idc_sizens
雙箭頭指向南北
idc_sizenwse
雙箭頭指向西北和東南
idc_sizewe
雙箭頭指向東西
idc_uparrow
垂直箭頭
idc_wait
沙漏 2.自定義游標形狀
在stdafx.h中,或者對應對話方塊的標頭檔案中巨集定義:
#ifndef idc_hand
#define idc_hand makeintresource(32649)
#endif
①以上表示使用手型,其實也屬於系統圖示,loadcursor的第一引數為null。
MFC控制項響應滑鼠中鍵OnMouseWheel
控制項必須獲取焦點才能響應 onmousewheel 因此首先要在控制項的 onlbuttondown 裡呼叫setfocus 然後過載控制項的 onmousewheel 函式 bool cyucvimagecontrol onmousewheel uint nflags,short zdelta,...
MFC 滑鼠訊息
1 客戶區滑鼠 滑鼠基本分三種 單擊,雙擊,移動 wm lbuttondown 客戶區中按下滑鼠左鍵 wm leuttonup 客戶區中鬆開滑鼠左鍵 wm lbuttondblclk 客戶區中雙擊滑鼠左鍵 wm mbuttondown 客戶區中按下滑鼠中鍵 wm mbuttonup 客戶區中鬆開滑鼠...
MFC控制項
1.mfc中的radio控制項是成組的,所以需要把radio的group屬性設為true,否則中右鍵 新增變數時會沒有radio控制項的id出現。2.mfc中的list control控制項出現不顯示資料的情況,那是因為list control控制項中的view屬性預設為icon,需要將view屬性...