我做了一个绘图程序,当选择要绘图时,我想让光标显示为十字,我在online的消息处理函数中是这样定义的:
void CMyView::OnLine() 
{
// TODO: Add your command handler code here
m_type=1;
HCURSOR m_myCursor;
m_myCursor=AfxGetApp()->LoadStandardCursor(IDC_CROSS);
SetCursor(m_myCursor);
}
但运行时光标没有变化,我哪里错了?还有就是当我设置成功为十字后如何恢复光标?

解决方案 »

  1.   

    HCURSOR  m_cursor;   // 当前鼠标光标m_cursor=GetCursor();DestroyCursor(m_cursor);CWinApp* pApp = AfxGetApp();m_cursor = pApp->LoadStandardCursor(IDC_ARROW);  //标准的//m_cursor = pApp->LoadCursor(IDC_MOVE);                 //用户自定义的SetCursor(m_cursor);
      

  2.   

    你在Online中设置一个BOOL变量为TRUE,然后在OnSetCursor中将鼠标形状设置为你想要的
      

  3.   

    响应WM_SETCURSOR消息
    HCURSOR m_hCursor; // 成员变量
    BOOL CXXXView::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message) 
    {
    // TODO: Add your message handler code here and/or call default
    SetCursor(m_hCursor); return TRUE;
    //return CView::OnSetCursor(pWnd, nHitTest, message);
    }
      

  4.   

    你的思想并没有错,只是设置改变光标的位置放错了,如上所说,你可以设计变量,你用的那个m_type就很好,在SetCursor里去设计,m_type不同的值对应不同的光标,也可以在鼠标"动作"里设置,比如说你画图的时候一般是要按下左键才画吧,你就在鼠标左键按下OnLButtonDown里面设置也行,但是在自己添加按钮事件里就不行,至于为什么等待大侠给予回答