关闭

自定义鼠标加载

标签: stylesapi
426人阅读 评论(0) 收藏 举报
有三个方法:    
          1、在CWnd::OnSetCursor()中调用API函数SetCursor()改变光标。    
            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);    
            }    
          2、CWnd::PreCreateWindow()注册自己的窗口类,注册时指定光标。    
            BOOL   CMyView::PreCreateWindow(CREATESTRUCT&   cs)    
            {    
            cs.lpszClass   =   AfxRegisterWndClass(    
            CS_DBLCLKS   |   CS_HREDRAW   |   CS_VREDRAW,   //   use   any   window   styles    
            AfxGetApp()->LoadStandardCursor(IDC_WAIT),    
            (HBRUSH)   (COLOR_WINDOW   +   1));   //   background   brush    
             
            return   CView::PreCreateWindow(cs)    
            }    
          3、某些操作,程序要显示标准的漏斗光标,这时调用CCmdTarget::BeginWaitCursor(),然后调用CmdTarget::EndWaitCursor()恢复光标。    
            void   CMyView::PerformLengthyOperation()    
            {    
            BeginWaitCursor();   //   or   AfxGetApp()->DoWaitCursor(1)    
             
            //...    
             
            EndWaitCursor();   //   or   AfxGetApp()->DoWaitCursor(-1)    
            }    
             
          为了避免用户移动鼠标而触发OnSetCursor,需要::    
            BOOL   CMyView::OnSetCursor(CWnd*   pWnd,   UINT   nHitTest,   UINT   message)    
            {    
            if   (m_ChangeCursor)    
            {    
            RestoreWaitCursor();    
            return   TRUE;    
            }    
             
            return   CView::OnSetCursor(pWnd,   nHitTest,   message);    
            }     
 
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:24183次
    • 积分:497
    • 等级:
    • 排名:千里之外
    • 原创:26篇
    • 转载:0篇
    • 译文:0篇
    • 评论:4条
    文章存档
    最新评论
    vc图像