mfc设置鼠标状态OnSetCursor响应函数

参考文章:1.https://bbs.csdn.net/topics/70084486

2.https://blog.csdn.net/wang15061955806/article/details/52385911

该函数专门由于设置光标的形状,是对WM_SETCURSOR消息的响应。

1.该消息在鼠标发生任何事件时都能响应(单击,双击,移动,且该函数的调用在对于鼠标响应函数之前)。

如果处理了该函数,一定要返回return TRUE,不要让父类再处理。

一、函数原型

afx_msg BOOL CWnd::OnSetCursor(CWnd* pWnd,UINT nHitTest,UINT message);

参数一:当前鼠标位于哪个窗口(控件)上,可以通过pWnd->GetDlgCtrID()来判断设置鼠标形状

参数二:表示当前鼠标位于实现该函数的窗口的哪个位置(HTBORDER HTCLIENT等等,参考OnNcHitTest函数)

参数三:表示鼠标消息的值(WM_LBUTTONDOWN  WM——LBUTTONUP诸如此类)

有了这些参数,通过判断就可以对于不同位置,不同控件,不同鼠标状态做不同的处理了

二、改变鼠标形状

hCursor=LoadCursor(NULL,IDC_WAIT);

SetCursor(hCursor);

return TRUE;

当改变鼠标的形状后一定要返回TURE,表示该窗口已经处理鼠标形状完毕,不需要再交给该窗口的父窗口处理了,如果不返回TURE,则父窗口会默认恢复光标形状。

三、自定义判断条件

例如当a=1时让鼠标变成忙,=2时让光标变成箭头,非常灵活

原文地址:https://www.cnblogs.com/zhuluqing/p/8995066.html