⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 droptreectrl.cpp

📁 网络硬盘的客户段,网络硬盘的客户段网络硬盘的客户段网络硬盘的客户段
💻 CPP
字号:
// DropTreeCtrl.cpp : 实现文件
//

#include "stdafx.h"
#include "WD070129.h"
#include "DropTreeCtrl.h"


// CDropTreeCtrl

IMPLEMENT_DYNAMIC(CDropTreeCtrl, CTreeCtrl)

CDropTreeCtrl::CDropTreeCtrl()
{

}

CDropTreeCtrl::CDropTreeCtrl(CStringList *pFlieList, CMenu *pMenu)
{
	m_pFlieList = pFlieList;
	m_pMenu = pMenu;
}

CDropTreeCtrl::~CDropTreeCtrl()
{
}


BEGIN_MESSAGE_MAP(CDropTreeCtrl, CTreeCtrl)
//	ON_WM_RBUTTONDOWN()
ON_NOTIFY_REFLECT(NM_RCLICK, &CDropTreeCtrl::OnNMRclick)
ON_COMMAND(ID_MENU_DELETE, &CDropTreeCtrl::OnMenuDelete)
ON_COMMAND(ID_MENU_DOWNLOAD, &CDropTreeCtrl::OnMenuDownload)
ON_WM_DROPFILES()
END_MESSAGE_MAP()



// CDropTreeCtrl 消息处理程序



void CDropTreeCtrl::OnNMRclick(NMHDR *pNMHDR, LRESULT *pResult)
{
	//1.获得菜单弹出位置
	CPoint pt1,pt2;
	GetCursorPos(&pt1);
	pt2 = pt1;
	
    ScreenToClient(&pt1);
	
	//2.获得点击的item
    HTREEITEM RClickItem = NULL;
	RClickItem = HitTest(pt1); 
	
	if(RClickItem == NULL)
		return;
	
	Select(RClickItem, TVGN_CARET);
	//3. 获得索引
	DWORD index;
	index = GetItemData(RClickItem);
	
	//4. 选定当前右键点击Item
	SelectItem(RClickItem);	

	


	HTREEITEM item, parent;
	item = GetSelectedItem();
	parent = item;

	CString strFileName;
	strFileName = GetItemText(item);

	CString strRootPath, strTemp = _T("");

	int i,j;
	GetItemImage(item, i, j);

	while(1)
	{
		strTemp = GetItemText(parent);
		strRootPath = _T("\\") + strTemp + strRootPath;
		parent = GetParentItem(parent);
		if(parent == NULL)
			break;
	}

	if(i == 0)//文件夹
	{
//		::AfxMessageBox("请选择一个上传文件夹!");
		if(strRootPath.Find("共享文件夹") > -1)
		{
			return;
		}
		else
		{
			CMenu* submenu = m_pMenu->GetSubMenu(0);
			submenu->EnableMenuItem(ID_MENU_UPLOAD, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
		}

	
	}
	else if(i == 1)//文件
	{
		if(strRootPath.Find("共享文件夹") > -1)
		{

		}
		else
		{

		}
	}



	// 显示菜单
	m_pMenu->GetSubMenu(0)->TrackPopupMenu( 
		TPM_LEFTALIGN|TPM_LEFTBUTTON|TPM_RIGHTBUTTON,  
		pt2.x, pt2.y, this); 	

	*pResult = 0;
}

void CDropTreeCtrl::OnMenuDelete()
{
	// TODO: 在此添加命令处理程序代码
	GetParent()->SendMessage(WM_DELETEFILE);
}

void CDropTreeCtrl::OnMenuDownload()
{
	// TODO: 在此添加命令处理程序代码
	GetParent()->SendMessage(WM_DOWNLOADFILE);
}

void CDropTreeCtrl::OnDropFiles(HDROP hDropInfo)
{
	// TODO: Add your message handler code here and/or call default
	m_pFlieList->RemoveAll();


	//取得被拖动文件的数目
	int DropCount=DragQueryFile(hDropInfo,-1,NULL,0);

	for(int i=0;i< DropCount;i++)
	{
		//取得第i个拖动文件名所占字节数
		int NameSize=DragQueryFile(hDropInfo,i,NULL,0);
		
		//根据字节数分配缓冲区
		char *pStr;
		pStr = (char*)malloc(NameSize+5);
		memset(pStr, 0, NameSize+5);
		
		//把文件名拷贝到缓冲区
		DragQueryFile(hDropInfo,i,pStr,NameSize+1);
		
		//文件名加入listbox中显示
//		m_Dialog_List.AddString(pName);
		
		//将取得的文件名放入文件名列表中
		m_pFlieList->AddTail(pStr);
/*		//显示
		::AfxMessageBox(pStr);
*/		
		//释放缓冲区
		free(pStr);
	}
	GetParent()->SendMessage(WM_UPLOADFILE);

	CTreeCtrl::OnDropFiles(hDropInfo);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -