资源简介

实现CListCtrl控件的Item项拖拽效果,本源码对应的博客链接为:http://blog.csdn.net/d704791892/article/details/22600075

资源截图

代码片段和文件信息

// DragListCtrl.cpp : 实现文件
//

#include “stdafx.h“
#include “DragListCtrlDemo.h“
#include “DragListCtrl.h“


// CDragListCtrl

IMPLEMENT_DYNAMIC(CDragListCtrl CListCtrl)

CDragListCtrl::CDragListCtrl()
: m_nSelItem(-1)
 m_bDragging(FALSE)
 m_pDragImageList(NULL)
{

}

CDragListCtrl::~CDragListCtrl()
{
if (m_pDragImageList)
{
delete m_pDragImageList;
m_pDragImageList = NULL;
}
}


BEGIN_MESSAGE_MAP(CDragListCtrl CListCtrl)
ON_NOTIFY_REFLECT(LVN_BEGINDRAG &CDragListCtrl::OnLvnBegindrag)
ON_WM_LBUTTONUP()
ON_WM_MOUSEMOVE()
END_MESSAGE_MAP()



// CDragListCtrl 消息处理程序



void CDragListCtrl::OnLvnBegindrag(NMHDR *pNMHDR LRESULT *pResult)
{
LPNMLISTVIEW pNMLV = reinterpret_cast(pNMHDR);
// TODO: 在此添加控件通知处理程序代码
*pResult = 0;

int count = GetSelectedCount();
if (1 != count)
return;

POSITION pos = GetFirstSelectedItemPosition();
if (NULL == pos)
return;

m_nSelItem = GetNextSelectedItem(pos);

if (-1 == m_nSelItem)
return;

CPoint pt = pNMLV->ptAction;
m_pDragImageList = CreateDragImage(m_nSelItem &pt);
if (NULL == m_pDragImageList)
return;

m_bDragging = TRUE;
m_pDragImageList->BeginDrag(0 CPoint(8 8));
ClientToScreen(&pt);
CRect rt;
GetParent()->GetWindowRect(&rt);
pt.x -= rt.left;
pt.y -= rt.top;
m_pDragImageList->DragEnter(GetParent() pt);
SetCapture();
}

void CDragListCtrl::OnLButtonUp(UINT nFlags CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
if (m_bDragging)
{
ReleaseCapture();
m_bDragging = FALSE;
//m_nSelItem = -1;
m_pDragImageList->DragLeave(GetParent());
m_pDragImageList->EndDrag();
m_pDragImageList->DeleteImageList();

delete m_pDragImageList;
m_pDragImageList = NULL;
}

CListCtrl::OnLButtonUp(nFlags point);
}

void CDragListCtrl::onmousemove(UINT nFlags CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
if (m_bDragging)
{
CPoint pt = point;
ClientToScreen(&pt);

CRect rt;
GetParent()->GetWindowRect(&rt);
pt.x -= rt.left;
pt.y -= rt.top;
m_pDragImageList->DragMove(pt);
}

CListCtrl::onmousemove(nFlags point);
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       2226  2014-03-30 18:58  DragListCtrlDemo\DragListCtrlDemo\DragListCtrl.cpp

     文件        534  2014-03-30 19:18  DragListCtrlDemo\DragListCtrlDemo\DragListCtrl.h

     文件     105232  2014-03-30 16:23  DragListCtrlDemo\DragListCtrlDemo\DragListCtrlDemo.aps

     文件       1783  2014-03-30 15:21  DragListCtrlDemo\DragListCtrlDemo\DragListCtrlDemo.cpp

     文件        505  2014-03-30 15:21  DragListCtrlDemo\DragListCtrlDemo\DragListCtrlDemo.h

     文件       5318  2014-03-30 16:23  DragListCtrlDemo\DragListCtrlDemo\DragListCtrlDemo.rc

     文件       5706  2014-03-30 15:29  DragListCtrlDemo\DragListCtrlDemo\DragListCtrlDemo.vcproj

     文件       3965  2014-03-30 17:41  DragListCtrlDemo\DragListCtrlDemo\DragListCtrlDemoDlg.cpp

     文件        827  2014-03-30 16:32  DragListCtrlDemo\DragListCtrlDemo\DragListCtrlDemoDlg.h

     文件       3031  2014-03-30 15:21  DragListCtrlDemo\DragListCtrlDemo\ReadMe.txt

     文件      67777  2007-11-28 16:21  DragListCtrlDemo\DragListCtrlDemo\res\DragListCtrlDemo.ico

     文件        372  2014-03-30 15:21  DragListCtrlDemo\DragListCtrlDemo\res\DragListCtrlDemo.rc2

     文件        734  2014-03-30 16:23  DragListCtrlDemo\DragListCtrlDemo\resource.h

     文件        149  2014-03-30 15:21  DragListCtrlDemo\DragListCtrlDemo\stdafx.cpp

     文件       1854  2014-03-30 15:21  DragListCtrlDemo\DragListCtrlDemo\stdafx.h

     文件       1030  2014-03-30 15:21  DragListCtrlDemo\DragListCtrlDemo\targetver.h

     文件        914  2014-03-30 15:21  DragListCtrlDemo\DragListCtrlDemo.sln

    ..A..H.     13824  2014-03-30 19:21  DragListCtrlDemo\DragListCtrlDemo.suo

     目录          0  2014-03-30 19:18  DragListCtrlDemo\DragListCtrlDemo\res

     目录          0  2014-03-30 19:22  DragListCtrlDemo\DragListCtrlDemo

     目录          0  2014-03-30 19:21  DragListCtrlDemo

----------- ---------  ---------- -----  ----

               215781                    21


评论

共有 条评论