CTreeCtrl的拖拽功能

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

[MFC编程]一个具有拖拽功能的TreeCtrl

2011-05-07 22:37:20| 分类:MFC编程|举报|字号订阅

#if !defined(AFX_DRAGTREE_H__3015F03F_045E_4531_A436_E2A890F2 3540__INCLUDED_)

#define

AFX_DRAGTREE_H__3015F03F_045E_4531_A436_E2A890F23540__INCL UDED_

#if _MSC_VER > 1000

#pragma once

#endif // _MSC_VER > 1000

// DragTree.h : header file

//

/////////////////////////////////////////////////////////////////////////////

// CDragTree window

class CDragTree : public CTreeCtrl

{

// Construction

public:

CDragTree();

CImageList* m_pDragImages; //拖动的图像列表

BOOL m_bDrag; //是否进行拖动

HTREEITEM m_hBeginDrag; //拖动的起点

// Attributes

public:

// Operations

public:

// Overrides

// ClassWizard generated virtual function overrides

//{{AFX_VIRTUAL(CDragTree)

//}}AFX_VIRTUAL

// Implementation

public:

void CopyNodes(HTREEITEM hDesItem, HTREEITEM hSrcItem);

virtual ~CDragTree();

// Generated message map functions

protected:

//{{AFX_MSG(CDragTree)

afx_msg void OnBegindrag(NMHDR* pNMHDR, LRESULT* pResult);

afx_msg void OnMouseMove(UINT nFlags, CPoint point);

afx_msg void OnLButtonUp(UINT nFlags, CPoint point);

//}}AFX_MSG

DECLARE_MESSAGE_MAP()

};

/////////////////////////////////////////////////////////////////////////////

//{{AFX_INSERT_LOCATION}}

// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif

// !defined(AFX_DRAGTREE_H__3015F03F_045E_4531_A436_E2A890F23 540__INCLUDED_)

// DragTree.cpp : implementation file

//

#include "stdafx.h"

#include "DragTreeItem.h"

#include "DragTree.h"

#ifdef _DEBUG

#define new DEBUG_NEW

#undef THIS_FILE

static char THIS_FILE[] = __FILE__;

#endif

/////////////////////////////////////////////////////////////////////////////

// CDragTree

CDragTree::CDragTree()

{

m_pDragImages = NULL;

m_bDrag = FALSE;

m_hBeginDrag = NULL;

}

CDragTree::~CDragTree()

{

}

BEGIN_MESSAGE_MAP(CDragTree, CTreeCtrl)

//{{AFX_MSG_MAP(CDragTree)

ON_NOTIFY_REFLECT(TVN_BEGINDRAG, OnBegindrag)

ON_WM_MOUSEMOVE()

ON_WM_LBUTTONUP()

//}}AFX_MSG_MAP

END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////

// CDragTree message handlers

void CDragTree::OnBegindrag(NMHDR* pNMHDR, LRESULT* pResult) {

NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;

HTREEITEM hItem = pNMTreeView->itemNew.hItem; //获取开始拖动的节点 if (hItem==GetRootItem()) //不允许拖动根节点

相关文档
最新文档