MFC 控制項處滑鼠變型

2021-06-19 12:30:59 字數 1377 閱讀 1065

設定滑鼠在對話方塊某個區域的響應,可以新增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屬性...