为什么我用下面的代码后,虽然能显示沙漏,但鼠标一动又变回去了呢?
HCURSOR hCursor = ::AfxGetApp()->LoadCursor(IDC_WAIT);
m_hOldCursor = ::SetCursor(hCursor);

解决方案 »

  1.   

    局部完成,漏斗就没了。你可以申请HCURSOR为全局
    HCURSOR hCursor = ::AfxGetApp()->LoadCursor(IDC_WAIT);
    m_hOldCursor = ::SetCursor(hCursor);
      

  2.   

    ......
    BeginWaitCursor();
    //do something
    EndWaitCursor();
    ......
      

  3.   

    MSDN example:
    BOOL CMyView::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)
          {
                if ( m_ChangeCursor )
                  {
                      ::SetCursor(AfxGetApp()->LoadStandardCursor(IDC_WAIT));
                      return TRUE;
                  }            return CView::OnSetCursor(pWnd, nHitTest, message);
          } 
    for more,see 
    HOWTO: Change the Mouse Pointer for a Window in MFC 
    ID: Q131991
      

  4.   

    那是你只改变了当前位置的鼠标形状,你一移动就响应onmousemove事件,他不满足条件
    当然要变回去了。如果你想在某一范围改变鼠标形状,可以在mousemove里写代码判断,
    当point  在你所顶的范围时就
    HCURSOR hCursor = ::AfxGetApp()->LoadCursor(IDC_WAIT);
    m_hOldCursor = ::SetCursor(hCursor);