代码如下BOOL CTVMDlg::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message) 
{
// TODO: Add your message handler code here and/or call default
if(m_hcursor)
{
HCURSOR hOld = ::SetCursor(m_hcursor);
}
return CDialog::OnSetCursor(pWnd, nHitTest, message);
}在窗口的构造函数中
m_hcursor = LoadCursorFromFile("Move_Vnd.cur");
但是光标没有改变

解决方案 »

  1.   


    BOOL CTVMDlg::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message) 

    // TODO: Add your message handler code here and/or call default 
    if(m_hcursor) 

    HCURSOR hOld = ::SetCursor(m_hcursor); 
    return TRUE; //直接返回,不调用默认处理

    return CDialog::OnSetCursor(pWnd, nHitTest, message); 
    }
      

  2.   

    直接return TRUE,表示光标已经设置
    不要return CDialog::OnSetCursor(pWnd, nHitTest, message); 
    否则光标会被CDialog::OnSetCursor()再设回去编程默认的。
      

  3.   

    是光标(插入符)还是鼠标
    ::SetCaretPos
      

  4.   

    3楼的已经说得很清楚了,
    当然如果你想在某个控件上使用光标的话可以:
    BOOL CTVMDlg::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message) 

    // TODO: Add your message handler code here and/or call default 
    if(m_hcursor) 

    if(pWnd==GetDlgItem(控件ID))
      {
         HCURSOR hOld = ::SetCursor(m_hcursor); 
         return TRUE;
      }

    return CDialog::OnSetCursor(pWnd, nHitTest, message); 
    }