📄 mainfrm.cpp
字号:
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 + -