如题,如何实现鼠标移到按钮上出现手形光标,移到其它处鼠标保持原样在函数OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)中
添加了如下代码
    ::SetCursor(AfxGetApp()->LoadCursor(IDC_CURSOR_HAND));
    return TRUE;现在可出现手形鼠标光标,但是想区分开来处理,即只有移到按钮上出现手形光标。

解决方案 »

  1.   

    按钮继承一下。
    相应onmouseover事件,修改形状。
      

  2.   


    加入消息WM_SETCURSOR
    BOOL CTestSETCURSORDlg::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message) 
    {
    // TODO: Add your message handler code here and/or call default
    switch(pWnd->GetDlgCtrlID())
        {
        case IDC_BUTTON1:
            SetCursor(::LoadCursor(NULL, IDC_HAND));
            break;
        default :
            SetCursor(::LoadCursor(NULL, IDC_ARROW));
        }
        
        return TRUE;
    }
      

  3.   

    在OnSetCursor中获得鼠标当前的位置,然后获得控件的rect,然后判断鼠标是否在rect内,如果在就变鼠标,如果不在就还原鼠标.
      

  4.   

    解决了。设定IDC_ARROW 光标时用的是LoadStandardCursor,用LoadCursor 没能成功。
    SetCursor(AfxGetApp()->LoadStandardCursor(IDC_ARROW));
      

  5.   

    不用继承
    在初始化里面
    hcursor=LoadCursor(NULL,IDC_WAIT);
    SetClassLong(GetDlgItem(IDC_BUTTON1)->m_hWnd,GCL_HCURSOR,(LONG)hcursor);
    其中hcursor是HCURSOR hcursor成员手型你自己试吧,可能XP的特殊,我还没找到
    呵呵