1 使用::SetCursor设置,如下面,但当移动鼠标后,未必会起作用,因为Windows调用其他窗口消息,如WM_MOUSEMOVE,会设置成默认鼠标形状,即箭头形状。
BOOL CWwe2Dlg::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)
{
CString sClassName;
::GetClassName(pWnd->GetSafeHwnd(),sClassName.GetBuffer(80),80);
if (sClassName=="Button" && m_hButtonCursor
&& GetWindowLong(pWnd->m_hWnd,GWL_ID)==IDC_OK)
{
::SetCursor(m_hButtonCursor);
return TRUE;
}
return CDialog::OnSetCursor(pWnd, nHitTest, message);
}
2 一劳永逸的的在任何地方都可使用的设置,使用::SetClassLong,如:
//将光标改为漏斗
SetClassLong(pDlg->GetSafeHwnd(), GCL_HCURSOR,
(LONG)LoadCursor(NULL, IDC_WAIT));
//恢复光标为箭头
SetClassLong(pDlg->GetSafeHwnd(), GCL_HCURSOR,
(LONG)LoadCursor(NULL, IDC_ARROW));
本文介绍了在Windows环境下,如何通过编程方式实现自定义鼠标光标,并提供了两种方法:一种是在特定窗口上设置,另一种是一劳永逸地全局设置。通过使用`::SetCursor`和`::SetClassLong`函数,可以实现在不同的窗口或应用中应用不同样式或状态的鼠标指针,提升用户体验。
986

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



