如果鼠标光标在一个窗口内移动且鼠标输入没有被捕获则窗口会接收到WM_SETCURSOR消息,只要鼠标移动OnMouseMove就会自动发送 WM_SETCURSOR从而触发OnSetCursor,因此在设计改变鼠标光标的程序时,一般不要在OnMouseMOve事件中调用SetCursor,容易引起指针闪烁,应该在在WM_SETCURSOR消息处理函数OnSetCursor中设置鼠标的光标。eg:
BOOL CMyButton::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
::SetCursor(LoadCursor(NULL,MAKEINTRESOURCE(IDC_HAND)));
return true;
return CButton::OnSetCursor(pWnd, nHitTest, message);
}
参考文章:http://liuyangxdgs.blog.163.com/blog/static/2913776320124118481193/