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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? workspace.cpp

?? 功能: 實(shí)現(xiàn)目錄樹中文件夾
?? CPP
?? 第 1 頁 / 共 2 頁
字號(hào):
{
	if(strPathName.IsEmpty())//如果strPathName為空,則返回
	{ ASSERT(FALSE); return;}

	HTREEITEM hTreeItem = m_pTreeCtrl->GetSelectedItem();//得到當(dāng)前結(jié)點(diǎn)信息
	CFolder* pFolder = (CFolder*)m_pTreeCtrl->GetItemData(hTreeItem);//獲取當(dāng)前結(jié)點(diǎn)數(shù)據(jù)
	if(!pFolder->AddFileName(strPathName))//調(diào)用CFolder中的AddFileName函數(shù)。
     	return	;   //文件沒有增加到m_FileNameArray則返回

	TV_INSERTSTRUCT TreeCtrlItem;//定義TreeCtrlItem
	TreeCtrlItem.hParent = hTreeItem;//父結(jié)點(diǎn)=hTreeItem
	TreeCtrlItem.hInsertAfter = TVI_LAST;//最后一個(gè)結(jié)點(diǎn)
	TreeCtrlItem.item.mask = TVIF_TEXT | TVIF_IMAGE | TVIF_PARAM | TVIF_SELECTEDIMAGE;
//激活上述iImage,iSelectedImage,lParam屬性
	int nCount = strPathName.GetLength() - strPathName.ReverseFind('\\')-1;//求得文件庫路徑字符數(shù)
	CString strFileName = strPathName.Right(nCount);//獲得文件名稱

	TreeCtrlItem.hParent = hTreeItem;//父結(jié)點(diǎn)=hTreeItem
	TreeCtrlItem.item.pszText = strFileName.GetBuffer(strFileName.GetLength());//結(jié)點(diǎn)上得到文件名
	strFileName.ReleaseBuffer();//釋放GetBuffer
	TreeCtrlItem.item.iImage = 2;//選取一個(gè)新建文件圖象
	TreeCtrlItem.item.iSelectedImage = 2;//選中該節(jié)點(diǎn)時(shí)的圖象
	TreeCtrlItem.item.lParam = (LPARAM)pFolder;

	m_pTreeCtrl->InsertItem(&TreeCtrlItem);//插入結(jié)點(diǎn)
	m_pTreeCtrl->Expand(hTreeItem, TVE_EXPAND);//擴(kuò)充列表

	//AfxGetApp()->OpenDocumentFile(strFileName);
}

void CWorkSpace::OnLButtonUp(UINT nFlags, CPoint point) 
{
	TCHAR szFullPath[MAX_PATH];

	int nSize = ::GetModuleFileName(AfxGetInstanceHandle(), szFullPath, MAX_PATH);//獲得應(yīng)用程序的路徑
	if(nSize == 0)
	{
		Invalidate();
		return;	
	}
	CString strPath(szFullPath);
	int n = strPath.ReverseFind( '\\' )+1;
	strPath = strPath.Left(n);//去掉可執(zhí)行文件名
	if(m_hDragItem)//如果拖動(dòng)文件
	{
		UINT uFlag = 0;
		HTREEITEM hTreeItem = m_pTreeCtrl->HitTest(point, &uFlag);//獲取點(diǎn)擊的節(jié)點(diǎn)信息
		BOOL bIsFolder = FALSE;//定義bIsFolder
		CString strItemText, strDragItemText;//定義strItemText, strDragItemText
		BOOL bAddSuccess = TRUE;//定義bAddSuccess
		if(hTreeItem && (uFlag & TVHT_ONITEM))
		{
			CFolder* pFolder = (CFolder*)m_pTreeCtrl->GetItemData(hTreeItem);//獲取結(jié)點(diǎn)Data
			if(CanBeDropTargert(hTreeItem, m_hDragItem))//如果是可以拖動(dòng)的目標(biāo)
			{    //將被拖動(dòng)的目標(biāo)名稱賦給strDragItemText
				strDragItemText = m_pTreeCtrl->GetItemText(m_hDragItem);
				//獲取被拖動(dòng)的目標(biāo)結(jié)點(diǎn)Data賦給pDragFolder
				CFolder* pDragFolder = (CFolder*)m_pTreeCtrl->GetItemData(m_hDragItem);

				TV_INSERTSTRUCT TreeCtrlItem;//定義TreeCtrlItem
				if(pDragFolder->IsFolder(strDragItemText))//選中文件夾
				{
				if(pDragFolder->m_pFather)
						pDragFolder->m_pFather->RemoveFolder(pDragFolder, FALSE);
					else
						RemoveFolder(pDragFolder, FALSE);
					pFolder->AddFolder(pDragFolder);//調(diào)用AddFolder函數(shù)在目標(biāo)結(jié)點(diǎn)增加文件夾										
					TreeCtrlItem.item.iImage = 0;//選取一個(gè)新建文件夾圖象
					TreeCtrlItem.item.iSelectedImage = 1;//選中該節(jié)點(diǎn)時(shí)的圖象(為打開的文件夾)
					bIsFolder = TRUE;//是文件夾
				}
				else//選中文件
				{        //獲取文件完整路徑
					CString strPathName = pDragFolder->FindFullFileName(strDragItemText);//獲取文件完整路徑
					if(strPathName.IsEmpty())
					{                        //如果路徑為空則返回
						ASSERT(FALSE);
						return;
					}
					BOOL b = pDragFolder->RemoveFileName(strDragItemText);//刪除文件是否成功
					ASSERT(b);
					bAddSuccess = pFolder->AddFileName(strPathName);//增加文件是否成功
					ASSERT(bAddSuccess);
					TreeCtrlItem.item.iImage = 2;//選取一個(gè)新建文件圖象
					TreeCtrlItem.item.iSelectedImage = 2;//選中該節(jié)點(diǎn)時(shí)的圖象
				}
				strItemText = m_pTreeCtrl->GetItemText(hTreeItem);//獲取鼠標(biāo)結(jié)點(diǎn)文件名稱
				if(!pFolder->IsFolder(strItemText))//如果不是文件夾
					hTreeItem = m_pTreeCtrl->GetParentItem(hTreeItem);//獲取父親結(jié)點(diǎn)信息

				TreeCtrlItem.hParent = hTreeItem;
				m_pTreeCtrl->DeleteItem(m_hDragItem);
				TreeCtrlItem.hInsertAfter = TVI_LAST;//在最后位置插入結(jié)點(diǎn)
                //激活上述iImage,iSelectedImage,lParam屬性
				TreeCtrlItem.item.mask = TVIF_TEXT | TVIF_IMAGE | TVIF_PARAM | TVIF_SELECTEDIMAGE;
                  //得到文件名
				TreeCtrlItem.item.pszText = strDragItemText.GetBuffer(strDragItemText.GetLength());
                  //釋放GetBuffer
				strDragItemText.ReleaseBuffer();
				TreeCtrlItem.item.lParam = (LPARAM)pFolder;
				if(bIsFolder)//如果是文件夾
					m_pTreeCtrl->FillItem(pDragFolder, hTreeItem);//填充文件夾下的目錄
				else if(bAddSuccess)
					m_pTreeCtrl->SelectDropTarget(m_pTreeCtrl->InsertItem(&TreeCtrlItem));
				else 
					ASSERT(FALSE);
				m_pTreeCtrl->SortChildren(hTreeItem);
				m_pTreeCtrl->Expand(hTreeItem, TVE_EXPAND);//擴(kuò)充列表
				::SetCursor(AfxGetApp()->LoadStandardCursor(IDC_ARROW));//拖動(dòng)時(shí)的箭頭Cursor
			}
		}
	}
	m_hDragItem = NULL;//沒有拖動(dòng)文件
	CTreeView::OnLButtonUp(nFlags, point);
	GetParent()->Invalidate();
}

void CWorkSpace::OnHideWorkSpace() 
{
	((CMainFrame*)AfxGetMainWnd())->m_wndWorkSpaceBar.ShowWindow(SW_HIDE);	
	((CMainFrame*)AfxGetMainWnd())->RecalcLayout();	
}

void CWorkSpace::OnUpdateWorkspceBar(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	
}

void CWorkSpace::OnDelWorkspaceItem() 
{
	HTREEITEM hCurItem = m_pTreeCtrl->GetSelectedItem();//獲得當(dāng)前結(jié)點(diǎn)信息
	if(!hCurItem)//當(dāng)前結(jié)點(diǎn)為空則返回
		return;

	if(AfxMessageBox(IDS_DEL_IT, MB_YESNO) != IDYES)//彈出“確定刪除”對(duì)話框判斷是否刪除
		return;

	CFolder* pFolder = (CFolder*)m_pTreeCtrl->GetItemData(hCurItem);//獲取結(jié)點(diǎn)Data
	ASSERT(pFolder);
	CString strItemText = m_pTreeCtrl->GetItemText(hCurItem);//獲取當(dāng)前結(jié)點(diǎn)名
	if(pFolder->IsFolder(strItemText))//刪除的是否文件夾
	{
/**/		if(pFolder->m_pFather)
			pFolder->m_pFather->RemoveFolder(pFolder);	//調(diào)用RemoveFolder函數(shù),調(diào)用父親結(jié)點(diǎn)的m_FolderList中刪除。		
	else
			RemoveFolder(pFolder);//刪除文件夾
	}
	else//刪除文件
		pFolder->RemoveFileName(strItemText, FALSE);//調(diào)用RemoveFileName函數(shù)

	m_pTreeCtrl->DeleteItem(hCurItem);//刪除結(jié)點(diǎn)
	Invalidate();	
}
void CWorkSpace::RemoveFolder(CFolder* pFolder, BOOL bDelete/*=TRUE*/)//刪除文件夾,
{                                                 //在OnDelWorkspaceItem()等函數(shù)中調(diào)用 
	ASSERT(pFolder != NULL);//如果文件夾存在

	POSITION pos;//定義索引指針
	pos = m_FolderLi.Find(pFolder);//指針指向要?jiǎng)h除的文件夾
	if(!pos)//指針為空則返回
		return;

	m_FolderLi.RemoveAt(pos);//刪除指針
	if(bDelete)
		delete pFolder;//釋放指針指向的對(duì)象

	Invalidate();
} 

void CWorkSpace::Serialize(CArchive& ar) 
{
	m_FolderLi.Serialize(ar);
	if (ar.IsStoring())
	{	// storing code
	}
	else
	{	// loading code
	}
}
BOOL CWorkSpace::OpenStockFile()//打開存儲(chǔ)的文件函數(shù)(from文件庫)
{
  // int nPos = m_strStockName.ReverseFind(_T('\\'));//返回路徑字符個(gè)數(shù)
	CFile file; 
    if(!file.Open(m_strStockName, CFile::modeRead))//如果不是以只讀方式打開或路徑不對(duì)則返回
	{
		return FALSE;
	}
	CArchive ar(&file, CArchive::load);//定義CArchive對(duì)象(地址file,類型為讀取文件)
	Serialize(ar);//完成序列化打開文件
    ar.Close(); //關(guān)閉CArchive緩沖區(qū)
	file.Close();//關(guān)閉文件
	return TRUE;
}

void CWorkSpace::SaveStockFile()//保存文件
{
    CString m_strPath;
	CFile file; 
    if(!file.Open(m_strStockName, CFile::modeCreate|CFile::modeWrite))
		return;
    CArchive ar(&file, CArchive::store);
	Serialize(ar);
    ar.Close(); 
	file.Close();

}

void CWorkSpace::OnBegindrag(NMHDR* pNMHDR, LRESULT* pResult) 
{
	NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
    m_hDragItem = pNMTreeView->itemNew.hItem;      //獲取選定被拖動(dòng)結(jié)點(diǎn)的消息	
	*pResult = 0;
}

void CWorkSpace::OnMouseMove(UINT nFlags, CPoint point) 
{
	if(!(MK_LBUTTON & nFlags))
		return;

	UINT uFlag = 0;
	HTREEITEM hTreeItem = m_pTreeCtrl->HitTest(point , &uFlag);//獲取點(diǎn)擊的節(jié)點(diǎn)信息
	if(hTreeItem && (uFlag & TVHT_ONITEM))
	{
		CFolder* pFolder = (CFolder*)m_pTreeCtrl->GetItemData(hTreeItem);//獲取結(jié)點(diǎn)Data
		if(CanBeDropTargert(hTreeItem, m_hDragItem))//如果是可以拖動(dòng)的結(jié)點(diǎn)
		{
			CString strItemText = m_pTreeCtrl->GetItemText(hTreeItem);//得到當(dāng)前結(jié)點(diǎn)名
			if(pFolder->IsFolder(strItemText))//選中文件夾
				m_pTreeCtrl->SelectDropTarget(hTreeItem);//重畫結(jié)點(diǎn)的樣式
			else//選中文件
				m_pTreeCtrl->SelectDropTarget(m_pTreeCtrl->GetParentItem(hTreeItem));//父親一定為文件夾
		}//重畫結(jié)點(diǎn)的樣式
	else
			m_pTreeCtrl->SelectDropTarget(m_hDragItem);//重畫結(jié)點(diǎn)的樣式
	}
	if(m_hDragItem)
		::SetCursor(AfxGetApp()->LoadCursor(IDC_DRAG_FOLDER));	//獲取光標(biāo)拖動(dòng)時(shí)狀態(tài)

}
BOOL CWorkSpace::CanBeDropTargert(HTREEITEM hTreeItem, HTREEITEM hDragItem)//判斷是否是可以拖動(dòng)的函數(shù)
{
	if(hTreeItem == hDragItem)//如果拖動(dòng)到的結(jié)點(diǎn)與被拖動(dòng)結(jié)點(diǎn)是同一結(jié)點(diǎn)則返回
		return FALSE;

	while(hTreeItem != NULL)//如果拖動(dòng)到的結(jié)點(diǎn)不為空
	{
		if(hTreeItem == hDragItem)//如果拖動(dòng)到的結(jié)點(diǎn)與被拖動(dòng)結(jié)點(diǎn)是同一結(jié)點(diǎn)則返回
			return FALSE;

		hTreeItem = m_pTreeCtrl->GetParentItem(hTreeItem);//獲取拖動(dòng)到的結(jié)點(diǎn)的父親結(jié)點(diǎn)的信息
	}

	return TRUE;//是可以拖動(dòng)的目標(biāo)
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩精品一区在线| 综合电影一区二区三区 | 一区二区三区精品在线观看| 国产人伦精品一区二区| wwwwww.欧美系列| 精品国产凹凸成av人导航| 在线电影一区二区三区| 欧美精品日韩一区| 欧美日韩一区不卡| 精品视频在线免费看| 欧美日韩国产三级| 91精品国产欧美一区二区成人| 欧美日韩亚洲不卡| 欧美精品一级二级三级| 日韩写真欧美这视频| 精品国精品自拍自在线| 久久综合国产精品| 国产精品午夜电影| 亚洲精品成人天堂一二三| 亚洲h在线观看| 麻豆91精品91久久久的内涵| 欧美一区二区免费观在线| 色综合色狠狠天天综合色| 狠狠久久亚洲欧美| 日韩国产在线一| 日韩av在线播放中文字幕| 亚洲成av人片| 亚洲男人天堂av网| 亚洲精品久久7777| 亚洲精品视频免费看| 国产精品久久久久久久岛一牛影视 | 日韩亚洲电影在线| 色综合网站在线| 欧美婷婷六月丁香综合色| 北条麻妃一区二区三区| av一二三不卡影片| 91在线精品秘密一区二区| 免费xxxx性欧美18vr| 亚洲天堂av老司机| 久久综合狠狠综合久久综合88| 欧美激情综合五月色丁香| 激情综合一区二区三区| 久久综合五月天婷婷伊人| 91丨porny丨蝌蚪视频| 欧美蜜桃一区二区三区| 欧美r级电影在线观看| 国产精品久久久99| 亚洲第一成人在线| 国产电影一区二区三区| 欧美在线观看一二区| 久久精品亚洲乱码伦伦中文| 一区二区三区精品视频| 亚洲福利视频导航| 国产精品一区二区三区四区| 91年精品国产| 国产精品女同一区二区三区| 中文字幕一区二区5566日韩| 亚洲免费观看高清完整版在线观看熊| 国产一区91精品张津瑜| 视频精品一区二区| 日韩电影免费在线观看网站| av毛片久久久久**hd| 欧美一区二区三区四区久久| 亚洲天天做日日做天天谢日日欢 | 久久蜜臀精品av| 亚洲午夜精品17c| 国产aⅴ综合色| 91精品在线观看入口| 亚洲女同一区二区| 国产精品一区二区久久精品爱涩 | 欧美日韩久久久久久| 2017欧美狠狠色| 久久综合国产精品| 一区二区三区四区在线免费观看 | 欧美一区二区女人| 国产欧美日韩另类视频免费观看| 午夜精品久久久久久不卡8050| 99久久国产综合色|国产精品| 亚洲日本电影在线| 日本三级亚洲精品| a4yy欧美一区二区三区| 精品视频在线免费看| 亚洲人成在线播放网站岛国 | 久久久一区二区三区| 亚洲夂夂婷婷色拍ww47 | 蜜臀av性久久久久蜜臀aⅴ四虎 | 国产精品一区免费在线观看| 成人av先锋影音| 国产日产欧美一区二区三区| 韩国在线一区二区| 日韩免费看的电影| 激情文学综合丁香| 精品欧美一区二区久久| 国产麻豆91精品| 精品成人在线观看| 99在线精品观看| 亚洲一区精品在线| 亚洲一区在线观看免费| 99久精品国产| 国产精品另类一区| 国产乱子伦视频一区二区三区 | 99在线视频精品| 国产日韩欧美制服另类| 日韩激情一区二区| 久久伊99综合婷婷久久伊| 色婷婷久久久综合中文字幕| 日韩在线一二三区| 2020国产精品自拍| 色久优优欧美色久优优| 美女在线观看视频一区二区| 久久理论电影网| 91在线观看地址| 美女性感视频久久| 亚洲日本一区二区三区| 91麻豆精品国产91久久久久久| 成人网在线免费视频| 一本一道波多野结衣一区二区 | 一区二区三区精密机械公司| av电影天堂一区二区在线 | a美女胸又www黄视频久久| 国产日韩欧美亚洲| 北岛玲一区二区三区四区| 亚洲四区在线观看| 欧美放荡的少妇| 九九**精品视频免费播放| 久久亚洲综合av| 91免费观看在线| 亚洲va国产天堂va久久en| 日韩欧美国产一二三区| 国产精品一级在线| 亚洲精品视频在线| 欧美一区二区三区精品| 国产毛片精品视频| 日韩美女视频一区二区| 欧美私模裸体表演在线观看| 蜜桃av噜噜一区| 国产精品美女久久久久aⅴ| 色乱码一区二区三区88 | 欧美日韩一级黄| 日韩精品免费专区| 国产亚洲欧美日韩日本| 日本电影欧美片| 经典三级视频一区| 亚洲欧美日韩中文字幕一区二区三区 | 国产精品午夜在线| 欧洲精品在线观看| 久久精品国产99国产| 亚洲视频在线观看一区| 91精品国产欧美日韩| 成人黄色免费短视频| 亚洲高清免费视频| 日本一区二区三级电影在线观看 | 国产精品99久久久| 一区二区成人在线| 久久婷婷一区二区三区| 欧美自拍偷拍午夜视频| 国产精品影音先锋| 日日夜夜一区二区| 中文字幕中文字幕中文字幕亚洲无线| 欧美日韩亚洲国产综合| 成人黄页在线观看| 日本aⅴ亚洲精品中文乱码| 国产拍揄自揄精品视频麻豆| 欧美裸体bbwbbwbbw| 不卡高清视频专区| 加勒比av一区二区| 亚洲成人激情av| 国产精品乱码人人做人人爱| 欧美一区二区三区日韩视频| 91美女福利视频| 国产成人精品亚洲午夜麻豆| 丝袜诱惑亚洲看片| 夜夜嗨av一区二区三区| 欧美国产精品一区二区三区| 欧美一区二区三区免费| 欧美色图天堂网| 97精品久久久久中文字幕| 黄一区二区三区| 日韩专区在线视频| 一区二区三区四区精品在线视频| 欧美成人video| 欧美巨大另类极品videosbest| 97se亚洲国产综合在线| 国产高清不卡一区| 看片的网站亚洲| 日韩av电影一区| 亚洲成人久久影院| 一级特黄大欧美久久久| 国产精品福利av| 国产精品嫩草影院com| 久久亚洲精品国产精品紫薇| 欧美va日韩va| 欧美大胆一级视频| 日韩视频中午一区| 7777精品伊人久久久大香线蕉经典版下载 | 亚洲精品老司机| 国产精品午夜久久| 欧美激情在线一区二区| 久久一日本道色综合| 久久久午夜精品|