亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? xtreectrl.cpp

?? ctreectrl控件擴展類
?? CPP
字號:
// XTreeCtrl.cpp : implementation file
//

#include "stdafx.h"
#include "DragTree.h"
#include "XTreeCtrl.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

#define   DRAG_DELAY   60
/////////////////////////////////////////////////////////////////////////////
// CXTreeCtrl

CXTreeCtrl::CXTreeCtrl()
{
	m_bDragging = false;
}

CXTreeCtrl::~CXTreeCtrl()
{
}


BEGIN_MESSAGE_MAP(CXTreeCtrl, CTreeCtrl)
	//{{AFX_MSG_MAP(CXTreeCtrl)
	ON_NOTIFY_REFLECT(TVN_BEGINDRAG, OnBegindrag)
	ON_WM_MOUSEMOVE()
	ON_WM_LBUTTONUP()
	ON_WM_LBUTTONDOWN()
	ON_WM_TIMER()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CXTreeCtrl message handlers

void CXTreeCtrl::OnBegindrag(NMHDR* pNMHDR, LRESULT* pResult) 
{
	NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
	*pResult = 0;

	//如果是無意拖曳,則放棄操作
	if( (GetTickCount() - m_dwDragStart) < DRAG_DELAY )
		return;

	m_hItemDragS = pNMTreeView->itemNew.hItem;
	m_hItemDragD = NULL;

	//得到用于拖動時顯示的圖象列表
	m_pDragImage = CreateDragImage( m_hItemDragS );
	if( !m_pDragImage )
		return;

	m_bDragging = true;
	m_pDragImage->BeginDrag ( 0,CPoint(8,8) );
	CPoint  pt = pNMTreeView->ptDrag;
	ClientToScreen( &pt );
	m_pDragImage->DragEnter ( this,pt );  //"this"將拖曳動作限制在該窗口
	SetCapture();

	m_nScrollTimerID = SetTimer( 2,40,NULL );
}

void CXTreeCtrl::OnMouseMove(UINT nFlags, CPoint point) 
{
	HTREEITEM  hItem;
	UINT       flags;

	//檢測鼠標敏感定時器是否存在,如果存在則刪除,刪除后再定時
	if( m_nHoverTimerID )
	{
		KillTimer( m_nHoverTimerID );
		m_nHoverTimerID = 0;
	}
	m_nHoverTimerID = SetTimer( 1,800,NULL );  //定時為 0.8 秒則自動展開
	m_HoverPoint = point;

	if( m_bDragging )
	{
		CPoint  pt = point;
		CImageList::DragMove( pt );

		//鼠標經過時高亮顯示
		CImageList::DragShowNolock( false );  //避免鼠標經過時留下難看的痕跡
		if( (hItem = HitTest(point,&flags)) != NULL )
		{
			SelectDropTarget( hItem );
			m_hItemDragD = hItem;
		}
		CImageList::DragShowNolock( true );

		//當條目被拖曳到左邊緣時,將條目放在根下
		CRect  rect;
		GetClientRect( &rect );
		if( point.x < rect.left + 20 )
			m_hItemDragD = NULL;
	}

	CTreeCtrl::OnMouseMove(nFlags, point);
}

void CXTreeCtrl::OnLButtonUp(UINT nFlags, CPoint point) 
{
	CTreeCtrl::OnLButtonUp(nFlags, point);

	if( m_bDragging )
	{
		m_bDragging = FALSE;
		CImageList::DragLeave( this );
		CImageList::EndDrag();
		ReleaseCapture();
		delete m_pDragImage;

		SelectDropTarget( NULL );
		
		if( m_hItemDragS == m_hItemDragD )
		{
			KillTimer( m_nScrollTimerID );
			return;
		}

		Expand( m_hItemDragD,TVE_EXPAND );

		HTREEITEM  htiParent = m_hItemDragD;
		while( (htiParent = GetParentItem(htiParent)) != NULL )
		{
			if( htiParent == m_hItemDragS )
			{
				HTREEITEM  htiNewTemp = CopyBranch( m_hItemDragS,NULL,TVI_LAST );
				HTREEITEM  htiNew = CopyBranch( htiNewTemp,m_hItemDragD,TVI_LAST );
				DeleteItem( htiNewTemp );
				SelectItem( htiNew );
				KillTimer( m_nScrollTimerID );
				return;
			}
		}

		HTREEITEM  htiNew = CopyBranch( m_hItemDragS,m_hItemDragD,TVI_LAST );
		DeleteItem( m_hItemDragS );
		SelectItem( htiNew );
		KillTimer( m_nScrollTimerID );
	}
}

//拷貝條目
HTREEITEM CXTreeCtrl::CopyItem(HTREEITEM hItem, HTREEITEM htiNewParent, HTREEITEM htiAfter)
{
	TV_INSERTSTRUCT  tvstruct;
	HTREEITEM        hNewItem;
	CString          sText;

	//得到源條目的信息
	tvstruct.item.hItem = hItem;
	tvstruct.item.mask  = TVIF_CHILDREN|TVIF_HANDLE|TVIF_IMAGE|TVIF_SELECTEDIMAGE;
	GetItem( &tvstruct.item );
	sText = GetItemText( hItem );
	tvstruct.item.cchTextMax = sText.GetLength ();
	tvstruct.item.pszText    = sText.LockBuffer ();

	//將條目插入到合適的位置
	tvstruct.hParent         = htiNewParent;
	tvstruct.hInsertAfter    = htiAfter;
	tvstruct.item.mask       = TVIF_IMAGE|TVIF_SELECTEDIMAGE|TVIF_TEXT;
	hNewItem = InsertItem( &tvstruct );
	sText.ReleaseBuffer ();

	//限制拷貝條目數據和條目狀態
	SetItemData( hNewItem,GetItemData(hItem) );
	SetItemState( hNewItem,GetItemState(hItem,TVIS_STATEIMAGEMASK),TVIS_STATEIMAGEMASK);

	return hNewItem;
}

//拷貝分支
HTREEITEM CXTreeCtrl::CopyBranch(HTREEITEM htiBranch, HTREEITEM htiNewParent, HTREEITEM htiAfter)
{
	HTREEITEM  hChild;
	HTREEITEM  hNewItem = CopyItem( htiBranch,htiNewParent,htiAfter );
	hChild = GetChildItem( htiBranch );

	while( hChild != NULL )
	{
		CopyBranch( hChild,hNewItem,htiAfter );
		hChild = GetNextSiblingItem( hChild );
	}

	return  hNewItem;
}

void CXTreeCtrl::OnLButtonDown(UINT nFlags, CPoint point) 
{
	//處理無意拖曳
	m_dwDragStart = GetTickCount();
	
	CTreeCtrl::OnLButtonDown(nFlags, point);
}

void CXTreeCtrl::OnTimer(UINT nIDEvent) 
{
	//鼠標敏感節點
	if( nIDEvent == m_nHoverTimerID )
	{
		KillTimer( m_nHoverTimerID );
		m_nHoverTimerID = 0;
		HTREEITEM  trItem = 0;
		UINT  uFlag = 0;
		trItem = HitTest( m_HoverPoint,&uFlag );
		if( trItem && m_bDragging )
		{
			SelectItem( trItem );
			Expand( trItem,TVE_EXPAND );
		}
	}
	//處理拖曳過程中的滾動問題
	else if( nIDEvent == m_nScrollTimerID )
	{
		m_TimerTicks++;
		CPoint  pt;
		GetCursorPos( &pt );
		CRect  rect;
		GetClientRect( &rect );
		ClientToScreen( &rect );

		HTREEITEM  hItem = GetFirstVisibleItem();
		
		if( pt.y < rect.top +10 )
		{
			//向上滾動
			int  slowscroll = 6 - (rect.top + 10 - pt.y )/20;
			if( 0 == (m_TimerTicks % ((slowscroll > 0) ? slowscroll : 1)) )
			{
				CImageList::DragShowNolock ( false );
				SendMessage( WM_VSCROLL,SB_LINEUP );
				SelectDropTarget( hItem );
				m_hItemDragD = hItem;
				CImageList::DragShowNolock ( true );
			}
		}
		else if( pt.y > rect.bottom - 10 )
		{
			//向下滾動
			int  slowscroll = 6 - (pt.y - rect.bottom + 10)/20;
			if( 0 == (m_TimerTicks % ((slowscroll > 0) ? slowscroll : 1)) )
			{
				CImageList::DragShowNolock ( false );
				SendMessage( WM_VSCROLL,SB_LINEDOWN );
				int  nCount = GetVisibleCount();
				for( int i=0 ; i<nCount-1 ; i++ )
					hItem = GetNextVisibleItem( hItem );
				if( hItem )
					SelectDropTarget( hItem );
				m_hItemDragD = hItem;
				CImageList::DragShowNolock ( true );
			}
		}
	}
	else
		CTreeCtrl::OnTimer(nIDEvent);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人亚洲综合a∨婷婷| 欧美系列亚洲系列| 国产激情精品久久久第一区二区 | 一本到高清视频免费精品| 丰满白嫩尤物一区二区| 成人一区在线观看| 99久久99久久综合| 91麻豆精品在线观看| 色视频欧美一区二区三区| 在线观看不卡一区| 欧美久久久一区| 精品国产网站在线观看| 国产精品视频线看| 国产精品美女一区二区在线观看| 亚洲人成网站在线| 亚洲不卡在线观看| 麻豆久久一区二区| 91麻豆精品一区二区三区| 欧美日本在线播放| 久久色中文字幕| 亚洲精品乱码久久久久久久久 | 久久尤物电影视频在线观看| 久久精品日产第一区二区三区高清版| 国产欧美日韩卡一| 日韩av在线免费观看不卡| av中文字幕一区| 日韩一级成人av| 亚洲蜜臀av乱码久久精品蜜桃| 毛片av一区二区| 欧美日韩国产一二三| 亚洲欧美综合在线精品| 国产精品资源在线观看| 欧美电视剧在线观看完整版| 日韩美女啊v在线免费观看| 久久国产精品一区二区| 欧美精品一二三| 亚洲精品自拍动漫在线| 国产黄人亚洲片| 宅男在线国产精品| 一区二区三区日韩| 成人97人人超碰人人99| 久久久久久久久久久久电影| 亚洲国产综合在线| 欧美男女性生活在线直播观看| 亚洲色图19p| 成人免费视频app| 中文无字幕一区二区三区| 国产成a人无v码亚洲福利| 国产亚洲视频系列| 成人免费观看视频| 中文字幕亚洲区| 一本一本久久a久久精品综合麻豆| 国产精品久久久久精k8| 日本韩国欧美在线| 午夜国产精品一区| 欧美人伦禁忌dvd放荡欲情| 日本伊人精品一区二区三区观看方式| 欧美日韩国产成人在线91| 日韩中文字幕一区二区三区| 日韩欧美在线1卡| 国产成人在线观看免费网站| 国产精品久久久久一区二区三区共| 国产91精品入口| 一区二区三区资源| 日韩一级黄色大片| 不卡一区二区三区四区| 亚洲成人av在线电影| 精品免费一区二区三区| 国产盗摄一区二区三区| 一区二区三区四区亚洲| 日韩久久免费av| 91丝袜美女网| 精品一区二区三区在线视频| 亚洲人123区| 精品久久久久久久久久久院品网 | 国产在线视视频有精品| 一区二区三区日韩| 久久精品日韩一区二区三区| 欧美色国产精品| 成人午夜看片网址| 美女免费视频一区二区| 一区二区三区av电影| 26uuu亚洲| 色婷婷精品久久二区二区蜜臂av| 精品一区二区三区日韩| 亚洲成精国产精品女| 国产精品久久久久久久久动漫| 日韩一级大片在线| 欧美电影一区二区| 91国偷自产一区二区三区成为亚洲经典| 蜜桃久久久久久久| 亚洲国产毛片aaaaa无费看| 综合久久久久久| 国产精品久久久久aaaa樱花| 国产亚洲一区二区三区在线观看| 制服视频三区第一页精品| 欧美日韩在线不卡| 欧洲视频一区二区| 欧美日韩国产综合一区二区| 欧美专区亚洲专区| 欧美性视频一区二区三区| 在线视频国内一区二区| 91国偷自产一区二区三区观看| 91视频观看视频| aaa亚洲精品一二三区| eeuss鲁一区二区三区| 91在线观看视频| 色菇凉天天综合网| 欧美日韩久久久一区| 欧美一区二区三区免费大片| 欧美一卡2卡3卡4卡| 欧美一区二区三区电影| 欧美一二三区精品| 久久精品在这里| 一区二区三区蜜桃网| 日韩二区三区在线观看| 国产v综合v亚洲欧| 在线视频国内自拍亚洲视频| 9191成人精品久久| 久久久亚洲高清| 一区二区三区日韩精品视频| 精品亚洲免费视频| 9i看片成人免费高清| 精品日韩一区二区三区| 一区二区三区毛片| 精品在线你懂的| 欧美三级日韩在线| 国产无人区一区二区三区| 亚洲午夜一区二区| 国产乱码一区二区三区| 色偷偷久久人人79超碰人人澡| 欧美成人在线直播| 亚洲一级在线观看| 成人手机在线视频| 7777精品伊人久久久大香线蕉经典版下载 | 欧美亚洲国产一区二区三区va| 久久久久久久免费视频了| 午夜婷婷国产麻豆精品| 国产91高潮流白浆在线麻豆 | 亚洲成人av电影| 色综合一区二区| 亚洲品质自拍视频| 国产福利一区二区三区视频在线| 一本色道**综合亚洲精品蜜桃冫| 久久免费精品国产久精品久久久久| 婷婷六月综合网| 欧美日韩综合不卡| 亚洲精品免费一二三区| 色素色在线综合| 亚洲高清免费观看| 欧美日韩精品一区二区三区 | 国产风韵犹存在线视精品| 欧美精品一区二区三区在线 | 久久九九久精品国产免费直播| 日本欧美在线观看| 久久综合久久综合亚洲| 国模冰冰炮一区二区| 精品国一区二区三区| 国产精品888| 亚洲美女屁股眼交| 欧美精品日日鲁夜夜添| 天堂影院一区二区| 精品乱码亚洲一区二区不卡| 国产成人亚洲综合a∨猫咪| 亚洲三级电影网站| 在线观看日韩电影| 蜜桃视频一区二区三区在线观看| 欧美变态凌虐bdsm| 99精品视频一区二区| 亚洲香肠在线观看| 久久久久久久网| 在线免费不卡电影| 狠狠久久亚洲欧美| 伊人一区二区三区| 精品久久久久香蕉网| 色综合久久六月婷婷中文字幕| 日本怡春院一区二区| 中文字幕久久午夜不卡| 欧美性猛片aaaaaaa做受| 久久99精品国产| 自拍偷拍欧美激情| 精品精品国产高清一毛片一天堂| 国产馆精品极品| 日本aⅴ精品一区二区三区 | 精品91自产拍在线观看一区| 91在线porny国产在线看| 日韩在线播放一区二区| 国产精品国产三级国产普通话三级 | 久久久另类综合| 欧美精品久久99久久在免费线| 色狠狠一区二区三区香蕉| 全国精品久久少妇| 亚洲电影你懂得| 尤物av一区二区| 中文字幕在线视频一区| 日韩一区二区三区视频在线| 在线观看国产91| 色综合婷婷久久| 在线欧美一区二区| 成人精品视频一区二区三区尤物|