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

📄 taskdlg.cpp

📁 类似flashget下载工具代码 本来想在完善了上传的
💻 CPP
字号:
// TaskDlg.cpp : implementation file
//

#include "stdafx.h"
#include "MyInsaneBT.h"
#include "TaskDlg.h"
#include "MainFrm.h"
#include "GeoHttpDown.h"
#include "DataBase.h"

#include "CataLogDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CTaskDlg dialog


CTaskDlg::CTaskDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CTaskDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CTaskDlg)

		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
}


void CTaskDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CTaskDlg)

	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CTaskDlg, CDialog)
	//{{AFX_MSG_MAP(CTaskDlg)
	ON_BN_CLICKED(IDC_BUT_SET_PATH, OnButSetPath)
	ON_CBN_SELCHANGE(IDC_COMBOX_PICTYPE, OnSelchangeComboxPictype)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CTaskDlg message handlers

BOOL CTaskDlg::OnInitDialog()
{
     
    m_ComboxEx = (CTypeComboBox*)GetDlgItem(IDC_COMBOX_PICTYPE);
	
	CString DirName; //目录名字
    //默认下载路局
	CString DefaultDir = _T("c:\\MyDown");

    CBitmap bitmap;
	BOOL r = bitmap.LoadBitmap(IDB_BITMAP_GET);
	BITMAP MapInfo;
	bitmap.GetBitmap(&MapInfo);
	int cx,cy;
	cx = MapInfo.bmWidth;
	cy = MapInfo.bmHeight;


    m_imagelist.Create(cx,cy,ILC_COLOR8|ILC_MASK,16,4);   
	m_imagelist.Add(&bitmap,RGB(0,0,0));
    
    bitmap.Detach();
	bitmap.LoadBitmap(IDB_BITMAP_ALEADY);
	m_imagelist.Add(&bitmap,RGB(0,0,0));
	
    bitmap.Detach();
	bitmap.LoadBitmap(IDB_BITMAP_FLODE);
	m_imagelist.Add(&bitmap,RGB(0,0,0));
	


    m_ComboxEx->SetImageList(&m_imagelist);
    CString text = _T("");

    COMBOBOXEXITEM cbei;
	//memset(&cbei,0,sizeof(COMBOBOXEXITEM));
	cbei.mask = CBEIF_TEXT | CBEIF_IMAGE | CBEIF_SELECTEDIMAGE;
    cbei.iItem = 0;
	cbei.pszText = (LPTSTR)(LPCTSTR)text;
    cbei.iImage = 0;
    cbei.iSelectedImage =0;
    m_ComboxEx->InsertItem(&cbei);
    /////////////////////////////
	text = _T("已下载");
	//memset(&cbei,0,sizeof(COMBOBOXEXITEM));
	cbei.mask = CBEIF_TEXT | CBEIF_IMAGE | CBEIF_SELECTEDIMAGE;
    cbei.iItem = 1;
	cbei.pszText = (LPTSTR)(LPCTSTR)text;
    cbei.iImage = 1;
    cbei.iSelectedImage =1;
    m_ComboxEx->InsertItem(&cbei);
	//创建默认目录
	CreateDir(DefaultDir.GetBuffer(0));
	DefaultDir.ReleaseBuffer();
	
   ////////////////////////////////////
   	text = _T("游戏");
	cbei.mask = CBEIF_TEXT | CBEIF_IMAGE | CBEIF_SELECTEDIMAGE;
    cbei.iItem = 2;
	cbei.pszText = (LPTSTR)(LPCTSTR)text;
    cbei.iImage = 2;
    cbei.iSelectedImage =2;
    m_ComboxEx->InsertItem(&cbei);
    DirName = DefaultDir + "\\Game\\";
    //保存到数据库
	CCataLogDlg catalog;
	catalog.SaveType(text,DirName);
    ///////////////////////////////////////////
    text = _T("电影");
	cbei.mask = CBEIF_TEXT | CBEIF_IMAGE | CBEIF_SELECTEDIMAGE;
    cbei.iItem = 3;
	cbei.pszText = (LPTSTR)(LPCTSTR)text;
    cbei.iImage = 2;
    cbei.iSelectedImage =2;
    m_ComboxEx->InsertItem(&cbei);
    DirName = DefaultDir + "\\Game\\";
    //保存到数据库
    catalog.SaveType(text,DirName);

    ////////////////////////////////
    text = _T("MP3");
	cbei.mask = CBEIF_TEXT | CBEIF_IMAGE | CBEIF_SELECTEDIMAGE;
    cbei.iItem = 3;
	cbei.pszText = (LPTSTR)(LPCTSTR)text;
    cbei.iImage = 2;
    cbei.iSelectedImage =2;
    m_ComboxEx->InsertItem(&cbei);

	m_ComboxEx->SetCurSel(1);
	DirName = DefaultDir + "\\mp3\\";
    catalog.SaveType(text,DirName);

	PURL purl = NULL;
	CMainFrame* pFrm = (CMainFrame*)AfxGetApp()->m_pMainWnd;
    purl = pFrm->url;
    CEdit* pEdit = (CEdit*)GetDlgItem(IDC_EDIT_URL);
	pEdit->SetWindowText(purl->m_url);
    

    pEdit = (CEdit*)GetDlgItem(IDC_EDIT_SET);
	pEdit->SetWindowText(purl->m_url);



	CComboBox* box = (CComboBox*)GetDlgItem(IDC_COMBO_PATH);
    box->AddString("c:\\MyDown");
    box->SetCurSel(0);
    
	SetForegroundWindow(); 
	return TRUE;
}

void CTaskDlg::OnButSetPath() 
{
	  BROWSEINFO   bi; //BROWSEINFO结构体   
	  TCHAR   Buffer[512]="";   
	  TCHAR   FullPath[512]="";   
	  bi.hwndOwner   =   m_hWnd; //m_hWnd你的程序主窗口   
	  bi.pidlRoot   =   NULL;   
	  bi.pszDisplayName   =   Buffer; //返回选择的目录名的缓冲区   
	  bi.lpszTitle   =   "下载文件路局"; //弹出的窗口的文字提示   
	  bi.ulFlags   =   BIF_RETURNONLYFSDIRS|BIF_EDITBOX|BIF_BROWSEFORCOMPUTER ; //只返回目录。其他标志看MSDN   
	  bi.lpfn   =   NULL; 
	  bi.lParam   =   0;   
	  bi.iImage   =   0;   
	  ITEMIDLIST* pidl = ::SHBrowseForFolder(&bi); //显示弹出窗口,ITEMIDLIST很重要   
	  if(::SHGetPathFromIDList(pidl,FullPath)) //在ITEMIDLIST中得到目录名的整个路径   
	  {   
		//成功   
		CString FsPath = FullPath;
		CComboBox* box = (CComboBox*)GetDlgItem(IDC_COMBO_PATH);
		box->InsertString(0,FsPath);
		box->SetCurSel(0);
	  }   
   

}

void CTaskDlg::OnOK() 
{
		//开始下载
        

		CString stemp;
		LPDOWN_INFO downinfo = new DOWN_INFO();
		//url
		CEdit* pEdit = (CEdit*)GetDlgItem(IDC_EDIT_URL);
		pEdit->GetWindowText(stemp);
		downinfo->strLocationUrl = stemp; //真正下载地址
		downinfo->priLocationUrl = stemp; //原始URL
        //判断该URL是否已经存在,如果存在表示可以断点下载
		if(!Is_Exit_Record(stemp.GetBuffer(1)))
		{  
		   AfxMessageBox("该下载地址已经存在列表中");
		   CDialog::OnOK();
		   return;
		}
		//保存路局
		CComboBox* box = (CComboBox*)GetDlgItem(IDC_COMBO_PATH);
		CMainFrame* pFrm = (CMainFrame*)AfxGetApp()->m_pMainWnd;
		int select = box->GetCurSel();
		box->GetLBText(select,stemp);
		downinfo->nSocketLinkNum = 10;
		downinfo->strFilePath = stemp; //文件保存路局
        downinfo->pMainFrame = (CWnd*)pFrm;
		downinfo->nSocketLinkNum = 3;
		//获得缓存大小
        //如果路局不存在,就创建
        CreateDir(stemp.GetBuffer(0));
		stemp.ReleaseBuffer();

		CRect rect;
		GetClientRect(&rect);
		CGeoHttpDown* httpdown = new CGeoHttpDown(downinfo);
		httpdown->Create(NULL,NULL,WS_CHILD,rect,pFrm,(UINT)0);
		
		//存储一个下在
		pFrm->m_httpdwonVec.push_back(httpdown);
        
		
		//判断是否使用代理下在
		AfxBeginThread(StartDownLoad,(void*)httpdown);
		CDialog::OnOK();
}

bool CTaskDlg::Is_Exit_Record(const char* url)
{
 
        CString sUrl = url;
		CString strConnect =CDataBase::Instance()->m_Connstring;
		//连接数据库
		if(!CDataBase::Instance()->Opendb(strConnect))
		{   
			AfxMessageBox("连接数据库失败");
			return false;
		}
		//获得代理信息
   
		CString SQL;
		SQL.Format("SELECT * FROM CFG_PATH WHERE URL=\"%s\"",sUrl);
		CADORecordset* pRs = new CADORecordset(&(CDataBase::Instance()->m_DBConn));
		if(!pRs->Open((LPCTSTR)SQL))
			return false;

		if(pRs->IsEof())
			return true;
			return false;

}

//查询该目录对应的下在位置
void CTaskDlg::OnSelchangeComboxPictype() 
{
    //查询该目录对应的下在位置
	CString CataLogName;
	int Index;
    CString sPath;
  
	m_ComboxEx = (CTypeComboBox*)GetDlgItem(IDC_COMBOX_PICTYPE);
	CComboBox* m_ComPath = (CComboBox*)GetDlgItem(IDC_COMBO_PATH);
	
	Index = m_ComboxEx->GetCurSel();
	m_ComboxEx->GetLBText(Index,CataLogName);
    
	//查询数据库
    sPath = GetSavePath(CataLogName);
    m_ComPath->AddString(sPath);
    int count = m_ComPath->GetCount(); 
    for(int i=0;i<count;i++)
	{   
		CString ss;
		m_ComPath->GetLBText(i,ss);
	    if(ss == sPath)
		{  
		   m_ComPath->SetCurSel(i);
		   break;
		}
	}

}

//获得文件下载位置
CString CTaskDlg::GetSavePath(const char* sName)
{
        CString sPath;
        CString sUrl = sName;
		CString strConnect =CDataBase::Instance()->m_Connstring;
		//连接数据库
		if(!CDataBase::Instance()->Opendb(strConnect))
		{   
			AfxMessageBox("连接数据库失败");
			return "";
		}
		//获得代理信息
   
		CString SQL;
		SQL.Format("SELECT * FROM catalogtab WHERE Name=\"%s\"",sUrl);
		CADORecordset* pRs = new CADORecordset(&(CDataBase::Instance()->m_DBConn));
		if(!pRs->Open((LPCTSTR)SQL))
			return "";

	    if(!pRs->IsEOF())
		{
		    pRs->MoveFirst();
			pRs->GetFieldValue("catalog",sPath);
            pRs->MoveNext();		  
		}
		return sPath;
}

⌨️ 快捷键说明

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