Visual C++——设置光标Cursor
API?
LoadCursor:第一個參數是要載入光標的程序的實例,當使用系統預定義光標的時候,要設置為空。當要使用自定義光標的時候,設置為AfxGetInstanceHandle()。
更換LoadCursor中的第二個參數,就能得到不同的系統預定義光標。
光標Cursor類型
IDC_APPSTARTING 標準的箭頭和小沙漏 IDC_ARROW 標準的箭頭 IDC_CROSS 十字光標 IDC_HELP 標準的箭頭和問號 IDC_IBEAM 工字光標 IDC_NO 禁止圈 IDC_SIZEALL 四向箭頭指向東、西、南、北 IDC_SIZENESW 雙箭頭指向東北和西南 IDC_SIZENS 雙箭頭指向南北 IDC_SIZENWSE 雙箭頭指向西北和東南 IDC_SIZEWE 雙箭頭指向東西 IDC_UPARROW 垂直箭頭 IDC_WAIT 沙漏?解決方案
方法一:創建時設置
wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);方法二:使用SetCursor設置
SetCursor(LoadCursor(NULL,IDC_HAND));注:建議在WM_SETCURSOR消息響應函數中設置,可以在別的地方設置,但是需要自己控制光標的變化。?
方法三:重載消息函數WM_SETCURSOR?
BOOL CXXX...::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message) {if(m_bTransforming)? //設置更改光標的標志{SetCursor(m_hCursor);? //調用return TRUE; //必須返回否則看不到效果}return CDialog::OnSetCursor(pWnd, nHitTest, message); //系統默認 }什么時候系統會發送設置光標消息:WM_SETCURSOR
原文的定義:The WM_SETCURSOR message is sent to a window if the mouse causes the cursor to move within a window and mouse input is not captured。
只要鼠標事件發生就會自動發送 WM_SETCURSOR從而觸發OnSetCursor。你可以再鼠標按下的函數中使用SetCursor來設置一個光標,你會發現光標確實改變了。但是只要你移動鼠標,或者放開鼠標,光標就變回去了。
參考文章
https://blog.csdn.net/pipi0714/article/details/36426335
https://www.cnblogs.com/leexuzhi/archive/2012/02/23/2365608.html
https://blog.csdn.net/zengweicdut/article/details/8681818
總結
以上是生活随笔為你收集整理的Visual C++——设置光标Cursor的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Visual C++——修改框体背景颜色
- 下一篇: Spring Security——log