你应在“mousemove”事件里写上述语句。

解决方案 »

  1.   

    定义一个全局的HCURSOR句柄m_hCur,在你需要修改光标时m_hCur=LoadCursor
    然后调用OnSerCursor即可,在OnSetCursor中SetCursor(m_hCur..
      

  2.   

    BOOL CMyDialog::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message) 
    {
    if( pWnd->GetDlgCtrlID() == IDC_BUTTON1 )
    {
    static HCURSOR hCursor = NULL;
    if( hCursor == NULL )
    hCursor = AfxGetApp()->LoadCursor(IDC_HAND);
    SetCursor( hCursor );
    return true;
    }
    return CDialog::OnSetCursor(pWnd, nHitTest, message);
    }
      

  3.   

    可以先得到button的位置,在OnMouseMove中判定鼠标的位置是否
    落在button上,是的话。。
      

  4.   


      在对话框初始化函数里设置就行了(当然事先要做好资源IDC_CURSOR1):BOOL CAboutDlg::OnInitDialog() 
    {
    CDialog::OnInitDialog();

    // TODO: Add extra initialization here
    CButton* m_pButton1=(CButton *)GetDlgItem(IDOK);
    HCURSOR m_hCursor=AfxGetApp()->LoadCursor(IDC_CURSOR1);
    SetClassLong(m_pButton1->m_hWnd,GCL_HCURSOR,(LONG)m_hCursor); return TRUE;  // return TRUE unless you set the focus to a control
                  // EXCEPTION: OCX Property Pages should return FALSE
    }
      

  5.   

    你是不是找Button的CRect范围有问题?
      

  6.   

    在Button的MouseMove事件里写上述代码。
    或者按照dzl初始化设置的方法。
      

  7.   

    OnSetCursor很不好用的,如shines说,重载onmousemove函数获得坐标,引入一个辅助变量记录原来状态可判断鼠标移动出/进button,用不同的参数调用::setcursor()。
    (WM_MOUSEMOVE 
    fwKeys = wParam;        // key flags 
    xPos = LOWORD(lParam);  // horizontal position of cursor 
    yPos = HIWORD(lParam);  // vertical position of cursor )