VC++ 鼠标光标移动到按钮上时变成IDC_SIZEWE光标!如何实现???

我的操作顺序是:在控件上右键→选择“事件”→添加WM_SetCursor消息→添加并编辑代码!得到程序:BOOLCMyDlg::OnSetCursor(CWnd*pWnd... 我的操作顺序是:
在控件上右键→选择“事件”→添加WM_SetCursor消息→添加并编辑代码!
得到程序:

BOOL CMyDlg::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)
{

::SetCursor(::LoadCursor (NULL,IDC_SIZEWE));
return CDialog::OnSetCursor(pWnd, nHitTest, message);
}

结果没反应!
若把 return CDialog::OnSetCursor(pWnd, nHitTest, message); 变成 return TRUE;则运行程序就是IDC_SIZEWE光标,而不是当鼠标移动到按钮上时才变,而是一直都是。。。

该如何实现当鼠标移动到按钮上时才改变光标啊????麻烦知道的说一下嘛,,,谢谢了!
展开
 我来答
百度网友0ee9ace0b
2013-07-31 · TA获得超过287个赞
知道小有建树答主
回答量:160
采纳率:0%
帮助的人:188万
展开全部
BOOL CMFCTestDlg::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)
{
CString sClassName; 
HCURSOR m_hCursor = LoadCursor(NULL,IDC_CROSS);
//查找类名
::GetClassName(pWnd->GetSafeHwnd(),sClassName.GetBuffer(80),80);
//如果类名为“Button”且m_hCursor的值不为空
if (sClassName=="Button" && m_hCursor){
//修改光标
::SetCursor(m_hCursor);
return TRUE;
}
return CDialog::OnSetCursor(pWnd,nHitTest,message);
}

因为WM_SetCursor是由OnMouseMove(鼠标移动)事件发送的,鼠标移动一次,便发送一次WM_SetCursor消息,所以你的程序才会运行时就会改变光标。

追问
嘿嘿  我弄好了!!!!
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式