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

📄 mainfrm.cpp

📁 模拟迅雷的下载工具软件
💻 CPP
📖 第 1 页 / 共 4 页
字号:
	m_DropWin=new CDropWin();

	BOOL bReturn=m_DropWin->CreateNew(nRect,this,ID_DROPWINDOW,IDR_MENU_DROPWINRD);
	if(bReturn)
	{
		m_DropWin->ShowWindow(SW_HIDE);
		m_DropWin->ShowView();
		m_DropWin->ShowWindow(SW_SHOW);
		m_bIsDropWin=TRUE;
	}
	else
		MessageBox("Failed","Leo",MB_OK|MB_ICONSTOP);

	::SendMessage(GetTestDownView()->m_hWnd,WM_LEODOWNINFO,0,(LPARAM)this);
	return TRUE;

	//return CFrameWnd::OnCreateClient(lpcs, pContext);
}

//CInternetView* CMainFrame::GetInternetView()
//{
	//return (CInternetView*)m_SplitterWnd.GetPane(0,0);

//}
CTestDownView* CMainFrame::GetTestDownView()
{
	//CContainerView* ContainerView=GetContainerView();
	//return ContainerView->GetTestDownView();
	return (CTestDownView*)m_SplitterWnd.GetPane(0,0);
}

CListViewInfo* CMainFrame::GetListViewInfo()
{
	CContainerView* ContainerView=GetContainerView();
	return ContainerView->GetListViewInfo();

}

CContainerView* CMainFrame::GetContainerView()
{
	return (CContainerView*)m_SplitterWnd.GetPane(1,0);
}

void CMainFrame::OnIeUnreg() 
{
	// TODO: Add your command handler code here
	CLRegistry nRegistry;
	HKEY nKeyRoot=HKEY_USERS;
	LPSTR nKeyPath=".DEFAULT\\Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System";
	if(nRegistry.Open(nKeyRoot,nKeyPath))
	{
		if(nRegistry.DeleteValue("DisableRegistryTools"))
			MessageBox("注册表解锁成功","Leo",MB_OK|MB_ICONINFORMATION);
		else
			MessageBox("注册表未锁","Leo",MB_OK|MB_ICONINFORMATION);

	}
	else
		MessageBox("注册表未锁","Leo",MB_OK|MB_ICONINFORMATION);
	
	
}

void CMainFrame::OnIeTool() 
{
	// TODO: Add your command handler code here
	CDlgIETool nDlgIETool;
	if(nDlgIETool.DoModal()==IDOK)
	{

	}
	
}


void CMainFrame::OnIeHostroydel() 
{
	// TODO: Add your command handler code here
	if(m_nThreadNumber==0)
	{
		CTestDownView *pView=GetTestDownView();
		HKEY nhKeyRoot=HKEY_CURRENT_USER;
		LPSTR nszKeyPath="Software\\BLeo2004\\DownLoad";
		LPSTR nszProgramePath="Software\\BLeo2004\\Dir";
		LPSTR nszSubKeyPath="Software\\BLeo2004\\DownLoad\\Down";
	
		if(m_DownRegistry.Open(nhKeyRoot,nszProgramePath))
		{
			m_DownRegistry.Write("Number",0);
			m_DownRegistry.Close();
			m_nNumber=0;
	
			CString sTemp;
			int nCount=pView->m_ListNew.GetItemCount();
			for(int i=0;i<nCount;i++)
			{
				sTemp="";
				sTemp.Format("%s%d",nszSubKeyPath,i+1);
				m_DownRegistry.DeleteValueKey(nhKeyRoot,(LPCTSTR)sTemp);
			}
			pView->m_ListNew.DeleteAllItems();
			pView->m_ListNew.SetAutoSize(0,9);
		}

		CHttpDownLoad *pHttpDownLoad;
		THREADNUMBER  *stThreadNumber;
		for(POSITION pos=m_HttpDLPtr.GetStartPosition();pos!=NULL;)
		{
			m_HttpDLPtr.GetNextAssoc(pos,(void*&)stThreadNumber,(void*&)pHttpDownLoad);
			delete pHttpDownLoad;
		}
		m_HttpDLPtr.RemoveAll();

		m_ToolTipArray.FreeExtra();
		m_ToolTipArray.RemoveAll();
		m_ToolTipArray.SetSize(1);
	}
	
}

void CMainFrame::OnDownTool() 
{
	// TODO: Add your command handler code here
	OnDropwinTool();
}

void CMainFrame::OnDownDropwin() 
{
	// TODO: Add your command handler code here
		if(!m_bIsDropWin)
		{
			m_bIsDropWin=TRUE;
			m_DropWin->ShowWindow(SW_SHOW);
		}
		else
		{
			m_bIsDropWin=FALSE;
			m_DropWin->ShowWindow(SW_HIDE);
		}

}

void CMainFrame::OnViewLeoToolbar() 
{
	// TODO: Add your command handler code here
	BOOL bVisible;
	bVisible=(m_ToolBarNew.GetStyle()&WS_VISIBLE);
	int nShow=(bVisible) ? SW_HIDE : SW_SHOWNORMAL;
	m_ToolBarNew.ShowWindow(nShow);
	RecalcLayout();
}

void CMainFrame::OnDropwinAddJob() 
{
	// TODO: Add your command handler code here
	DROP_URL pDropUrl;

	//Right Read a FileName from url
	CString csTemp2;
	if(!m_Url.IsEmpty())
	{
		CString cs,csTemp; 
		int nindex=1;
		csTemp="";
		csTemp2="";
		
		cs=m_Url;
		csTemp=cs.Right(1);
		csTemp2=csTemp;
		cs=cs.Left(cs.GetLength()-1);
		
		while(csTemp!="/")
		{
			csTemp="";
			csTemp=cs.Right(1);
			csTemp2.Insert(0,(LPCTSTR)csTemp);
			cs=cs.Left(cs.GetLength()-1);
		}
	
		//add FileName
		csTemp2=csTemp2.Right(csTemp2.GetLength()-1);
	}
	
	m_FileName=csTemp2;
	pDropUrl.pMainWnd=this;
	pDropUrl.strComment=m_Comment;
	pDropUrl.strLocatinUrl=m_Url;
	pDropUrl.strPathName=m_SavePath;
	pDropUrl.strFileName=m_FileName;
	pDropUrl.bRename=m_bRename;
		
	CDownAddJob pDownAddJob((void*)&pDropUrl);
	CDownProSheet pDownProSheet("添加下载任务-Leo",NULL,0);
	pDownProSheet.AddPage(&pDownAddJob);
	pDownProSheet.DoModal();
	
	
}

void CMainFrame::OnDropUrl(WPARAM wParam,LPARAM lParam)
{
	//Recv a Message from CDropWin(CDropView) to Drop Url
	DROP_URL *pDropUrl=(DROP_URL*)lParam;
	m_Url=pDropUrl->strLocatinUrl;
	m_Comment=pDropUrl->strComment;
	OnDropwinAddJob();
}

void CMainFrame::OnUpdateDownDropwin(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	if(m_bIsDropWin)
		pCmdUI->SetCheck(1);
	else
		pCmdUI->SetCheck(0);
}



void CMainFrame::OnDownAddJobPage(WPARAM wParam,LPARAM lParam)
{
	m_nThreadNumber++;

	if(m_nThreadNumber>0)
		m_DropWin->SetTimerPaint(1);
	
	CListViewInfo *pView=GetListViewInfo();
	pView->m_pListBoxInfo.ResetContent();

	///Start DownLoad StartThread(5 child thread)
	DROP_URL *pDropUrl=(DROP_URL*)lParam;
	CString sTemp;
	CString strFilePath="";
	int nThreadNum;
	
	//1 yes break recv 
	if(pDropUrl->nBreakRev==1)
	{
		strFilePath=pDropUrl->strFilePath;
		nThreadNum=pDropUrl->nParentNum;
		sTemp=pDropUrl->strRegPath;

	}
	else
	{
		strFilePath=pDropUrl->strFilePath;
	
		//Set Thread End breakpoint BOOL Value and ParentNum
		nThreadNum=++m_nNumber;
	
		//Create Registry SubKey;
		HKEY nhKeyRoot=HKEY_CURRENT_USER;
		LPSTR nszKeyPath="Software\\BLeo2004\\DownLoad";
		LPSTR nszSubKeyPath="Software\\BLeo2004\\DownLoad\\Down";
		LPSTR nszDirKeyPath="Software\\BLeo2004\\Dir";

		sTemp.Format("%s%d",nszSubKeyPath,nThreadNum);
		m_DownRegistry.Open(nhKeyRoot,nszKeyPath);
		m_DownRegistry.CreateKey(nhKeyRoot,(LPCTSTR)sTemp);
		m_DownRegistry.Close();
	
		//Write Down Number to registry "Dir"
		m_DownRegistry.Open(nhKeyRoot,nszDirKeyPath);
		m_DownRegistry.Write("Number",nThreadNum);
		m_DownRegistry.Close();

	}

	m_stFileDlgInfo.strRegSubPath=sTemp;
	m_stFileDlgInfo.nSocketLinkNum=m_nAgainNumber;  //10
	m_stFileDlgInfo.nPID=nThreadNum;   //Begin 1 
	m_stFileDlgInfo.pMainFrame=this;
	m_stFileDlgInfo.strLocationUrl=pDropUrl->strLocatinUrl;
	m_stFileDlgInfo.strFilePath=pDropUrl->strFilePath;
	m_stFileDlgInfo.strComment=pDropUrl->strComment;
	m_stFileDlgInfo.nBreakRev=pDropUrl->nBreakRev;
	m_stFileDlgInfo.nImage=1;
	m_stFileDlgInfo.bRename=pDropUrl->bRename;

	CRect rect;
	GetClientRect(&rect);
	m_stThreadNumber[m_nPID].nPID=m_nPID;
	CHttpDownLoad *pHttpDownLoad;
	if(!m_HttpDLPtr.Lookup(&m_stThreadNumber[m_nPID],(void*&)pHttpDownLoad))
	{
		pHttpDownLoad=new CHttpDownLoad(&m_stFileDlgInfo);
		pHttpDownLoad->Create(NULL,NULL,WS_CHILD|WS_VISIBLE,rect,this,(UINT)m_nPID);
		m_HttpDLPtr.SetAt(&m_stThreadNumber[m_nPID],pHttpDownLoad);
		m_nPID++;
	}


	AfxBeginThread(StartHttpDownLoad,(void*)pHttpDownLoad);
	

	BTOOLTEXT stToolText;
	stToolText.strText=strFilePath;
	stToolText.strText+="[0%]";
	stToolText.iItem=nThreadNum-1;
	m_ToolTipArray.Add(stToolText);
	int nCount=m_ToolTipArray.GetSize();
	m_strToolTip="";
	for(int i=1;i<nCount;i++)
	{
		stToolText=m_ToolTipArray.GetAt(i);
		m_strToolTip+=stToolText.strText;
		m_strToolTip+="\n";
	}
	m_strToolTip=m_strToolTip.Left(m_strToolTip.GetLength()-1);

}


void CMainFrame::OnDropwinTool() 
{
	// TODO: Add your command handler code here

	DOWN_PARAM stDownParam;
	
	stDownParam.strPathName=m_SavePath;
	stDownParam.nAgainNumber=m_nAgainNumber;
	stDownParam.bRename=m_bRename;
	stDownParam.pMainWnd=this;

	CDownParamPage pDownPage((void*)&stDownParam);
	CDownParamSheet pDownSheet("下载默认设置-Leo",NULL,0);
	pDownSheet.AddPage(&pDownPage);
	pDownSheet.DoModal();
	
}

void CMainFrame::OnDownParamPage(WPARAM wParam,LPARAM lParam)
{
	DOWN_PARAM *pDownParam=(DOWN_PARAM*)lParam;
	
	m_SavePath=pDownParam->strPathName;
	m_nAgainNumber=pDownParam->nAgainNumber;
	m_bRename=pDownParam->bRename;

	CFileFind pFind;
	if(!pFind.FindFile((LPCTSTR)m_SavePath))
		::CreateDirectory((LPCTSTR)m_SavePath,NULL);
	pFind.Close();


	HKEY nhKeyRoot=HKEY_CURRENT_USER;
	LPSTR nszProgramePath="Software\\BLeo2004\\Dir";
	
	m_DownRegistry.Open(nhKeyRoot,nszProgramePath);
	m_DownRegistry.Write("DownLoadDir",(LPCTSTR)m_SavePath);
	m_DownRegistry.Write("AgainNumber",m_nAgainNumber);
	m_DownRegistry.Write("Rename",m_bRename);
	m_DownRegistry.Close();

}

//*********Set Break point Recv***********
void CMainFrame::OnDownStartBreak(WPARAM wParam,LPARAM lParam)
{
	DOWN_STARTBREAK *stDownBreak=(DOWN_STARTBREAK*)lParam;
	int i=stDownBreak->nParentNum;

	DROP_URL pDropUrl;
	pDropUrl.nBreakRev=stDownBreak->nBreakRcv;  //1 yes or 0 no
	pDropUrl.pMainWnd=this;
	pDropUrl.strComment=stDownBreak->strComment;
	pDropUrl.strFilePath=stDownBreak->strFilePath;
	pDropUrl.strLocatinUrl=stDownBreak->strLocationUrl;
	pDropUrl.nParentNum=i;     //ParentNum
	pDropUrl.strRegPath=stDownBreak->strRegSubPath;   //RegPath
	
	OnDownAddJobPage(0,(LPARAM)&pDropUrl);

}

void CMainFrame::OnDownStopBreak(WPARAM wParam,LPARAM lParam)
{
	if(m_nThreadNumber>0)
	{
		m_nThreadNumber--;  //!!!
	
		DOWN_STOPBREAK *pDownStop=(DOWN_STOPBREAK*)lParam;
		int nPID=pDownStop->nPID;

		CHttpDownLoad *pHttpDownLoad;
		THREADNUMBER  *stThreadNumber;
		for(POSITION pos=m_HttpDLPtr.GetStartPosition();pos!=NULL;)
		{
			m_HttpDLPtr.GetNextAssoc(pos,(void*&)stThreadNumber,(void*&)pHttpDownLoad);
			int iPID=pHttpDownLoad->m_stLeoDownInfo.nPID;
			if(nPID==iPID && !(pHttpDownLoad->m_bIsEndThe))
			{
				//pHttpDownLoad->SetThreadEnd(TRUE);
				pHttpDownLoad->m_bIsEndThe=TRUE;


				if(pHttpDownLoad->m_bIsAfxBegin5Thread0)
				{
					TerminateThread(pHttpDownLoad->m_MulHand[0],0);
					//CloseHandle(pHttpDownLoad->m_MulHand[0]);
				}
				if(pHttpDownLoad->m_bIsAfxBegin5Thread1)
				{
					TerminateThread(pHttpDownLoad->m_MulHand[1],0);
					//CloseHandle(pHttpDownLoad->m_MulHand[1]);
				}
				if(pHttpDownLoad->m_bIsAfxBegin5Thread2)
				{
					TerminateThread(pHttpDownLoad->m_MulHand[2],0);
					//CloseHandle(pHttpDownLoad->m_MulHand[2]);
				}
				if(pHttpDownLoad->m_bIsAfxBegin5Thread3)
				{
					TerminateThread(pHttpDownLoad->m_MulHand[3],0);
					//CloseHandle(pHttpDownLoad->m_MulHand[3]);
				}
				if(pHttpDownLoad->m_bIsAfxBegin5Thread4)
				{
					TerminateThread(pHttpDownLoad->m_MulHand[4],0);
					//CloseHandle(pHttpDownLoad->m_MulHand[4]);
				}
				break;
			}
		}

		BTOOLTEXT stToolText;
		int nCount=m_ToolTipArray.GetSize();
		int iItem=nPID-1;
		for(int i=1;i<nCount;i++)
		{
			stToolText=m_ToolTipArray.GetAt(i);
			if(iItem==stToolText.iItem)
			{
				m_ToolTipArray.RemoveAt(i);
				break;
			}
		}

		m_strToolTip="";
		nCount=m_ToolTipArray.GetSize();
		if(nCount==1)
		{
			m_strToolTip="Leo";
			m_DropWin->KillTimerPaint(0);
		}
		else
		{
			for(i=1;i<nCount;i++)
			{
				stToolText=m_ToolTipArray.GetAt(i);
				m_strToolTip+=stToolText.strText;
				m_strToolTip+="\n";
			}
			m_strToolTip=m_strToolTip.Left(m_strToolTip.GetLength()-1);
		}
	
		//stToolText.strText=m_strToolTip;
		//::SendMessage(m_DropWin->m_pDropView->GetSafeHwnd(),WM_BTOOLEXTENTCX,0,(LPARAM)&stToolText);

	}

}


void CMainFrame::OnDownDelA(WPARAM wParam,LPARAM lParam)

⌨️ 快捷键说明

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