(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)<

本文介绍了如何在MFC中加载光标资源,包括使用系统自带ID或自定义资源,以及从 CUR 或 ANI 文件加载。通过SetClassLong函数确保光标的持久性,并讨论了使用SetCursor的限制,需要拦截WM_SETCURSOR消息以保持光标状态。同时,提醒使用SetClassLong函数可能不会立即生效,需要窗口重绘或调用UpdateWindow()。
最低0.47元/天 解锁文章
2295

被折叠的 条评论
为什么被折叠?



