有三个方法:
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);
}
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);
}