在对话框中,有一列表,LIST,,,,, 选中LIST表的某一行,进行拖动,在拖带的过程中使鼠标产生,鼠标的自定义形状,, 请高手赐教...

解决方案 »

  1.   

    下面的例子对你也许有些帮助:   
      http://codeguru.earthweb.com/listview/DragDropListCtrl.html
      

  2.   

    响应List的OnSetCursor事件,设置需要的自定义光标。
      

  3.   


    查了一遍 响应List的事件就是没有OnSetCursor()函数,,,,,,,,,,,,
      

  4.   

    你可以:
    1、重新定义自己的CListBox类,重写OnSetCursor函数;
    2、在CListBox的父窗口中处理OnSetCursor,判断当前鼠标是否在CListBox中。
    再结合拖动的具体情况,设置自定义光标。
      

  5.   


    /////////////////////////我的是list contrl控件,不是ListBox除了以上的办法,还有更加简单的办法吗??
      

  6.   

    CListCtrl和CListBox一样处理。
    这两种方法都不复杂啊,呵呵。
      

  7.   

    http://www.codeguru.com/cpp/controls/listview/dragdrop/
    找个demo参考一下
      

  8.   

    有一种简单的方法来实现,代码可以这样写:1、对话框类中加一个protected的BOOL变量m_bIsDraging,表征为是否处于拖动状态,并初始化为FALSE。
    2、响应CListCtrl的LVN_BEGINDRAG事件,将m_bIsDraging置为TRUE,同时将鼠标SetCapture。void CCursorOnDragDlg::OnBegindragList1(NMHDR* pNMHDR, LRESULT* pResult) 
    {
        NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
        // TODO: Add your control notification handler code here
        SetCapture();
        m_bIsDraging = TRUE;    *pResult = 0;
    }3、处理对话框的WM_MOUSEMOVE消息,判断当处于拖动状态时,加载自定义的光标。void CCursorOnDragDlg::OnMouseMove(UINT nFlags, CPoint point) 
    {
        // TODO: Add your message handler code here and/or call default
        if (m_bIsDraging)
        {
            SetCursor(AfxGetApp()->LoadCursor(IDC_XXXX));   // IDC_XXXX为自定义光标
        }
        else
        {
      SetCursor(AfxGetApp()->LoadStandardCursor(IDC_ARROW));
        }

        CDialog::OnMouseMove(nFlags, point);
    }4、松开鼠标左键时,将m_bIsDraging置为FALSE,同时释放鼠标capture。void CCursorOnDragDlg::OnLButtonUp(UINT nFlags, CPoint point) 
    {
        // TODO: Add your message handler code here and/or call default
        m_bIsDraging = FALSE;
        ReleaseCapture();    CDialog::OnLButtonUp(nFlags, point);
    }
      

  9.   


    楼主的方法就是我想要的效果,,,,我之前也是这么做的,但是没有成功,我把SetCursor(AfxGetApp()->LoadCursor(IDC_XXXX));   放到了::OnBegindragList1(NMHDR* pNMHDR, LRESULT* pResult) 里去了,没有用到SetCapture();
    函数,所以没有成功,贴字先不结,让更多的人学习,,,,谢谢11楼!!