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

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

?? workspace.cpp

?? 功能: 實現目錄樹中文件夾
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
// WorkSpace.cpp : implementation file
//

#include "stdafx.h"
#include "MyFolder.h"
#include "WorkSpace.h"
#include "FolderNameDialog.h"
#include "OpenMultiFileDlg.h"
//#include "Folder.h"
//#include "FolderTree.h"
#include "Mainfrm.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#define IDS_PROJECT_COUNT               61205

#endif

/////////////////////////////////////////////////////////////////////////////
// CWorkSpace

IMPLEMENT_DYNCREATE(CWorkSpace, CTreeView)

CWorkSpace::CWorkSpace()
{
		m_hDragItem = 0;//拖動文件變量      (根據約定,mfc庫非靜態類數據成員以m_開頭)
}

CWorkSpace::~CWorkSpace()
{
	SaveStockFile();
//	DeleteContents();
}


BEGIN_MESSAGE_MAP(CWorkSpace, CTreeView)
	//{{AFX_MSG_MAP(CWorkSpace)
	ON_WM_RBUTTONDOWN()
	ON_COMMAND(ID_NEW_ROOT_FOLDER, OnNewRootFolder)
	ON_WM_CREATE()
	ON_COMMAND(ID_NEW_FOLDER, OnNewFolder)
	ON_COMMAND(ID_ADD_FILE, OnAddFile)
	ON_WM_LBUTTONUP()
	ON_COMMAND(ID_WORKSPCE_BAR, OnHideWorkSpace)
	ON_UPDATE_COMMAND_UI(ID_WORKSPCE_BAR, OnUpdateWorkspceBar)
	ON_COMMAND(ID_DEL_WORKSPACE_ITEM, OnDelWorkspaceItem)
	ON_NOTIFY_REFLECT(TVN_BEGINDRAG, OnBegindrag)
	ON_WM_LBUTTONDOWN()
	ON_WM_MOUSEMOVE()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CWorkSpace drawing

void CWorkSpace::OnDraw(CDC* pDC)
{
	CDocument* pDoc = GetDocument();
	// TODO: add draw code here
}

/////////////////////////////////////////////////////////////////////////////
// CWorkSpace diagnostics

#ifdef _DEBUG
void CWorkSpace::AssertValid() const
{
	CTreeView::AssertValid();
}

void CWorkSpace::Dump(CDumpContext& dc) const
{
	CTreeView::Dump(dc);
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CWorkSpace message handlers







void CWorkSpace::OnRButtonDown(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	UINT uFlag = 0;
  HTREEITEM hTreeItem = m_pTreeCtrl->HitTest(point, &uFlag);//獲取點擊的節點信息(handle)

	CMenu menu;
  if(hTreeItem && (uFlag & TVHT_ONITEM))//如果結點存在
	{
		m_pTreeCtrl->Select(hTreeItem, TVGN_CARET);//將結點信息賦給hTreeItem
		CString strFileName = m_pTreeCtrl->GetItemText(hTreeItem);//將節點名稱賦給strFileName
		CFolder* pFolder= (CFolder*)m_pTreeCtrl->GetItemData(hTreeItem);//獲取結點Data
		if(pFolder->IsFolder(strFileName))//選中文件夾
			VERIFY(menu.LoadMenu(IDR_WORKSPACE_FOLDER));//右鍵彈出IDR_WORKSPACE_FOLDER菜單
		else//選中File
			VERIFY(menu.LoadMenu(IDR_WORKSPACE_FILE));//右鍵彈出IDR_WORKSPACE_FILE菜單
	}
	else//選中空白

	VERIFY(menu.LoadMenu(IDR_WORKSPACE));//右鍵IDR_WORKSPACE菜單
	CMenu* pPopup = menu.GetSubMenu(0);//彈出右鍵菜單
    ASSERT(pPopup != NULL);
    ClientToScreen(&point);//邏輯坐標轉為屏幕坐標
	pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, 
		point.x, point.y, AfxGetMainWnd());//彈出右鍵	

}

void CWorkSpace::OnNewRootFolder() 
{
	CString strFolderName;
	int nCount = m_FolderLi.GetCount();//獲取“工程”個數
	strFolderName.Format(IDS_PROJECT_COUNT, nCount + 1);

	CFolderNameDialog Dlg;//彈出CFolderNameDlg對話框
	Dlg.m_strFolderName = strFolderName; //給m_strFolderName賦值
	if(Dlg.DoModal() == IDCANCEL)//點擊“取消”則返回
		return;

	strFolderName = Dlg.m_strFolderName;
	CFolder* pChileFolder = new CFolder(strFolderName);

	m_FolderLi.AddTail(pChileFolder);
	m_pTreeCtrl->FillItem(pChileFolder);
//	m_bIsDirty = TRUE;//文件修改
}

BOOL CWorkSpace::PreCreateWindow(CREATESTRUCT& cs)
{
	cs.style |= TVS_HASBUTTONS | TVS_HASLINES | 
		TVS_LINESATROOT |TVS_SHOWSELALWAYS | TVS_TRACKSELECT;

	return CTreeView::PreCreateWindow(cs);
}

int CWorkSpace::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CTreeView::OnCreate(lpCreateStruct) == -1)
		return -1;
	
	m_pTreeCtrl = (CFolderTree*)&GetTreeCtrl();
	m_ImageList.Create(IDB_FOLDER_BMP, 16, 1, RGB(0,255,0));
	m_pTreeCtrl->SetImageList(&m_ImageList, TVSIL_NORMAL);


	CFolder* pFolder = NULL;

	if(m_strStockName.IsEmpty())
	{
	CString m_strPath;
	HINSTANCE hInst = ::AfxGetInstanceHandle();
	TCHAR szMyPath[_MAX_PATH];
	::GetModuleFileName(hInst, szMyPath, _MAX_PATH);//取得應用程序的全部路徑文件名稱,如:“F:\ReportTable\ReportTable.exe”
	m_strPath = CString(szMyPath);
	//去掉模塊的文件名
	int nPos = m_strPath.ReverseFind(_T('\\'));
	m_strPath = m_strPath.Left(nPos+1);//求得應用程序所在目錄,如:“C:\ReportTable\”
    m_strStockName = m_strPath+"stock.sto";
	}
	OpenStockFile();
	POSITION pos = m_FolderLi.GetHeadPosition();
	while (pos != NULL)
	{
		pFolder = (CFolder*)m_FolderLi.GetNext(pos);
		m_pTreeCtrl->FillItem(pFolder);
	}

	return 0;
}

void CWorkSpace::OnNewFolder() 
{
	CString strFolderName;//定義CString對象strFolderName(文件夾路徑)
	strFolderName.LoadString(IDS_NEW_FOLDER);//存儲ID號(表示“新文件夾”)
	HTREEITEM hTreeItem = m_pTreeCtrl->GetSelectedItem();//得到當前點擊節點信息(沒獲得返回0)(handl)
	//if(!hTreeItem)
   // strFolderName = CString("Project");//如果不是節點,則strFolderName=工程,建立新工程
	CFolderNameDialog Dlg;
	Dlg.m_strFolderName = strFolderName;//彈出CFolderNameDlg對話框
	if(Dlg.DoModal() == IDCANCEL)//不建立新文件夾
		return;

//	m_bIsDirty = TRUE;//文件修改
	strFolderName = Dlg.m_strFolderName;//strFolderName為對話框中m_strFolderName名字
	CFolder* pFolder = NULL;//pFolder指針清空
	CFolder* pChileFolder = new CFolder(strFolderName);//為strFolderName動態分配內存

/**if(!hTreeItem)
	{
		m_FolderList.AddTail(pChileFolder);

		m_pTreeCtrl->FillItem(pChileFolder, NULL);
		return;
	}
**/	
	pFolder = (CFolder*)m_pTreeCtrl->GetItemData(hTreeItem);//獲取結點Data
	pFolder->AddFolder(pChileFolder);

	TV_INSERTSTRUCT TreeCtrlItem;//定義TreeCtrlItem
	TreeCtrlItem.hParent = hTreeItem;//定義父親節點(父親結點為鼠標選中的文件夾)

	TreeCtrlItem.hInsertAfter = TVI_LAST;//在最后位置插人節點
	TreeCtrlItem.item.mask = TVIF_TEXT | TVIF_IMAGE | TVIF_PARAM | TVIF_SELECTEDIMAGE;
//激活上述屬性
	TreeCtrlItem.hParent = hTreeItem;
	TreeCtrlItem.item.pszText = strFolderName.GetBuffer(strFolderName.GetLength());//得到文件名
	strFolderName.ReleaseBuffer();//釋放GetBuffer
	TreeCtrlItem.item.iImage = 0;//選取一個新建文件夾圖象
	TreeCtrlItem.item.iSelectedImage = 1;//選中該節點時的圖象
	TreeCtrlItem.item.lParam = (LPARAM)pChileFolder;

	m_pTreeCtrl->InsertItem(&TreeCtrlItem);//插入節點
	m_pTreeCtrl->Expand(hTreeItem, TVE_EXPAND);	//擴充列表	
	
}

void CWorkSpace::OnAddFile() 
{
	COpenMultiFileDlg dlgFile(TRUE);//打開COpenMultiFileDlg對話框選取增加的文件
	CString title,strFilter;//定義title,strFilter,strDefault
	VERIFY(title.LoadString(AFX_IDS_OPENFILE));//將AFX_IDS_OPENFILE讀進title
	
	strFilter+="MyFolder 文件(*.my)";
	strFilter+=(TCHAR)'\0';//next string please
	strFilter+=_T("*.ost");
	strFilter+=(TCHAR)'\0';//last string
	strFilter+="所有文件(*.*)";
	strFilter+=(TCHAR)'\0';//next string please
	strFilter+=_T("*.*");
	strFilter+=(TCHAR)'\0';//last string

	dlgFile.m_ofn.nMaxCustFilter++;
	dlgFile.m_ofn.lpstrFilter=strFilter;
	dlgFile.m_ofn.lpstrTitle=title;
	dlgFile.m_ofn.hwndOwner=AfxGetMainWnd()->GetSafeHwnd();
	
	if(dlgFile.DoModal()==IDOK)//如果點擊對話眶中“ok”按鈕
	{
	POSITION pos=dlgFile.GetStartPosition();//獲取當前的路徑
		CString strName;//定義strName
	
		while (pos!=NULL)//如果當前路徑不為空,即有文件存在
		{	
		strName = dlgFile.GetNextPathName(pos);//獲取文件完整路徑

			AddFileName(strName);//增加文件名到目錄樹,將路徑傳遞給AddFileName函數 
		}

	}	
}
void CWorkSpace::AddFileName(CString strPathName) //增加文件名到目錄樹函數

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美另类videos死尸| 91成人在线精品| 亚洲色图一区二区三区| 国产清纯在线一区二区www| 久久你懂得1024| 中文字幕av一区二区三区免费看| 日韩一二在线观看| 久久影视一区二区| 中文字幕精品一区二区三区精品| 精品第一国产综合精品aⅴ| 国产亚洲女人久久久久毛片| 中文字幕一区av| 亚洲高清免费在线| 国产乱一区二区| 91精品福利在线| 制服丝袜av成人在线看| 久久尤物电影视频在线观看| 亚洲人成网站在线| 国产一区二区在线电影| 色老头久久综合| 日韩欧美中文一区| 日本一区二区免费在线观看视频| 国产精品久久久久久久久久久免费看 | 在线免费一区三区| 日韩欧美一级二级| 日本一区二区三区高清不卡| 午夜a成v人精品| 国产成人在线免费| 欧美日韩在线播放三区| 久久久久久97三级| 最新国产の精品合集bt伙计| 蜜桃传媒麻豆第一区在线观看| 成人在线综合网| 51午夜精品国产| 中文字幕在线观看一区| 久久电影网电视剧免费观看| 亚洲一区二区三区四区在线观看| 久久国产精品色婷婷| 色婷婷亚洲婷婷| 国产精品免费网站在线观看| 麻豆成人91精品二区三区| 91色乱码一区二区三区| 久久亚洲欧美国产精品乐播 | 欧美一区二区免费视频| 亚洲一区二区三区影院| 国产色综合一区| 日韩精品乱码av一区二区| 粉嫩在线一区二区三区视频| 在线不卡的av| 有码一区二区三区| 91视频91自| 欧美白人最猛性xxxxx69交| 欧美国产一区二区在线观看| 精品国产精品网麻豆系列| 日韩一卡二卡三卡四卡| 欧美日韩一区视频| 欧美高清视频在线高清观看mv色露露十八| 国产黑丝在线一区二区三区| 国产高清不卡一区二区| 麻豆精品蜜桃视频网站| 免费在线观看视频一区| 亚洲一区二区三区四区的| 亚洲一级二级在线| 亚洲欧美激情视频在线观看一区二区三区| 亚洲一区二区三区爽爽爽爽爽| 日韩不卡一二三区| 一区二区三区高清在线| 五月天国产精品| 成人av手机在线观看| 欧美无砖砖区免费| 国产欧美日韩综合| 天天操天天干天天综合网| www.亚洲激情.com| 99国产精品久久久久久久久久 | 国产久卡久卡久卡久卡视频精品| 国产精品888| 国产91对白在线观看九色| av不卡免费电影| 69av一区二区三区| 欧美韩国日本一区| 亚洲色欲色欲www| 日本三级亚洲精品| 国产成人8x视频一区二区| 在线视频观看一区| 亚洲精品在线一区二区| 一区视频在线播放| 亚洲精品免费在线| 午夜成人免费电影| 国产成人精品在线看| 欧美性欧美巨大黑白大战| 日韩欧美不卡在线观看视频| 精品国产麻豆免费人成网站| 亚洲人成在线观看一区二区| 亚洲国产精品久久人人爱| 亚洲狠狠爱一区二区三区| 久久久亚洲精品一区二区三区 | 欧美影院一区二区| 一区二区中文视频| 亚洲国产精品天堂| 久久国产人妖系列| 色婷婷久久久亚洲一区二区三区| 337p亚洲精品色噜噜狠狠| 亚洲欧美自拍偷拍| 精品一区二区三区在线观看| 色噜噜偷拍精品综合在线| 久久男人中文字幕资源站| 亚洲精品美腿丝袜| 国产精品一线二线三线精华| 欧美精品黑人性xxxx| 2023国产一二三区日本精品2022| 亚洲一区二区三区不卡国产欧美| 国产成人夜色高潮福利影视| 日韩欧美另类在线| 亚洲精品免费看| 国产精品18久久久| 欧美国产欧美亚州国产日韩mv天天看完整| 亚洲免费在线视频| 精品一区二区三区在线播放视频 | 国产精品91一区二区| 欧美一级xxx| 亚洲综合在线电影| av毛片久久久久**hd| 综合自拍亚洲综合图不卡区| 国产电影一区在线| 久久老女人爱爱| 国产剧情一区在线| 久久久美女艺术照精彩视频福利播放| 午夜久久电影网| 欧美三区在线视频| 亚洲一二三区在线观看| 不卡一区二区三区四区| 精品国产免费人成电影在线观看四季 | 欧美色男人天堂| 亚洲九九爱视频| 91理论电影在线观看| 亚洲三级久久久| 色综合久久99| 午夜精品福利在线| 欧美一卡在线观看| 久久丁香综合五月国产三级网站| 91在线小视频| 国产精品每日更新| 国产成人综合精品三级| 日韩欧美国产不卡| 日本女人一区二区三区| 久久久久88色偷偷免费| 成人免费毛片高清视频| 依依成人综合视频| 欧美午夜电影网| 精品一区二区三区在线观看国产 | 久久夜色精品一区| 国产一区二区在线免费观看| 国产色产综合色产在线视频 | 国产精品乱人伦| 欧美日韩国产影片| 国产一区二区三区四| 亚洲精品国产无天堂网2021| 欧美人牲a欧美精品| 成人av电影在线| 奇米一区二区三区av| 一区二区在线观看免费| 久久精品综合网| 日韩丝袜情趣美女图片| 91年精品国产| 国产精品99久| 色老汉av一区二区三区| 成人午夜av在线| 欧美在线观看视频一区二区| 激情文学综合插| av影院午夜一区| 成人在线综合网站| 成人精品免费视频| 国产乱子伦视频一区二区三区| 久久99精品久久久久久动态图| 国产精品乱码久久久久久| 日韩视频中午一区| 久久久亚洲精华液精华液精华液 | 一区二区三区蜜桃| 国产日韩欧美电影| 日韩视频永久免费| 在线成人午夜影院| 欧美性xxxxxxxx| av电影天堂一区二区在线观看| 免费观看91视频大全| 午夜视频在线观看一区二区| 最新不卡av在线| 国产精品视频一二三区| 欧美高清一级片在线| 欧美性猛交xxxxxx富婆| 99视频国产精品| 国产精品亚洲视频| 久久超级碰视频| 亚洲成人久久影院| 久久久噜噜噜久噜久久综合| 欧美老女人在线| 欧美日韩精品系列| 欧美一区二区精品久久911| 欧美中文字幕亚洲一区二区va在线| 成人开心网精品视频| 蜜桃视频免费观看一区|