void CMyListCtrl::OnMouseMove(UINT nFlags, CPoint point)
{
  ::SetCursor(AfxGetApp()->LoadCursor(IDC_HAND));
}

解决方案 »

  1.   

    在OnMouseMove里设置光标啊? 这样要响应多少次啊?
    看看有没有这个消息: OnSetCursor()
      

  2.   

    重载OnSetCursor()
    OnMouseMove只要移动就会响应
      

  3.   

    是的,应该在CListCtrl::OnSetCursor 中重载这个设置光标的函数,还有一点非常值得注意的地方就是:BOOL CMyListCtrl::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message) 
    {
    // TODO: Add your message handler code here and/or call default
    ::SetCursor(LoadCursor(NULL, IDC_HAND));
    return TRUE;
             
             // 如果自定义光标,下面的必须去掉,否则,系统按照自定义的光标进行重绘,
             // 设置不成功
             // return CListCtrl::OnSetCursor(pWnd, nHitTest, message);
    }
      

  4.   

    还有一个问题就是: 如果我要设置在当鼠标移动到控件 CListCtrl 的第三行的时候改变光标的形状,我应该在什么地方进行设置判断? 大家看看我这样设置有什么问题:// 当当前ITEM 改变时发送消息,通知改变鼠标的光标
    void CMyListCtrl::OnItemchanged(NMHDR* pNMHDR, LRESULT* pResult)
    {
             NM_LISTVIEW* pNMListView = (NM_LISTVIEW*) pNMHDR;         int nRow = pNMListView->iItem; if((nRow == 2)||(nRow == 3))
    {
                      // 发送消息,通知光标的重新设置
                      // 这里不知道怎么发送消息? message 参数不能为1吧?????
    PostMessage(WM_SETCURSOR,0,1);
    }         *pResult = 0;
    }// 设置光标
    BOOL CMyListCtrl::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message) 
    {
    // TODO: Add your message handler code here and/or call default
    if(message == 1)
             {
                ::SetCursor(LoadCursor(NULL, IDC_HAND));
       return TRUE;
             }
             
             // 如果自定义光标,下面的必须去掉,否则,系统按照自定义的光标进行重绘,
             // 设置不成功
             return CListCtrl::OnSetCursor(pWnd, nHitTest, message);
    }
      

  5.   

    oyljerry(☆勇敢的心☆-Paper Reviewing) 重载OnSetCursor()
    OnMouseMove只要移动就会响应
    --------------------------------------------但是 OnSetCursor 不能自己主动调用啊,它需要外部发送 WM_SETCURSOR 它才能进行光标的重新设置调用.关键就是怎么捕捉鼠标移动到第2列、第3列的问题了。
      

  6.   

    OnSetCursor会自动被调用的,光标的显示抖动的很厉害的原因是在OnSetCursor里系统会自动设置默认的光标。把return CListCtrl::OnSetCursor(pWnd, nHitTest, message);
    去掉就好了
      

  7.   

    ::SetCursor(::LoadCursor (::AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_BMP_MOUSE)));
      

  8.   

    另外//return CListCtrl::OnSetCursor(pWnd, nHitTest, message);
      

  9.   

    应该在OnSetCursor 里面设置光标,而不应该在OnMouseMove里面设置,这样可以避免抖动。