MFC 載入 游標

2021-05-24 10:39:11 字數 867 閱讀 1252

(1)載入資源id,可以是系統自帶的(如id_cross),或者是程式設計師自己加入的游標id:

hcursor   hcursor   =   ::loadcursor(null,makeintresource(idc_cross));

setclasslong(m_hwnd,gcl_hcursor,(long)hcursor   );

//或者指標::setclasslongptr(this->getsafehwnd(),gcl_hcursor,(long_ptr) hcursor);

(2)從.cur或.ani檔案載入:

hcursor   hcursor= ::loadcursorfromfile( _t("hand.cur"));

setclasslong(m_hwnd,gcl_hcursor,(long)hcursor   );

注意:setclasslong()才能保證設定新游標後,以後一直是新游標.

而如果只是setcursor()只是變化成新游標,馬上就還原了,不行.如要用setcursor(),還需要攔截wm_setcursor訊息,然後修改onsetcursor()函式:

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

return cview::onsetcursor(pwnd, nhittest, message);}

不攔截wm_setcursor訊息只是setcursor(),是沒用的.

使用setclasslong函式要小心。例如,可以通過使用setclasslong來改變類的背景顏色,但是這種改變不會馬上生效,直到屬於該類的窗體下次重繪,除非使用updatewindow()強迫窗體更新。

mfc 設定游標一法

應該在wm setcursor訊息響應函式中設定游標,注意返回值應當為false,遮蔽掉預設的 bool ccutpicdlg onsetcursor cwnd pwnd,uint nhittest,uint message 1 自己繪製的游標。setcursor loadcursor afxget...

mfc滑鼠游標閃爍問題

setcursor函式只能暫時設定游標樣式,當滑鼠移動時,游標恢復為箭頭。因此不能在移動響應函式中呼叫此函式,會產生閃爍。setclasslong 函式才能保證設定新游標後,以後一直是新游標。但是本控制項中,使用此函式設定,依然不行,滑鼠移動還是閃爍。換另外一種思路,查詢游標變換訊息。只要滑鼠移動o...

MFC中修改游標形狀

修改游標形狀,如果是修改系統內游標形狀,那就很簡單了,直接是用 setcursor loadcursor null,makeintresource idc cursor1 就可以修改成功了,但這只是更改一時的游標形狀。如果想要長久修改游標形狀,就需要在游標訊息中修改滑鼠形狀了。1 首先,新增wm s...