我在OnMouseMove(UINT nFlags, CPoint point)函数里加入了以下代码:if ((point.x > m_pRectLinkEmail1.left && point.x < m_pRectLinkEmail1.right 
&& point.y > m_pRectLinkEmail1.top && point.y < m_pRectLinkEmail1.bottom)
|| (point.x > m_pRectLinkEmail2.left && point.x < m_pRectLinkEmail2.right 
&& point.y > m_pRectLinkEmail2.top && point.y < m_pRectLinkEmail2.bottom))
{
HCURSOR hCursor;
hCursor = AfxGetApp()->LoadCursor(IDC_HAND);
SetCursor(hCursor);
}
else
{
HCURSOR hCursor;
hCursor = AfxGetApp()->LoadCursor(IDC_IBEAM);
SetCursor(hCursor);
}想实现在m_pRectLinkEmail1和m_pRectLinkEmail2的区域里鼠标显示手型。
但是运行后的结果是在整个对话框区域里,鼠标变得很不稳定,根本就看不到鼠标在哪里了。这是什么问题?还请高手指点!!!

解决方案 »

  1.   

    你把HCURSOR hCursor改成成员变量看看
      

  2.   

    判断一个点是不是在矩形区域用PtInRect
      

  3.   

    你用AfxGetApp()->LoadCursor(IDC_HAND);逻辑上不太合适,除非你加载本工程的图标,否则会加载系统自带的图标,出现你说的情况是不是这个问题呢?你把hCursor = AfxGetApp()->LoadCursor(IDC_HAND);改成:hCursor = ::LoadCursor(NULL,IDC_HAND);hCursor = AfxGetApp()->LoadCursor(IDC_IBEAM);
    改成:hCursor = ::LoadCursor(NULL,IDC_IBEAM);
    试试
      

  4.   

    你不要设置全局的Cursor,应该用SetClassLong( hwnd, GCL_HCURSOR, ::LoadCursor(NULL,IDC_HAND) );
    hwnd是要设置鼠标形状的窗口句柄,窗口的Cursor优先级高于全局Cursor
      

  5.   

    也可能是::SetClassLong( hwnd, GCL_HCURSOR, IDC_HAND );你看一下MSDN吧
      

  6.   


    HCURSOR hCursor = AfxGetApp()->LoadStandardCursor( IDC_HAND  );::SetClassLong( this->m_hWnd, GCL_HCURSOR, ( long )hCursor );
    刚刚测试成功,显示手型。