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

📄 mainfrm.cpp

📁 类似flashget下载工具代码 本来想在完善了上传的
💻 CPP
📖 第 1 页 / 共 3 页
字号:
     LPPercent Per =(LPPercent)lParam;
     Calculateprogress(Per->PID,Per->CID,Per->size);
     delete Per;
}


//程序设置
void CMainFrame::OnMenuSetting() 
{     
	  
	  CCustomDlg dlg;
	  dlg.SetRegister(CSetupRegister::Instance());
	  dlg.DoModal();
	
}

void CMainFrame::OnMenuPuls() 
{}

//暂停任务
void CMainFrame::OnEditStop() 
{
	 //获得要暂停任务的,文件名
	 CMyInsaneBTView* pView = NULL;
	 pView = (CMyInsaneBTView*)GetActiveView();
	 CString FileName;
	 LPHTTPDL_INFO http_Info;
	 CGeoHttpDown* http = NULL;
	 POSITION POS= pView->m_downlisctr.GetFirstSelectedItemPosition();
	 int nItem = pView->m_downlisctr.GetNextSelectedItem(POS);
     FileName = pView->m_downlisctr.GetItemText(nItem,0);
	 
	 HTTPDLINFO::iterator it = m_http_info.begin();
	 for(;it!=m_http_info.end();it++)
	 {
	     http_Info = *it;
		 if(http_Info->m_Filename ==FileName)
			break;
	 }
     
	 http = (CGeoHttpDown*)http_Info->m_HTTPDOWNCLS;
	 http->StopTimer(1);
	 http->StopTimer(2);
     ::ResetEvent(http_Info->m_HandleStop);
     WriteDownLoadLog(nItem,1,"暂停");
}
//开始任务
void CMainFrame::OnEditStart() 
{
	 //获得要开始任务的,文件名
	 CMyInsaneBTView* pView = NULL;
	 pView = (CMyInsaneBTView*)GetActiveView();
	 CString FileName;
	 LPHTTPDL_INFO http_Info;
	 CGeoHttpDown* http = NULL;

	 POSITION POS= pView->m_downlisctr.GetFirstSelectedItemPosition();
	 int nItem = pView->m_downlisctr.GetNextSelectedItem(POS);
     FileName = pView->m_downlisctr.GetItemText(nItem,0);
	 
	 HTTPDLINFO::iterator it = m_http_info.begin();
	 for(;it!=m_http_info.end();it++)
	 {
	     http_Info = *it;
		 if(http_Info->m_Filename ==FileName)
			break;
	 }
     
	 http = (CGeoHttpDown*)http_Info->m_HTTPDOWNCLS;
	 http->BeginTimer(1);
	 http->BeginTimer(2);
     ::SetEvent(http_Info->m_HandleStop);
	 //判断是否为断点下载
	 ::SetEvent(http_Info->m_Break_handle);
     WriteDownLoadLog(nItem,1,"下载中...");
}

//
void CMainFrame::OnClose()
{
     //最小化主窗体
     ShowWindow(SW_HIDE);
     m_Hide = false;
}



void CMainFrame::OnMenuHideShow() 
{
     	if(m_Hide)
		{
		   ShowWindow(SW_HIDE);
		   m_Hide = false;
		}
		else
		{
		   ShowWindow(SW_MAXIMIZE);
           m_Hide = true;
		}
}

//退出程序
void CMainFrame::OnMenuExit() 
{    
	
     //(1)暂停所有正在下载线程  停止定时器
	 StopAllDown();
	 //(2)保存在在下载信息
	 SaveAllDown();
	 //(4)释放内存
     Clear();
	 //断开数据库连接
	 CDataBase::Instance()->m_DBConn.Close();
	 CFrameWnd::OnClose();
}

 //停止所有下载任务
void CMainFrame::StopAllDown()
{
     LPHTTPDL_INFO http_Info;
	 CGeoHttpDown* http = NULL;
     
	 HTTPDLINFO::iterator it = m_http_info.begin();
	 for(;it!=m_http_info.end();it++)
	 {
	     http_Info = *it;
		 //强行写入下载线程缓冲区
         http_Info->BreakInfo0.exit = true;
         http_Info->BreakInfo1.exit = true;
		 http_Info->BreakInfo2.exit = true;
		 http_Info->BreakInfo3.exit = true;
		 http_Info->BreakInfo4.exit = true;
		 ::ResetEvent(http_Info->m_HandleStop);

		 http = (CGeoHttpDown*)http_Info->m_HTTPDOWNCLS;
		 http->StopTimer(1);
		 http->StopTimer(2);
		
	 }


}

//保存下载信息
void CMainFrame::SaveAllDown()
{
     LPHTTPDL_INFO http_Info;
	 CGeoHttpDown* http = NULL;
     
	 HTTPDLINFO::iterator it = m_http_info.begin();
	 for(;it!=m_http_info.end();it++)
	 {
	     http_Info = *it;
	     http_Info->CFG->CFG_Close();
	 }


}

//释放内存
void CMainFrame::Clear()
{
     m_http_info.clear();
}

void CMainFrame::OnMenuXp() 
{

	CBCGPVisualManager::SetDefaultManager(RUNTIME_CLASS (CBCGPVisualManagerXP));
	m_MenuXP=true;
	m_MenuOffice2003=false;
	m_MenuOffiec2007_Laun=false;
    m_MenuOffice2007_Silver=false;
    m_MenuOffice2007_Obsidian=false;

}


void CMainFrame::OnMENUOffice2003() 
{
	CBCGPVisualManager::SetDefaultManager(RUNTIME_CLASS (CBCGPVisualManager2003));
	m_MenuXP=false;
	m_MenuOffice2003=true;
	m_MenuOffiec2007_Laun=false;
    m_MenuOffice2007_Silver=false;
    m_MenuOffice2007_Obsidian=false;
    
}


void CMainFrame::OnMENULuna() 
{
    CBCGPVisualManager::SetDefaultManager(RUNTIME_CLASS (CBCGPVisualManager2007));
   	CBCGPVisualManager2007::SetStyle (CBCGPVisualManager2007::VS2007_LunaBlue);
	UpdateWindowSkin();
	m_MenuXP=false;
	m_MenuOffice2003=false;
	m_MenuOffiec2007_Laun=true;
    m_MenuOffice2007_Silver=false;
    m_MenuOffice2007_Obsidian=false;

}

void CMainFrame::OnMenuSilver() 
{    

	CBCGPVisualManager::SetDefaultManager(RUNTIME_CLASS (CBCGPVisualManager2007));

	CBCGPVisualManager2007::SetStyle (CBCGPVisualManager2007::VS2007_Silver);
    UpdateWindowSkin();
	m_MenuXP=false;
	m_MenuOffice2003=false;
	m_MenuOffiec2007_Laun=false;
    m_MenuOffice2007_Silver=true;
    m_MenuOffice2007_Obsidian=false;
	
}

void CMainFrame::OnMenuObsidian() 
{
    CBCGPVisualManager::SetDefaultManager(RUNTIME_CLASS (CBCGPVisualManager2007));
	CBCGPVisualManager2007::SetStyle (CBCGPVisualManager2007::VS2007_ObsidianBlack);
	UpdateWindowSkin();
	m_MenuXP=false;
	m_MenuOffice2003=false;
	m_MenuOffiec2007_Laun=false;
    m_MenuOffice2007_Silver=false;
    m_MenuOffice2007_Obsidian=true;
}

void CMainFrame::UpdateWindowSkin()
{    
	CRect rectWindow;
	GetWindowRect (rectWindow);

	SetWindowPos(&wndTop, 0, 0, rectWindow.Width (), rectWindow.Height (), 
		SWP_NOMOVE | SWP_NOZORDER);

	RecalcLayout ();

    RedrawWindow (NULL, NULL, RDW_ALLCHILDREN | RDW_INVALIDATE | RDW_UPDATENOW | RDW_FRAME | RDW_ERASE);
}

void CMainFrame::OnUpdateMenuXp(CCmdUI* pCmdUI) 
{
     pCmdUI->SetCheck(m_MenuXP);
	
}

void CMainFrame::OnUpdateMENUOffice2003(CCmdUI* pCmdUI) 
{
    pCmdUI->SetCheck(m_MenuOffice2003);	
}

//开机启动
void CMainFrame::OnMenuStart() 
{
	 if(!m_AutoStart)
	 {
	    char FilePath[_MAX_PATH];
        GetModuleFileName(NULL,FilePath,_MAX_PATH);
		CString strkey="SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run";
	    HKEY hResult;
	    //打开注册表
		RegOpenKey(HKEY_LOCAL_MACHINE,(LPCSTR)strkey,&hResult);
		RegSetValueEx(hResult,"易下载",0,REG_SZ,(const unsigned char *)FilePath,sizeof(char) * strlen(FilePath));
	    RegCloseKey(hResult);
		m_AutoStart = true;
	 }
	 else
	 {  
		char FilePath[_MAX_PATH];
		memset(FilePath,0,sizeof(FilePath));
	    CString strkey="SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run";
	    HKEY hResult;
	    //打开注册表
		RegOpenKey(HKEY_LOCAL_MACHINE,(LPCSTR)strkey,&hResult);
		RegSetValueEx(hResult,"易下载",0,REG_SZ,(const unsigned char *)FilePath,sizeof(char) * strlen(FilePath));
	    RegCloseKey(hResult);
		m_AutoStart = false;
	 
	 }
}

void CMainFrame::OnUpdateMenuStart(CCmdUI* pCmdUI) 
{
     pCmdUI->SetCheck(m_AutoStart);
}

void CMainFrame::SetConfig()
{
	 CString face = CSetupRegister::Instance()->m_FaceStyle;
	 SetSkin(face.GetBuffer(1));
}
/***********
Windows XP
Office 2003
Office 2007-Laun
Office 2007-Silver
office 2007-Obsidian
***********/
void CMainFrame::SetSkin(const char* Skin)
{    
	 CString sSkin = Skin;
     if(sSkin=="Windows XP")OnMenuXp();
     else if(sSkin=="Office 2003")OnMENUOffice2003();
	 else if(sSkin=="Office 2007-Laun")OnMENULuna();
	 else if(sSkin=="Office 2007-Silver")OnMenuSilver();
	 else if(sSkin=="office 2007-Obsidian")OnMenuObsidian();
	 
}

void CMainFrame::OnMyIconNotify(WPARAM wParam,LPARAM lParam)
{
	UINT uMouseMsg=LOWORD(lParam);
	switch(uMouseMsg)
	{
	case WM_LBUTTONDBLCLK:
		SendMessage(WM_CLOSE,0,0);
		break;
		
	case WM_LBUTTONDOWN:
		Shell_NotifyIcon(NIM_MODIFY,&m_nData);
		break;
    case WM_RBUTTONUP:
		{
		   	CMenu menu, *pSubMenu;
		    if (!menu.LoadMenu(IDR_MENU_TRAY)) return;
		    if (!(pSubMenu = menu.GetSubMenu(0))) return;
			::SetMenuDefaultItem(pSubMenu->m_hMenu, 0, TRUE);

		    //Display and track the popup menu
		    CPoint pos;
		    GetCursorPos(&pos);
		    ::SetForegroundWindow(m_hWnd);  
		    ::TrackPopupMenu(pSubMenu->m_hMenu, 0, pos.x, pos.y, 0, m_hWnd, NULL);
			menu.DestroyMenu();
		}
		break;
	}


}

//创建托盘
void CMainFrame::CreateNotifyIcon()
{

	m_nData.cbSize=sizeof(NOTIFYICONDATA);
	m_nData.hWnd=GetSafeHwnd();
	m_nData.uFlags=NIF_MESSAGE|NIF_INFO|NIF_ICON;
	m_nData.uCallbackMessage=MYWM_NOTIFYICON;
	m_nData.uID=IDR_MAINFRAME;
	m_nData.uTimeout=1000;
	m_nData.hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME);
	m_nData.dwInfoFlags=NIF_INFO;
	
	_tcscpy(m_nData.szInfoTitle,"易下载");
	_tcscpy(m_nData.szInfo,"欢迎使用");
    
	Shell_NotifyIcon(NIM_ADD,&m_nData);

}

void CMainFrame::OnDownLoadFinish(WPARAM wParam,LPARAM lParam)
{   
	LPDownLoadFinish DownFinish = (LPDownLoadFinish)lParam;
    _tcscpy(m_nData.szInfoTitle,DownFinish->caption);
	_tcscpy(m_nData.szInfo,DownFinish->info);
	m_nData.uTimeout=1000;
	m_nData.uVersion=NOTIFYICON_VERSION;			
	Shell_NotifyIcon(NIM_MODIFY,&m_nData);

}


void CMainFrame::OnMenuexit() 
{
     OnMenuExit();
}

 //获得选种项目的文件名字
CString CMainFrame::GetSelectItem()
{
     //获得删除任务名字
	
	 CMyInsaneBTView* pView =(CMyInsaneBTView*) GetActiveView();
	 POSITION POS = pView->m_downlisctr.GetFirstSelectedItemPosition();
	 int nItem = pView->m_downlisctr.GetNextSelectedItem(POS);
     CString FileName = pView->m_downlisctr.GetItemText(nItem,0);
	 pView->m_downlisctr.DeleteItem(nItem);
     return FileName;
}
//删除任务
void CMainFrame::OnMenuDeleteDown() 
{
     //(1)删除下载文件,删除数据库纪录
	 CString FileName = GetSelectItem(); 
     DeleteFile(FileName.GetBuffer(1));
}

//删除任务文件
void CMainFrame::DeleteFile(const char* FileName)
{
     CString Name = FileName;
     CString File_Path;
     CString strConnect =CDataBase::Instance()->m_Connstring;
	//连接数据库
	if(!CDataBase::Instance()->Opendb(strConnect))
	{   
		AfxMessageBox("连接数据库失败");
        return;
	}
	//获得代理信息
    CString SQL = "SELECT * FROM CFG_PATH";
    LPProxyInfo proxy = NULL;
    CADORecordset* pRs = new CADORecordset(&(CDataBase::Instance()->m_DBConn));
    if(!pRs->Open((LPCTSTR)SQL))
	    return;
    
	if(!pRs->IsEof())
	{   
		pRs->MoveFirst();
	    while(!pRs->IsEof())
		{   
	
		
		    pRs->GetFieldValue("FilePath",File_Path);
	        if(File_Path.Find(FileName))
			{  
			   //获得cgf ,和下载文件路径
               CString cfg_path;
			   CString url;
               pRs->GetFieldValue("Path",cfg_path);
			   CFile::Remove(cfg_path);
			   File_Path+=".utd";
			   CFile::Remove(File_Path);


			   //删除纪录
               pRs->GetFieldValue("URL",url);
			   CString SQL;
			   SQL.Format("DELETE FROM CFG_PATH WHERE URL=\"%s\"",url);
               CDataBase::Instance()->m_DBConn.Execute(SQL);
			   break;
			}
            pRs->MoveNext();
            
		
		}//while
	
	
	}

}

⌨️ 快捷键说明

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