选中LIST表的某一行,进行拖动,在拖带的过程中使鼠标产生,鼠标的自定义形状 <待高手解决> 在对话框中,有一列表,LIST,,,,, 选中LIST表的某一行,进行拖动,在拖带的过程中使鼠标产生,鼠标的自定义形状,, 请高手赐教... 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 下面的例子对你也许有些帮助: http://codeguru.earthweb.com/listview/DragDropListCtrl.html 响应List的OnSetCursor事件,设置需要的自定义光标。 查了一遍 响应List的事件就是没有OnSetCursor()函数,,,,,,,,,,,, 你可以:1、重新定义自己的CListBox类,重写OnSetCursor函数;2、在CListBox的父窗口中处理OnSetCursor,判断当前鼠标是否在CListBox中。再结合拖动的具体情况,设置自定义光标。 /////////////////////////我的是list contrl控件,不是ListBox除了以上的办法,还有更加简单的办法吗?? CListCtrl和CListBox一样处理。这两种方法都不复杂啊,呵呵。 http://www.codeguru.com/cpp/controls/listview/dragdrop/找个demo参考一下 有一种简单的方法来实现,代码可以这样写: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);} 楼主的方法就是我想要的效果,,,,我之前也是这么做的,但是没有成功,我把SetCursor(AfxGetApp()->LoadCursor(IDC_XXXX)); 放到了::OnBegindragList1(NMHDR* pNMHDR, LRESULT* pResult) 里去了,没有用到SetCapture();函数,所以没有成功,贴字先不结,让更多的人学习,,,,谢谢11楼!! 请指点,MFC中Radio的用法。 MFC直角坐标系下画曲线时遇到的问题——删除曲线 在dialog.cpp的文件中没有找到ONOK()这个函数 因位图太大,CreateBitmap()无法建立的问题 WM_DRAWITEM请教 XP下,能跨进程发送消息吗? 解决使用期限到期的问题? 自动化服务器如何进行单步调试?? 虚拟键盘模仿器 请问:BEGIN_MESSAGE_MAP(CMenuView, CView)和END_MESSAGE_MAP() 具体是什么函数?有什么作用? vc6.0从程序中自动导出文件问题!详细请见如下! OnChange里面是不是不能setwindowtext?
http://codeguru.earthweb.com/listview/DragDropListCtrl.html
查了一遍 响应List的事件就是没有OnSetCursor()函数,,,,,,,,,,,,
1、重新定义自己的CListBox类,重写OnSetCursor函数;
2、在CListBox的父窗口中处理OnSetCursor,判断当前鼠标是否在CListBox中。
再结合拖动的具体情况,设置自定义光标。
/////////////////////////我的是list contrl控件,不是ListBox除了以上的办法,还有更加简单的办法吗??
这两种方法都不复杂啊,呵呵。
找个demo参考一下
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);
}
楼主的方法就是我想要的效果,,,,我之前也是这么做的,但是没有成功,我把SetCursor(AfxGetApp()->LoadCursor(IDC_XXXX)); 放到了::OnBegindragList1(NMHDR* pNMHDR, LRESULT* pResult) 里去了,没有用到SetCapture();
函数,所以没有成功,贴字先不结,让更多的人学习,,,,谢谢11楼!!