📄 taskdlg.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 + -