1.::SetCursor(AfxGetApp()->LoadStandardCursor(IDC_WAIT));2.WinAPI ::SetCursor(::LoadCursor(NULL,IDC_WAIT));

解决方案 »

  1.   

    比如:
    CYourView::SomeLongTimeOperation()
    {
        CWaitCursor wait;
        ...... // 从这里开始到该函数结束,沙漏光标一直显示
    }如果,要跨函数,只能调用API了:
    设置处:
    hCursor = SetCursor(LoadCursor(NULL, IDC_WAIT));
    //保存好hCursor,可以是全局量
    设置回来:
    SetCursor(hCursor);
      

  2.   

    自定义的光标:
    SetCursor(LoadCursor(NULL, IDC_YOURICON));
      

  3.   

    我告诉你吧,你需要捕获WM_SETCURSOR消息,也就是在OnSetCursor中设置光标形状。
    一般的做法是,在OnSetCursor中先做一个HitTest,然后根据光标的位置,设置成合适的形状。
      

  4.   

    能说具体点吗?
    我发现在我setcursor之后,只要mousemove程序会还原原来的光标,所以我把
    setcursor放在了mousemove事件里
    我查了一下MSDN,他的解释是
    make sure the class cursor for the specified window's class is set to NULL. If the class cursor is not NULL, the system restores the class cursor each time the mouse is moved. 
    可见他一直在恢复原来的光标,那么我怎样改变初始光标为NULL呢?
      

  5.   

    不是SetCursor(),而是处理WM_SETCURSOR事件的OnSetCursor()函数.
    在OnSetCursor()中你用SetCursor()设置光标
      

  6.   

    没用啊,我的意思是,无论在什么函数里设了Cursor,只要鼠标移动,就会重新恢复原先的cursor,除非原cursor为NULL,这是MFC默认的,所以想请教一下,怎样在CWinAPP的初始化中改变m_pMainframe的Cursor
      

  7.   

    在PreCreateWindow()
         return 之前
    添加
    cs.lpszClass=AfxRegisterWndClass(CS_HREDRAW,AfxGetApp()->LoadStandardCursor(IDC_UPARROW),
    ::CreateSolidBrush(RGB(255,122,0))); 看看什么效果