參考文章:1.https://bbs.csdn.net/topics/70084486
2.https://blog.csdn.net/wang15061955806/article/details/52385911
該函數專門由於設置光標的形狀,是對WM_SETCURSOR消息的響應。
1.該消息在鼠標發生任何事件時都能響應(單擊,雙擊,移動,且該函數的調用在對於鼠標響應函數之前)。
如果處理了該函數,一定要返回return TRUE,不要讓父類再處理。
一、函數原型
afx_msg BOOL CWnd::OnSetCursor(CWnd* pWnd,UINT nHitTest,UINT message);
參數一:當前鼠標位於哪個窗口(控件)上,可以通過pWnd->GetDlgCtrID()來判斷設置鼠標形狀
參數二:表示當前鼠標位於實現該函數的窗口的哪個位置(HTBORDER HTCLIENT等等,參考OnNcHitTest函數)
參數三:表示鼠標消息的值(WM_LBUTTONDOWN WM——LBUTTONUP諸如此類)
有了這些參數,通過判斷就可以對於不同位置,不同控件,不同鼠標狀態做不同的處理了
二、改變鼠標形狀
hCursor=LoadCursor(NULL,IDC_WAIT);
SetCursor(hCursor);
return TRUE;
當改變鼠標的形狀后一定要返回TURE,表示該窗口已經處理鼠標形狀完畢,不需要再交給該窗口的父窗口處理了,如果不返回TURE,則父窗口會默認恢復光標形狀。
三、自定義判斷條件
例如當a=1時讓鼠標變成忙,=2時讓光標變成箭頭,非常靈活