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

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

?? leftview.cpp

?? Transfer Files to and from an FTP Server
?? CPP
字號:
// LeftView.cpp : implementation of the CLeftView class
//

#include "stdafx.h"
#include "FTP.h"

#include "FTPDoc.h"
#include "LeftView.h"

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

TV_ITEM TvI;
TV_INSERTSTRUCT TvIns;
HTREEITEM hPrev=0, hParent;
char TmpStr[MAX_PATH];
CTreeCtrl *TreeCtrl;
extern CListCtrl *ListCtrl;
extern char *Months[], *Days[];
extern CFtpConnection* m_pFtpConnection;
extern CStatic TimeElapse;
//extern CStatusBar  m_wndStatusBar;
extern HTREEITEM ghTitem;
extern DWORD FTP2Local;

/////////////////////////////////////////////////////////////////////////////
// CLeftView

IMPLEMENT_DYNCREATE(CLeftView, CTreeView)

BEGIN_MESSAGE_MAP(CLeftView, CTreeView)
	//{{AFX_MSG_MAP(CLeftView)
	ON_NOTIFY_REFLECT(TVN_ITEMEXPANDING, OnItemexpanding)
	ON_NOTIFY_REFLECT(TVN_SELCHANGED, OnSelchanged)
	//}}AFX_MSG_MAP
	// Standard printing commands
	ON_COMMAND(ID_FILE_PRINT, CTreeView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_DIRECT, CTreeView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_PREVIEW, CTreeView::OnFilePrintPreview)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CLeftView construction/destruction

CLeftView::CLeftView()
{
	// TODO: add construction code here

}

CLeftView::~CLeftView()
{
}

BOOL CLeftView::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs
	cs.style |= TVS_HASBUTTONS | TVS_LINESATROOT | TVS_HASLINES | TVS_SHOWSELALWAYS | TVS_DISABLEDRAGDROP |
                                  WS_VISIBLE | WS_CHILD | WS_BORDER;

	return CTreeView::PreCreateWindow(cs);
}

/////////////////////////////////////////////////////////////////////////////
// CLeftView drawing

void CLeftView::OnDraw(CDC* pDC)
{
	CFTPDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);

	// TODO: add draw code for native data here
}


/////////////////////////////////////////////////////////////////////////////
// CLeftView printing

BOOL CLeftView::OnPreparePrinting(CPrintInfo* pInfo)
{
	// default preparation
	return DoPreparePrinting(pInfo);
}

void CLeftView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add extra initialization before printing
}

void CLeftView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add cleanup after printing
}

void CLeftView::OnInitialUpdate()
{
	UINT Ret;
	CTreeView::OnInitialUpdate();

	CTreeCtrl &ab=GetTreeCtrl();
	TreeCtrl = &ab;
//	TimeElapse.SetWindowText("Elapsed");
	char DriveRoot[] = "A:\\", Drive[]="A:";
	for(int i=0; i<26; i++){
		DriveRoot[0] = Drive[0] = 'A'+i;
		Ret=GetDriveType(DriveRoot);
		if((Ret != DRIVE_UNKNOWN) && (Ret != DRIVE_NO_ROOT_DIR)){
//			wsprintf(TmpStr, "Computer Users");
			TvI.mask = TVIF_CHILDREN | TVIF_TEXT | TVIF_PARAM ; //| TVIF_IMAGE | TVIF_SELECTEDIMAGE;
			TvI.pszText = Drive;
			TvI.cChildren = 1;
			TvI.lParam = 0; //(LPARAM)TreeCtrl->GetRootItem();
//			TvI.iImage = 0;
//			TvI.iSelectedImage = 0;
			TvIns.item = TvI;
			TvIns.hParent = TVI_ROOT;
			TvIns.hInsertAfter = TVI_LAST;
			hPrev = TreeCtrl->InsertItem((LPTVINSERTSTRUCT) &TvIns);
			hParent = hPrev;
		}
	}
	// TODO: You may populate your TreeView with items by directly accessing
	//  its tree control through a call to GetTreeCtrl().
}

/////////////////////////////////////////////////////////////////////////////
// CLeftView diagnostics

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

void CLeftView::Dump(CDumpContext& dc) const
{
	CTreeView::Dump(dc);
}

CFTPDoc* CLeftView::GetDocument() // non-debug version is inline
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CFTPDoc)));
	return (CFTPDoc*)m_pDocument;
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CLeftView message handlers

void CLeftView::OnItemexpanding(NMHDR* pNMHDR, LRESULT* pResult) 
{
	NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
	// TODO: Add your control notification handler code here
	if(pNMTreeView->itemNew.state & TVIS_EXPANDEDONCE)	
		return;
	CString Dir, SubDir, cstr;
	HTREEITEM hTC = pNMTreeView->itemNew.hItem;
	if(pNMTreeView->itemNew.lParam == 0){
		CFileFind Cf;
		Dir = TreeCtrl->GetItemText(hTC);
		while (true)
		{
			hTC = TreeCtrl->GetParentItem(hTC);
			if(!hTC)
				break;

			if (hTC != TreeCtrl->GetRootItem())
				Dir = TreeCtrl->GetItemText(hTC)+"\\"+Dir;
		}
		Dir += "\\*.*";
		BOOL Ret = Cf.FindFile(Dir, 0);
		while(Ret){
			Ret = Cf.FindNextFile();
			SubDir = Cf.GetFileName();
			if(Cf.IsDots() || !Cf.IsDirectory())
				continue;
			TvI.mask = TVIF_CHILDREN | TVIF_TEXT | TVIF_PARAM;
			TvI.pszText = (LPTSTR)(LPCTSTR) SubDir;
			TvI.cChildren = 1;
			TvI.lParam = (LPARAM) 0;
			TvIns.item = TvI;
			TvIns.hParent = (HTREEITEM) pNMTreeView->itemNew.hItem;
			TvIns.hInsertAfter = TVI_SORT;
			hPrev = TreeCtrl->InsertItem((LPTVINSERTSTRUCT) &TvIns);
		}
		Cf.Close();
	}
	else if(pNMTreeView->itemNew.lParam == 1){
		CFtpFileFind Cf(m_pFtpConnection);
		Dir = TreeCtrl->GetItemText(hTC);
		CString Tmp;
		while (true)
		{
			hTC = TreeCtrl->GetParentItem(hTC);
			if(!hTC)
				break;
		
			if (hTC != TreeCtrl->GetRootItem()){
				Tmp = TreeCtrl->GetItemText(hTC);
				if(strcmp(Tmp, "/") == 0)
					break;
				Dir = Tmp+"/"+Dir;
			}
		}
		Dir += "/*";
		BOOL Ret = Cf.FindFile(Dir, 0);
		while(Ret){
			Ret = Cf.FindNextFile();
			SubDir = Cf.GetFileName();
			if(Cf.IsDots() || !Cf.IsDirectory())
				continue;
			TvI.mask = TVIF_CHILDREN | TVIF_TEXT | TVIF_PARAM;
			TvI.pszText = (LPTSTR)(LPCTSTR) SubDir;
			TvI.cChildren = 1;
			TvI.lParam = (LPARAM) 1;
			TvIns.item = TvI;
			TvIns.hParent = (HTREEITEM) pNMTreeView->itemNew.hItem;
			TvIns.hInsertAfter = TVI_SORT;
			hPrev = TreeCtrl->InsertItem((LPTVINSERTSTRUCT) &TvIns);
		}
		Cf.Close();
	}
	
	*pResult = 0;
}

void CLeftView::OnSelchanged(NMHDR* pNMHDR, LRESULT* pResult) 
{
	NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
	// TODO: Add your control notification handler code here
	
	CString Dir, SubDir, cstr;
	HTREEITEM hTC = pNMTreeView->itemNew.hItem;
	ghTitem = hTC;
	if(pNMTreeView->itemNew.lParam == 0){
		FTP2Local=0;
		CFileFind Cf;
		Dir = TreeCtrl->GetItemText(hTC);
		while (true)
		{
			hTC = TreeCtrl->GetParentItem(hTC);
			if(!hTC)
				break;

			if (hTC != TreeCtrl->GetRootItem())
				Dir = TreeCtrl->GetItemText(hTC)+"\\"+Dir;
		}
		Dir += "\\*.*";
		ListCtrl->DeleteAllItems();
		BOOL Ret = Cf.FindFile(Dir, 0);
		while(Ret){
			Ret = Cf.FindNextFile();
			SubDir = Cf.GetFileName();
			if(Cf.IsDots())
				continue;
	//		lvI.mask = LVIF_TEXT ; //| LVIF_IMAGE |LVIF_PARAM;
	//		lvI.iItem = 0;
	//		lvI.iSubItem = 0;
	//		lvI.pszText = (LPSTR)(LPCSTR) SubDir;
	//		lvI.cchTextMax = strlen((LPSTR)(LPCSTR) SubDir);
			if(ListCtrl->InsertItem(0, (LPSTR)(LPCSTR) SubDir) == -1)
				return;
	//		lvI.iImage = 0;  //sfi.iIcon;
	//		lvI.lParam = (LPARAM) ((int)&(laFile[gdNumFiles]) - (int) laFile);

			//Creation Time Calculation
			char TmpStr1[5], szText[MAX_PATH];
			FILETIME FT;
			SYSTEMTIME ST;
			Cf.GetLastWriteTime(&FT);
			FileTimeToSystemTime(&FT, &ST);
			strcpy(TmpStr1, "am");
			if(ST.wHour >= 12){
				strcpy(TmpStr1, "pm");
				ST.wHour -= 12;
			}
			ST.wHour = ST.wHour == 0 ? 12: ST.wHour;
			wsprintf(szText, "%2d %s %d %s %2d:%02d:%02d%s", ST.wDay, Months[ST.wMonth-1], 
				ST.wYear, Days[ST.wDayOfWeek], ST.wHour, ST.wMinute, 
				ST.wSecond, TmpStr1);
			ListCtrl->SetItemText(0, 4, szText);
			//File Type Calculation
			SHFILEINFO psfi;
//			SHGetFileInfo((LPSTR)(LPCSTR) Cf.GetFilePath(), 0, &psfi, sizeof(SHFILEINFO), SHGFI_TYPENAME);
			SHGetFileInfo(SubDir, FILE_ATTRIBUTE_NORMAL, &psfi, sizeof(SHFILEINFO), SHGFI_USEFILEATTRIBUTES | SHGFI_TYPENAME);
			ListCtrl->SetItemText(0, 3, psfi.szTypeName);
			//File Size Calculation
			DWORD TmpVal;
			TmpVal = Cf.GetLength();
			wsprintf(szText, "%lu", TmpVal);
			ListCtrl->SetItemText(0, 1, szText);
		}
		Cf.Close();
	}
	else if(pNMTreeView->itemNew.lParam == 1){
		FTP2Local=1;
		CFtpFileFind CFtp(m_pFtpConnection);
		CString Tmp;
		Dir = TreeCtrl->GetItemText(hTC);
		while (true)
		{
			hTC = TreeCtrl->GetParentItem(hTC);
			if(!hTC)
				break;
		
			if (hTC != TreeCtrl->GetRootItem()){
				Tmp = TreeCtrl->GetItemText(hTC);
				if(strcmp(Tmp, "/") == 0){
					Dir = Tmp+Dir;
					break;
				}
				Dir = Tmp+"/"+Dir;
			}
		}
		Dir += "/*";
		ListCtrl->DeleteAllItems();
		BOOL Ret = CFtp.FindFile(Dir, 0);
		while(Ret){
			Ret = CFtp.FindNextFile();
			SubDir = CFtp.GetFileName();
			if(CFtp.IsDots())
				continue;
	//		lvI.mask = LVIF_TEXT ; //| LVIF_IMAGE |LVIF_PARAM;
	//		lvI.iItem = 0;
	//		lvI.iSubItem = 0;
	//		lvI.pszText = (LPSTR)(LPCSTR) SubDir;
	//		lvI.cchTextMax = strlen((LPSTR)(LPCSTR) SubDir);
			if(ListCtrl->InsertItem(0, (LPSTR)(LPCSTR) SubDir) == -1)
				return;
	//		lvI.iImage = 0;  //sfi.iIcon;
	//		lvI.lParam = (LPARAM) ((int)&(laFile[gdNumFiles]) - (int) laFile);

			//Creation Time Calculation
			char TmpStr1[5], szText[MAX_PATH];
			FILETIME FT;
			SYSTEMTIME ST;
			CFtp.GetLastWriteTime(&FT);
			FileTimeToSystemTime(&FT, &ST);
			strcpy(TmpStr1, "am");
			if(ST.wHour >= 12){
				strcpy(TmpStr1, "pm");
				ST.wHour -= 12;
			}
			ST.wHour = ST.wHour == 0 ? 12: ST.wHour;
			wsprintf(szText, "%2d %s %d %s %2d:%02d:%02d%s", ST.wDay, Months[ST.wMonth-1], 
				ST.wYear, Days[ST.wDayOfWeek], ST.wHour, ST.wMinute, 
				ST.wSecond, TmpStr1);
			ListCtrl->SetItemText(0, 4, szText);
			//File Type Calculation
			SHFILEINFO psfi;
			SHGetFileInfo(SubDir, FILE_ATTRIBUTE_NORMAL, &psfi, sizeof(SHFILEINFO), SHGFI_USEFILEATTRIBUTES | SHGFI_TYPENAME);
			ListCtrl->SetItemText(0, 3, psfi.szTypeName);
			//File Size Calculation
			DWORD TmpVal;
			TmpVal = CFtp.GetLength();
			wsprintf(szText, "%lu", TmpVal);
			ListCtrl->SetItemText(0, 1, szText);
		}
		CFtp.Close();
	}
	*pResult = 0;
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久久久黄色| 国产丝袜欧美中文另类| 国产一区二区三区日韩| 亚洲乱码中文字幕| 亚洲精品在线免费观看视频| 一本大道久久精品懂色aⅴ| 精品一区二区国语对白| 亚洲777理论| 亚洲欧美日韩一区二区 | av成人免费在线| 麻豆精品视频在线观看视频| 一区二区高清在线| 国产精品嫩草99a| 精品国产一区二区三区久久影院| 欧美在线影院一区二区| 成人免费毛片片v| 精品综合久久久久久8888| 亚洲国产精品久久久男人的天堂| 国产精品国产成人国产三级| 国产欧美一区二区精品秋霞影院| 日韩欧美一区二区不卡| 欧美片网站yy| 欧美色图天堂网| 在线观看国产日韩| 在线视频你懂得一区二区三区| av在线不卡网| av亚洲精华国产精华| 高清在线观看日韩| 粉嫩av亚洲一区二区图片| 国产乱人伦偷精品视频不卡| 国产原创一区二区三区| 激情综合网最新| 极品少妇一区二区| 国产一区不卡视频| 国产精品99久久久| 国产传媒一区在线| 国产成a人亚洲精| 丁香六月久久综合狠狠色| 国产精品一区二区三区乱码| 国产一区二区调教| 国产jizzjizz一区二区| 国产精品一品二品| 成人免费视频播放| 色综合天天综合给合国产| 日本亚洲视频在线| 日韩成人精品在线观看| 久久久综合视频| 欧美一区二区黄色| 正在播放亚洲一区| av一区二区三区| 粉嫩绯色av一区二区在线观看 | 一区二区三区成人| 国产人成亚洲第一网站在线播放| 欧美性一区二区| 成人黄色在线网站| 91麻豆精东视频| 北条麻妃一区二区三区| 国产成人自拍高清视频在线免费播放 | 91丨porny丨最新| 91麻豆国产福利精品| 久久久另类综合| 大尺度一区二区| 一区二区三区四区激情| 亚洲成在线观看| 久久se精品一区二区| 国产suv一区二区三区88区| 色综合中文综合网| 欧美男女性生活在线直播观看| 91精品国产入口| 国产亚洲欧美色| 亚洲乱码国产乱码精品精可以看 | 国产女人aaa级久久久级| 亚洲男同性恋视频| 日韩精品久久理论片| 国产成人午夜精品影院观看视频 | 激情六月婷婷综合| 99麻豆久久久国产精品免费| 制服丝袜在线91| 久久久www成人免费无遮挡大片| 国产精品无遮挡| 成人h精品动漫一区二区三区| 暴力调教一区二区三区| 欧美群妇大交群的观看方式 | 一区二区三区免费观看| 精品一区二区日韩| 91欧美一区二区| 日韩欧美国产精品一区| 亚洲私人影院在线观看| 麻豆一区二区三区| 色婷婷综合在线| 精品国产伦一区二区三区免费| 一区二区三区色| 另类的小说在线视频另类成人小视频在线| 3d动漫精品啪啪一区二区竹菊| 久久精品视频一区二区| 亚洲福利视频导航| 成人av在线影院| 欧美mv日韩mv| 亚洲gay无套男同| 成人黄色av网站在线| 在线综合视频播放| 一区二区欧美国产| 国产91对白在线观看九色| 制服丝袜亚洲播放| 一区二区视频在线看| 国产精品一区专区| 日韩一区二区麻豆国产| 亚洲综合久久久久| jlzzjlzz亚洲女人18| 日韩精品专区在线影院重磅| 日韩毛片视频在线看| 国产精品一线二线三线精华| 欧美一级黄色片| 亚洲国产综合91精品麻豆| 成人白浆超碰人人人人| 久久久国产精华| 国产综合一区二区| 日韩精品一区国产麻豆| 日韩中文字幕av电影| 精品视频在线免费观看| 一区二区三区在线观看网站| av一区二区不卡| 国产精品久久久久久亚洲毛片| 九色porny丨国产精品| 欧美一区午夜精品| 三级在线观看一区二区| 欧美色偷偷大香| 亚洲国产一区视频| 在线观看亚洲精品| 亚洲综合免费观看高清完整版| 97精品久久久午夜一区二区三区 | 亚洲国产精品尤物yw在线观看| 99久久精品免费精品国产| 国产精品天美传媒沈樵| 成人天堂资源www在线| 亚洲国产精品高清| 日韩精品资源二区在线| 蜜桃精品视频在线观看| 日韩一区二区电影网| 蜜臀av性久久久久av蜜臀妖精| 91精品国产综合久久久蜜臀粉嫩| 日韩精品亚洲专区| 日韩一级在线观看| 久久99深爱久久99精品| 久久毛片高清国产| 成人开心网精品视频| 中文字幕在线不卡| 日本丶国产丶欧美色综合| 亚洲成人av中文| 制服丝袜在线91| 国产一区不卡在线| 国产精品卡一卡二卡三| 99久久精品99国产精品| 夜夜嗨av一区二区三区网页| 欧美色涩在线第一页| 日本不卡123| 久久精品亚洲精品国产欧美| 成人污污视频在线观看| 亚洲一区在线观看免费 | 亚洲丝袜自拍清纯另类| 色视频一区二区| 日本欧美一区二区三区乱码| 精品久久久久久久一区二区蜜臀| 国产激情一区二区三区| 亚洲精品欧美在线| 91精品国产综合久久久蜜臀粉嫩| 国产精品综合二区| 亚洲欧美日韩国产综合| 91精品国产乱| 成人综合在线观看| 亚洲午夜精品网| 久久亚洲免费视频| 99久久久精品免费观看国产蜜| 图片区日韩欧美亚洲| 久久免费精品国产久精品久久久久| 成人av动漫在线| 日本一区中文字幕| 中文字幕一区二区三区不卡在线 | 一区二区三区四区蜜桃 | 久久这里只有精品视频网| 99视频超级精品| 全部av―极品视觉盛宴亚洲| 久久精品欧美日韩精品| 欧美少妇bbb| 成人午夜电影网站| 美腿丝袜亚洲三区| 成人免费一区二区三区视频| 4438x成人网最大色成网站| 成人app网站| 久久精品国产精品亚洲综合| 国产精品久久久久久久久免费樱桃| 欧美日韩午夜在线| 99免费精品视频| 国产精品自拍三区| 全国精品久久少妇| 亚洲自拍偷拍图区| 欧美激情综合五月色丁香 | 国产亚洲1区2区3区| 精品视频一区三区九区| 波多野结衣精品在线|