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

📄 leftform.cpp

📁 vc++编写的界面源代码,对C++爱好者是很发的帮助。
💻 CPP
字号:
// LeftForm.cpp : 实现文件
//

#include "stdafx.h"
#include "WebGet.h"
#include "LeftForm.h"
#include "MainFrm.h"
#include "RightForm.h"
#include "RTXmlFile.h"
#include "DownInfoType.h"
#include "RTFolder.h"

#include "AddFileDownTaskDlg.h"
#include "OKMessageDlg.h"
// CLeftForm 对话框

IMPLEMENT_DYNAMIC(CLeftForm, CPropertyPage)
IMPLEMENT_MENUXP(CLeftForm,CPropertyPage)
CLeftForm::CLeftForm()
	: CPropertyPage(CLeftForm::IDD)
{
	m_FileDownSelectIem = NULL;
}

CLeftForm::~CLeftForm()
{
}

void CLeftForm::DoDataExchange(CDataExchange* pDX)
{
	CPropertyPage::DoDataExchange(pDX);
	DDX_Control(pDX, IDC_TabTaskMgr, m_TabTaskMgr);
	DDX_Control(pDX, IDC_TreeFileDown, m_TreeFileDown);
	DDX_Control(pDX, IDC_TreeWebMgr, m_TreeWebMgr);
	DDX_Control(pDX, IDC_TreeWebDown, m_TreeWebDown);
}


BEGIN_MESSAGE_MAP(CLeftForm, CPropertyPage)
	ON_WM_SIZE()
	ON_WM_ERASEBKGND()
	ON_NOTIFY(TCN_SELCHANGE, IDC_TabTaskMgr, OnTcnSelchangeTabtaskmgr)
	ON_NOTIFY(NM_RCLICK, IDC_TreeFileDown, OnNMRclickTreefiledown)
	ON_NOTIFY(NM_RCLICK, IDC_TreeWebDown, OnNMRclickTreewebdown)
	ON_MENUXP_MESSAGES()
	ON_COMMAND(ID_NewFileDownType, OnNewfiledowntype)
	ON_COMMAND(ID_DeleteFileDownType, OnDeletefiledowntype)
	ON_WM_CLOSE()
	ON_COMMAND(ID_FileDownTypeProperty, OnFiledowntypeproperty)
END_MESSAGE_MAP()


// CLeftForm 消息处理程序

void CLeftForm::OnSize(UINT nType, int cx, int cy)
{
	CPropertyPage::OnSize(nType, cx, cy);

	if(IsWindow(m_TabTaskMgr.m_hWnd))m_TabTaskMgr.MoveWindow(0,0,cx,cy);
}

BOOL CLeftForm::OnInitDialog()
{
	CPropertyPage::OnInitDialog();

	//Add Tab Items
	m_TabTaskMgr.Add(0,"文件下载",0,&m_TreeFileDown.m_Container);
	m_TabTaskMgr.Add(1,"站点下载",1,&m_TreeWebDown.m_Container);
	m_TabTaskMgr.Add(2,"站点管理",2,&m_TreeWebMgr.m_Container);

	InitFileDown();
	InitWebDown();
	return TRUE;  
}

BOOL CLeftForm::OnEraseBkgnd(CDC* pDC)
{
	return TRUE;
}

void CLeftForm::OnTcnSelchangeTabtaskmgr(NMHDR *pNMHDR, LRESULT *pResult)
{
	int sel = TabCtrl_GetCurSel(pNMHDR->hwndFrom);
	m_RightForm->m_TabRight.SetCurSel(sel);
	CWnd *pParent = GetParent();
	pParent->SendMessage(WM_NOTIFY,(WPARAM)IDC_TabTaskMgr,(LPARAM)pNMHDR);
	*pResult = 0;
}

void CLeftForm::InitWebDown(void)
{

	//获取程序启路径
	char AppPath[MAX_PATH];
	char TypeFile[MAX_PATH];
	ZeroMemory(AppPath,MAX_PATH);
	DWORD nLen = GetModuleFileName(NULL,AppPath,MAX_PATH) - 1;
	while(nLen >= 0)
	{
		
		if(AppPath[nLen] == '\\')
		{
			AppPath[nLen] = NULL;
			break;
		}
		nLen --;
	}
	
	//文件下载的任务保存路径信息
	HTREEITEM hRoot = m_TreeWebDown.InsertItem("站点下载",0,0);
	HTREEITEM hItem = NULL;

	DownTypeInfo* pDTI = new DownTypeInfo;
	ZeroMemory(pDTI->TypePath,MAX_PATH);
	strcpy(pDTI->TypePath,AppPath);
	strcat(pDTI->TypePath,"\\WebDown");
	strcpy(pDTI->SavePath,"C:\\WebDown");
	pDTI->Type = 0;
	pDTI->Layer = 0;
	strcpy(pDTI->FileFilter,"*");

	ZeroMemory(TypeFile,MAX_PATH);
	strcpy(TypeFile,pDTI->TypePath);
	
	CDownInfoType::LoadTypeInfo(TypeFile,pDTI);
	m_TreeWebDown.SetItemData(hItem,(DWORD_PTR)pDTI);

	//下载中的任务保存路径信息
	ZeroMemory(TypeFile,MAX_PATH);
	strcpy(TypeFile,AppPath);
	strcat(TypeFile,"\\WebDown");
	strcat(TypeFile,"\\UnComplete");
	pDTI = new DownTypeInfo;
	pDTI->Layer = 1;
	strcpy(pDTI->TypePath,TypeFile);
	strcpy(pDTI->FileFilter,"*");
	strcpy(pDTI->SavePath,"C:\\WebDown");
	pDTI->Type = TYPE_FILEDOWNING;
	
	CDownInfoType::LoadTypeInfo(TypeFile,pDTI);
	hItem = m_TreeWebDown.InsertItem("下载中",1,2,hRoot);
	m_TreeWebDown.SetItemData(hItem,(DWORD_PTR)pDTI);


	//已下载的任务保存路径信息
	ZeroMemory(TypeFile,MAX_PATH);
	strcpy(TypeFile,AppPath);
	strcat(TypeFile,"\\WebDown");
	strcat(TypeFile,"\\Completed");
	pDTI = new DownTypeInfo;
	pDTI->Layer = 1;
	strcpy(pDTI->TypePath,TypeFile);
	strcpy(pDTI->FileFilter,"*");
	strcpy(pDTI->SavePath,"C:\\WebDown");
	pDTI->Type = TYPE_FILEDOWNED | TYPE_EDIT;

	CDownInfoType::LoadTypeInfo(TypeFile,pDTI);
	hItem = m_TreeWebDown.InsertItem("已下载",1,2,hRoot);
	m_TreeWebDown.SetItemData(hItem,(DWORD_PTR)pDTI);

	CDownInfoType::LoadTreeTypeInfo(m_TreeWebDown, hItem,TYPE_FILEDOWNED);

	//已删除的任务保存路径信息
	ZeroMemory(TypeFile,MAX_PATH);
	strcpy(TypeFile,AppPath);
	strcat(TypeFile,"\\WebDown");
	strcat(TypeFile,"\\Recycled");
	pDTI = new DownTypeInfo;
	pDTI->Layer = 1;
	strcpy(pDTI->TypePath,TypeFile);
	strcpy(pDTI->FileFilter,"*");
	strcpy(pDTI->SavePath,"C:\\WebDown");
	pDTI->Type = TYPE_RECYCLED;
	
	CDownInfoType::LoadTypeInfo(TypeFile,pDTI);
	hItem = m_TreeWebDown.InsertItem("已删除",3,3,hRoot);
	m_TreeWebDown.SetItemData(hItem,(DWORD_PTR)pDTI);

	CDownInfoType::LoadTreeTypeInfo(m_TreeWebDown,hItem,TYPE_RECYCLED);

	m_TreeWebDown.Expand(hRoot,TVE_EXPAND);	
}

void CLeftForm::InitFileDown(void)
{
	//获取程序启路径
	char AppPath[MAX_PATH];
	char TypeFile[MAX_PATH];
	ZeroMemory(AppPath,MAX_PATH);
	DWORD nLen = GetModuleFileName(NULL,AppPath,MAX_PATH) - 1;
	while(nLen >= 0)
	{
		
		if(AppPath[nLen] == '\\')
		{
			AppPath[nLen] = NULL;
			break;
		}
		nLen --;
	}
	
	//文件下载的任务保存路径信息
	HTREEITEM hRoot = m_TreeFileDown.InsertItem("文件下载",0,0);
	HTREEITEM hItem = NULL;

	DownTypeInfo* pDTI = new DownTypeInfo;
	ZeroMemory(pDTI->TypePath,MAX_PATH);
	strcpy(pDTI->TypePath,AppPath);
	strcat(pDTI->TypePath,"\\FileDown");
	strcpy(pDTI->SavePath,"C:\\Download");
	pDTI->Type = 0;
	pDTI->Layer = 0;
	strcpy(pDTI->FileFilter,"*");

	ZeroMemory(TypeFile,MAX_PATH);
	strcpy(TypeFile,pDTI->TypePath);
	
	CDownInfoType::LoadTypeInfo(TypeFile,pDTI);
	m_TreeFileDown.SetItemData(hRoot,(DWORD_PTR)pDTI);

	//下载中的任务保存路径信息
	ZeroMemory(TypeFile,MAX_PATH);
	strcpy(TypeFile,AppPath);
	strcat(TypeFile,"\\FileDown");
	strcat(TypeFile,"\\UnComplete");
	pDTI = new DownTypeInfo;
	pDTI->Layer = 1;
	strcpy(pDTI->TypePath,TypeFile);
	strcpy(pDTI->FileFilter,"*");
	strcpy(pDTI->SavePath,"C:\\Download");
	pDTI->Type = TYPE_FILEDOWNING;
	
	CDownInfoType::LoadTypeInfo(TypeFile,pDTI);
	hItem = m_TreeFileDown.InsertItem("下载中",1,2,hRoot);
	m_TreeFileDown.SetItemData(hItem,(DWORD_PTR)pDTI);
	m_FileDownUnCompleteItem = hItem;

	//已下载的任务保存路径信息
	ZeroMemory(TypeFile,MAX_PATH);
	strcpy(TypeFile,AppPath);
	strcat(TypeFile,"\\FileDown");
	strcat(TypeFile,"\\Completed");
	pDTI = new DownTypeInfo;
	pDTI->Layer = 1;
	strcpy(pDTI->TypePath,TypeFile);
	strcpy(pDTI->FileFilter,"*");
	strcpy(pDTI->SavePath,"C:\\Download");
	pDTI->Type = TYPE_FILEDOWNED | TYPE_EDIT | TYPE_ADD;
	
	CDownInfoType::LoadTypeInfo(TypeFile,pDTI);
	hItem = m_TreeFileDown.InsertItem("已下载",1,2,hRoot);
	m_TreeFileDown.SetItemData(hItem,(DWORD_PTR)pDTI);
	m_FileDownCompleteItem = hItem;
	CDownInfoType::LoadTreeTypeInfo(m_TreeFileDown,hItem);

	//已删除的任务保存路径信息
	ZeroMemory(TypeFile,MAX_PATH);
	strcpy(TypeFile,AppPath);
	strcat(TypeFile,"\\FileDown");
	strcat(TypeFile,"\\Recycled");
	pDTI = new DownTypeInfo;
	pDTI->Layer = 1;
	strcpy(pDTI->TypePath,TypeFile);
	strcpy(pDTI->FileFilter,"*");
	strcpy(pDTI->SavePath,"C:\\Download");
	pDTI->Type = TYPE_RECYCLED;
	
	CDownInfoType::LoadTypeInfo(TypeFile,pDTI);
	hItem = m_TreeFileDown.InsertItem("已删除",3,3,hRoot);
	m_TreeFileDown.SetItemData(hItem,(DWORD_PTR)pDTI);
	m_FileDownRecycledItem = hItem;

	CDownInfoType::LoadTreeTypeInfo(m_TreeFileDown,hItem,TYPE_RECYCLED);
	m_TreeFileDown.Expand(hRoot,TVE_EXPAND);	
}

void CLeftForm::OnNMRclickTreefiledown(NMHDR *pNMHDR, LRESULT *pResult)
{
	CPoint point;
	GetCursorPos(&point);
	CPoint pt(point);
	m_TreeFileDown.ScreenToClient(&pt);
	HTREEITEM hItem = m_TreeFileDown.HitTest(pt);
	CMenu menu;
	menu.LoadMenu(IDR_MenuFileDown);
	CMenu* PopMenu = menu.GetSubMenu(0);

	m_FileDownSelectIem = hItem;
	if(hItem != NULL)
	{
		DownTypeInfo* pType = (DownTypeInfo *)m_TreeFileDown.GetItemData(hItem);
		if(pType != NULL)
		{
			if((pType->Type & TYPE_ADD) != TYPE_ADD)
			{
				PopMenu->EnableMenuItem(ID_NewFileDownType,MF_DISABLED|MF_BYCOMMAND|MF_GRAYED);
			}
			if((pType->Type & TYPE_EDIT) != TYPE_EDIT)
			{
				PopMenu->EnableMenuItem(ID_FileDownTypeProperty,MF_DISABLED|MF_BYCOMMAND|MF_GRAYED);
			}

			if((pType->Type & TYPE_DELETE) != TYPE_DELETE)
			{
                PopMenu->EnableMenuItem(ID_DeleteFileDownType,MF_DISABLED|MF_BYCOMMAND|MF_GRAYED);
				PopMenu->EnableMenuItem(ID_MoveFileDownType,MF_DISABLED|MF_BYCOMMAND|MF_GRAYED);
			}
		}
		else
		{

		}
	}
	else
	{
		PopMenu->EnableMenuItem(ID_NewFileDownType,MF_DISABLED|MF_BYCOMMAND|MF_GRAYED);
		PopMenu->EnableMenuItem(ID_MoveFileDownType,MF_DISABLED|MF_BYCOMMAND|MF_GRAYED);
		PopMenu->EnableMenuItem(ID_DeleteFileDownType,MF_DISABLED|MF_BYCOMMAND|MF_GRAYED);
		PopMenu->EnableMenuItem(ID_FileDownTypeProperty,MF_DISABLED|MF_BYCOMMAND|MF_GRAYED);
	}

	CRTMenu::SetXPLookNFeel(this,PopMenu->GetSafeHmenu(),TRUE);
	PopMenu->TrackPopupMenu(TPM_TOPALIGN|TPM_LEFTALIGN,point.x,point.y,this);
	
	*pResult = 0;
}

void CLeftForm::OnNMRclickTreewebdown(NMHDR *pNMHDR, LRESULT *pResult)
{
	// TODO: 在此添加控件通知处理程序代码
	*pResult = 0;
}

void CLeftForm::OnNewfiledowntype()
{
	if(m_FileDownSelectIem == NULL)return;
	DownTypeInfo *pInfo = (DownTypeInfo *)m_TreeFileDown.GetItemData(m_FileDownSelectIem);
	if(pInfo == NULL)return;
	CAddFileDownTaskDlg dlgAdd(this);
	CString strTypeName = m_TreeFileDown.GetItemText(m_FileDownSelectIem);
	dlgAdd.m_ParentTypeName = strTypeName;
	dlgAdd.m_SavePath = pInfo->SavePath;
	if(dlgAdd.DoModal() == IDOK)
	{
		DownTypeInfo* pNewTypeInfo = new DownTypeInfo;
		strcpy(pNewTypeInfo->FileFilter,dlgAdd.m_FileFilter);
		strcpy(pNewTypeInfo->SavePath,dlgAdd.m_SavePath);
		pNewTypeInfo->Layer = pInfo->Layer + 1;
		pNewTypeInfo->Type = TYPE_DELETE | TYPE_EDIT | TYPE_FILEDOWNED | TYPE_ADD;
		
		HTREEITEM hItem = m_TreeFileDown.InsertItem(dlgAdd.m_TypeName,1,2,m_FileDownSelectIem);
		CString TypeFile = pInfo->TypePath;
		TypeFile += "\\";
		TypeFile += dlgAdd.m_TypeName;
		strcpy(pNewTypeInfo->TypePath,TypeFile);
		
		CDownInfoType::LoadTypeInfo(TypeFile,pNewTypeInfo);
		m_TreeFileDown.SetItemData(hItem,(DWORD_PTR)pNewTypeInfo);

		m_TreeFileDown.RedrawWindow();
	}

	m_FileDownSelectIem = NULL;
	m_TreeFileDown.SetFocus();
}

void CLeftForm::OnDeletefiledowntype()
{
	if(m_FileDownSelectIem == NULL)return;

	BOOL bDelete = FALSE;

	UINT type = CDownInfoType::GetDownInfoType(m_TreeFileDown,m_FileDownSelectIem);
	if((type & TYPE_RECYCLED) == TYPE_RECYCLED)bDelete = TRUE;
	SHORT lshit = GetKeyState(VK_LSHIFT);
	SHORT rshit = GetKeyState(VK_RSHIFT);

	//用户按下SHIT键进行删除
	if(lshit < 0 || rshit < 0)
	{
		bDelete = TRUE;
	}

	if(bDelete)
	{
		MessageBox("真的要删除些分类及分类下的任务文件吗?","确认",MB_YESNO);
		CDownInfoType::DeleteTreeTypeInfo(m_TreeFileDown,m_FileDownSelectIem);
	}
	else
	{
		CDownInfoType::MoveTreeTypeInfoTo(m_TreeFileDown,m_FileDownSelectIem,m_FileDownRecycledItem,TYPE_RECYCLED);		
	}

	m_TreeFileDown.SetFocus();
}

void CLeftForm::OnClose()
{
	CDownInfoType::ClearTreeTypeInfoData(m_TreeFileDown);
	CDownInfoType::ClearTreeTypeInfoData(m_TreeWebDown);
	CPropertyPage::OnClose();
}

void CLeftForm::OnFiledowntypeproperty()
{
	if(m_FileDownSelectIem == NULL)return;
	DownTypeInfo *pInfo = (DownTypeInfo *)m_TreeFileDown.GetItemData(m_FileDownSelectIem);
	if(pInfo == NULL)return;
	CAddFileDownTaskDlg dlgSave(this,TRUE);
	CString strTypeName = m_TreeFileDown.GetItemText(m_FileDownSelectIem);
	CString strParentTypeName = m_TreeFileDown.GetItemText( m_TreeFileDown.GetParentItem(m_FileDownSelectIem));
	dlgSave.m_ParentTypeName = strParentTypeName;
	dlgSave.m_SavePath = pInfo->SavePath;
	dlgSave.m_TypeName = strTypeName;

	if(IDOK == dlgSave.DoModal())
	{
		char OldPath[MAX_PATH];
		CDownInfoType::GetTreeTypePath(m_TreeFileDown,m_FileDownSelectIem,OldPath);
		if(CRTFolder::ReName(OldPath,dlgSave.m_TypeName))
		{
			strcpy(pInfo->SavePath,dlgSave.m_SavePath);
			m_TreeFileDown.SetItemText(m_FileDownSelectIem,dlgSave.m_TypeName);
			if(!CDownInfoType::SaveTypeInfo(m_TreeFileDown,m_FileDownSelectIem))
			{
				//Error
			}
		}
	}
}

⌨️ 快捷键说明

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