📄 droptreectrl.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 + -