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

📄 mainfrm.cpp

📁 模拟迅雷的下载工具软件
💻 CPP
📖 第 1 页 / 共 4 页
字号:
// MainFrm.cpp : implementation of the CMainFrame class
//

#include "stdafx.h"
#include "LeoBlock2004.h"

#include "MainFrm.h"
#include "DlgIETool.h"



//#include "mmsystem.h"
///winmm.lib
//Close IEhelpdll and CInternetView Navigate

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif


/////////////////////////////////////////////////////////////////////////////
// CMainFrame

int    m_nThreadNumber=0;

/////
IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)

BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
	//{{AFX_MSG_MAP(CMainFrame)
	ON_WM_CREATE()
	ON_COMMAND(ID_IE_UNREG, OnIeUnreg)
	ON_COMMAND(ID_IE_TOOL, OnIeTool)
	ON_COMMAND(ID_IE_HOSTROYDEL, OnIeHostroydel)
	ON_COMMAND(ID_DOWN_TOOL, OnDownTool)
	ON_COMMAND(ID_DOWN_DROPWIN, OnDownDropwin)
	ON_COMMAND(ID_VIEW_LEO_TOOLBAR, OnViewLeoToolbar)
	ON_COMMAND(ID_DROPWIN_ADD_JOB, OnDropwinAddJob)
	ON_UPDATE_COMMAND_UI(ID_DOWN_DROPWIN, OnUpdateDownDropwin)
	ON_COMMAND(ID_DROPWIN_TOOL, OnDropwinTool)
	ON_WM_CLOSE()
	ON_COMMAND(ID_EXIT, OnExit)
	ON_COMMAND(ID_BLOCK_ANIMATED, OnBlockAnimated)
	ON_UPDATE_COMMAND_UI(ID_BLOCK_ANIMATED, OnUpdateBlockAnimated)
	ON_COMMAND(ID_BLOCK_FLASH, OnBlockFlash)
	ON_UPDATE_COMMAND_UI(ID_BLOCK_FLASH, OnUpdateBlockFlash)
	ON_COMMAND(ID_BLOCK_PICTURE, OnBlockPicture)
	ON_UPDATE_COMMAND_UI(ID_BLOCK_PICTURE, OnUpdateBlockPicture)
	ON_COMMAND(ID_BLOCK_POPUPWIN, OnBlockPopupwin)
	ON_UPDATE_COMMAND_UI(ID_BLOCK_POPUPWIN, OnUpdateBlockPopupwin)
	ON_COMMAND(ID_BLOCK_URL, OnBlockUrl)
	ON_UPDATE_COMMAND_UI(ID_BLOCK_URL, OnUpdateBlockUrl)
	ON_COMMAND(ID_WWW_URL, OnWwwUrl)
	ON_COMMAND(ID_MENU_EXIT, OnMenuExit)
	ON_WM_SIZE()
	ON_COMMAND(ID_HELP_NOTE, OnHelpNote)
	ON_UPDATE_COMMAND_UI(ID_VIEW_LEO_TOOLBAR, OnUpdateViewLeoToolbar)
	ON_COMMAND(ID_VIEW_LEO_TOOLBARFIND, OnViewLeoToolbarfind)
	ON_UPDATE_COMMAND_UI(ID_VIEW_LEO_TOOLBARFIND, OnUpdateViewLeoToolbarfind)
	ON_COMMAND(ID_DOWN_BUTTON, OnDownButton)
	ON_COMMAND(ID_APP_DROP_WINDOW, OnAppDropWindow)
	ON_UPDATE_COMMAND_UI(ID_APP_DROP_WINDOW, OnUpdateAppDropWindow)
	ON_COMMAND(ID_APP_MAIN_WINDOWS, OnAppMainWindows)
	ON_UPDATE_COMMAND_UI(ID_APP_MAIN_WINDOWS, OnUpdateAppMainWindows)
	ON_COMMAND(D_DROPWIN_MAINWINDOWS, OnDropwinMainwindows)
	ON_UPDATE_COMMAND_UI(D_DROPWIN_MAINWINDOWS, OnUpdateDropwinMainwindows)
	ON_COMMAND(ID_MAIN_TOOL_AUTORUN, OnMainToolAutorun)
	ON_UPDATE_COMMAND_UI(ID_MAIN_TOOL_AUTORUN, OnUpdateMainToolAutorun)
	//}}AFX_MSG_MAP
	ON_MESSAGE(WM_DROPVIEW,OnDropUrl)
	ON_MESSAGE(WM_DOWNADDJOBPAGE,OnDownAddJobPage)
	ON_MESSAGE(WM_DOWNPARAMSET,OnDownParamPage)
	ON_MESSAGE(WM_DOWNSTARTBREAK,OnDownStartBreak)
	ON_MESSAGE(WM_DOWNSTOPBREAK,OnDownStopBreak)
	ON_MESSAGE(WM_DOWNDELA,OnDownDelA)
	ON_MESSAGE(LEO_DLGURLLISTADD,OnDlgUrlAdd)
	ON_MESSAGE(LEO_DLGURLLISTDEL,OnDlgUrlDel)
	ON_MESSAGE(LEO_DLGURLLISTDELALL,OnDlgUrlDelAll)
	ON_MESSAGE(WM_TRAYNOTIFY,OnTrayNotification)
	ON_MESSAGE(WM_HIDDEWINDOW,OnHideWindow)
	ON_MESSAGE(WM_SHOWWINDOWL,OnShowWindowL)
	ON_MESSAGE(WM_TESTLIST,OnTestList)
	ON_MESSAGE(WM_WRITEREG2,OnWriteReg2)
	ON_MESSAGE(WM_WRITEREGMAIN,OnWriteRegMain)
	ON_MESSAGE(WM_WRITELISTDATA,OnWriteListData)
	ON_MESSAGE(WM_WRITEREGLISTCTRL,OnWriteRegListCtrl)
	ON_MESSAGE(WM_CAULUETIMER,OnCaulueTimer)
	ON_MESSAGE(WM_DECRSETHNUM,OnDecreaseThNum)
	ON_MESSAGE(WM_BTOOLEXTENTCX,OnBToolExtentcx)
END_MESSAGE_MAP()

static UINT indicators[] =
{
	ID_SEPARATOR,           // status line indicator
	ID_INDICATOR_CAPS,
	ID_INDICATOR_NUM,
	ID_INDICATOR_SCRL,
};

/////////////////////////////////////////////////////////////////////////////
// CMainFrame construction/destruction

CMainFrame::CMainFrame()
{
	// TODO: add member initialization code here
	nImageList.Create(16,16,TRUE|ILC_COLOR8|ILC_MASK,1,1);
	m_hIcon=AfxGetApp()->LoadIcon(IDI_ICON4);
	int i=nImageList.Add(m_hIcon);
	m_hIcon=nImageList.ExtractIcon(i);

	m_nAgainNumber=10;
	m_DropWin=NULL;
	m_bIsDropWin=FALSE;
	m_Url="";
	m_Comment="";
	m_SavePath="";
	m_FileName="";
	m_InstallPath="";
	m_strToolTip="";
	m_bIsReadTip=FALSE;
	m_nPID=0;
	//Block
	nszNPopupWin="BlockPopupWin";
	nszNPicture="BlockPicture";
	nszNAnimated="BlockAnimated";
	nszNFlash="BlockFlash";
	nszNBlockUrl="BlockUrl";
	m_bIsOpenNewIE=FALSE;
	m_bRename=TRUE;
	m_bIsMainWindows=TRUE;

}

CMainFrame::~CMainFrame()
{

	if(m_DropWin->GetSafeHwnd())
		delete m_DropWin;

	CHttpDownLoad *pHttpDownLoad;
	THREADNUMBER  *stThreadNumber;

	//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();

}

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
	if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
		return -1;
	
	if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
		| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
		!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
	{
		TRACE0("Failed to create toolbar\n");
		return -1;      // fail to create
	}
	//Add a new ToolBar
	if(!m_ToolBarNew.CreateEx(this,TBSTYLE_FLAT,WS_CHILD|WS_VISIBLE|CBRS_TOP
		|CBRS_GRIPPER|CBRS_TOOLTIPS|CBRS_FLYBY|CBRS_SIZE_DYNAMIC)||
		!m_ToolBarNew.LoadToolBar(IDR_TOOLBAR1))
	{
		TRACE0("Failed to create toolbar\n");
		return -1;
	}

	if(!m_ToolBarButton.CreateEx(this,TBSTYLE_FLAT,WS_CHILD|WS_VISIBLE|CBRS_TOP
		|CBRS_GRIPPER|CBRS_TOOLTIPS|CBRS_FLYBY|CBRS_SIZE_DYNAMIC)||
		!m_ToolBarButton.LoadToolBar(IDR_TOOLBAR2))
	{
		TRACE0("Failed to create toolbar\n");
		return -1;
	}

	   //Add a separator of CToolBar
	int index=0;
	CRect rect;
	   //Add a ComboBox of CToolBar
	index=0;
	while(m_ToolBarButton.GetItemID(index)!=ID_DOWN_COMBO) 
		index++;
	m_ToolBarButton.SetButtonInfo(index,ID_DOWN_COMBO,TBBS_SEPARATOR,120);
	m_ToolBarButton.GetItemRect(index,&rect);
	rect.bottom+=200;
	if(!m_ToolBarButton.m_comDownFind.Create(WS_CHILD|WS_VISIBLE|CBS_AUTOHSCROLL|CBS_DROPDOWNLIST|
		CBS_HASSTRINGS,rect,&m_ToolBarButton,ID_COMBO_DOWNFIND))
	{
		TRACE0("Failed to create comboBox\n");
		return false;
	}
	
	m_FontText.CreateFont(8,0,0,0,0,0,0,0,0,0,0,0,0,"MS Sans Serif");
	m_ToolBarButton.m_comDownFind.SetFont(&m_FontText);
	m_ToolBarButton.m_comDownFind.ShowWindow(SW_SHOW);
	m_ToolBarButton.m_comDownFind.AddString("全部软件");
	m_ToolBarButton.m_comDownFind.AddString("国产软件");
	m_ToolBarButton.m_comDownFind.AddString("国外软件");
	m_ToolBarButton.m_comDownFind.SetCurSel(0);
	m_pComDownFind=&(m_ToolBarButton.m_comDownFind);
	m_ToolTipBar.Create(this,TTS_ALWAYSTIP);
	CRect comRect;
	m_pComDownFind->GetClientRect(&comRect);
	m_ToolTipBar.AddTool(m_pComDownFind,"选择类型",&comRect,1);
			//Add Edit of ToolBar
	index=0;
	while(m_ToolBarButton.GetItemID(index)!=ID_DOWN_EDIT) 
		index++;
	m_ToolBarButton.SetButtonInfo(index,ID_DOWN_EDIT,TBBS_SEPARATOR,120);
	m_ToolBarButton.GetItemRect(index,&rect);
	rect.bottom-=3;
	if(!m_ToolBarButton.m_editFind.Create(WS_CHILD|WS_VISIBLE|ES_AUTOHSCROLL,rect,&m_ToolBarButton,ID_EDIT_DOWNFIND))
	{
		TRACE0("Failed to create edit\n");
		return false;
	}
	m_EditFontText.CreateFont(16,0,0,0,0,0,0,0,0,0,0,0,0,"MS Sans Serif");
	m_ToolBarButton.m_editFind.SetFont(&m_EditFontText);
	m_ToolBarButton.m_editFind.ShowWindow(SW_SHOW);
	m_pEditDownFind=&(m_ToolBarButton.m_editFind);
	CRect editRect;
	m_pEditDownFind->GetClientRect(&editRect);
	m_ToolTipBar.AddTool(m_pEditDownFind,"输入软件名称",&editRect,2);

	   //Add a ImageList to m_ToolBarNew
	CBitmap nBitmap;
	CImageList nImageList;
	nBitmap.LoadBitmap(IDB_BITMAP2);
	nImageList.Create(32,32,ILC_COLORDDB|ILC_MASK,8,1);
	nImageList.Add(&nBitmap,RGB(255,0,255));
	//m_ToolBarNew.SendMessage(TB_SETIMAGELIST,0,(LPARAM)imageList.m_hImageList);
	m_ToolBarNew.SendMessage(TB_SETIMAGELIST,0,(LPARAM)nImageList.m_hImageList);
	//m_ToolBarNew.SendMessage(TB_SETHOTIMAGELIST,0,(LPARAM)nImageList.m_hImageList);
	nImageList.Detach();
	nBitmap.Detach();


	nBitmap.LoadBitmap(IDB_BITMAP6);
	nImageList.Create(16,16,ILC_COLORDDB|ILC_MASK,8,1);
	nImageList.Add(&nBitmap,RGB(255,0,255));
	//m_ToolBarNew.SendMessage(TB_SETIMAGELIST,0,(LPARAM)imageList.m_hImageList);
	m_ToolBarButton.SendMessage(TB_SETIMAGELIST,0,(LPARAM)nImageList.m_hImageList);
	//m_ToolBarNew.SendMessage(TB_SETHOTIMAGELIST,0,(LPARAM)nImageList.m_hImageList);
	nImageList.Detach();
	nBitmap.Detach();

	if (!m_wndStatusBar.Create(this) ||
		!m_wndStatusBar.SetIndicators(indicators,
		  sizeof(indicators)/sizeof(UINT)))
	{
		TRACE0("Failed to create status bar\n");
		return -1;      // fail to create
	}

	// TODO: Delete these three lines if you don't want the toolbar to
	

	//  be dockable
	m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
	m_ToolBarNew.EnableDocking(CBRS_ALIGN_ANY);
	m_ToolBarButton.EnableDocking(CBRS_ALIGN_ANY);
	EnableDocking(CBRS_ALIGN_ANY);
	DockControlBar(&m_wndToolBar);
	DockControlBar(&m_ToolBarNew);
	DockControlBar(&m_ToolBarButton);

	BOOL bVisible;
	bVisible=(m_wndToolBar.GetStyle()&WS_VISIBLE);
	int nShow=(bVisible) ? SW_HIDE : SW_SHOWNORMAL;
	m_wndToolBar.ShowWindow(nShow);
	RecalcLayout();
	
	//Add Leo Install Path
	CLRegistry dllRegistry;
	HKEY dllKey=HKEY_LOCAL_MACHINE;
	LPTSTR dllKeyPath="Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\Leo2005_is1";
	if(dllRegistry.Open(dllKey,dllKeyPath))
	{
		dllRegistry.Read("InstallLocation",m_InstallPath);
		m_InstallPath=m_InstallPath.Left(m_InstallPath.GetLength()-1);
	}


	//Add Down File Path
	CFileFind pFind;
	if(!pFind.FindFile("c:\\LeoDown"))
		::CreateDirectory("c:\\LeoDown",NULL);
	pFind.Close();


	//如果注册表键没有创建,就创建一个键
	HKEY nhKeyRoot=HKEY_CURRENT_USER;
	LPSTR nszKeyPath="Software\\BLeo2004";
	LPSTR nszS1KeyPath="Software\\BLeo2004\\DownLoad";
	LPSTR nszProgramePath="Software\\BLeo2004\\Dir";
	
	if(!m_DownRegistry.Open(nhKeyRoot,nszKeyPath))
		m_DownRegistry.CreateKey(nhKeyRoot,nszKeyPath);
	m_DownRegistry.Close();
	if(!m_DownRegistry.Open(nhKeyRoot,nszProgramePath))
	{
		m_DownRegistry.CreateKey(nhKeyRoot,nszProgramePath);
		m_DownRegistry.Write("DownLoadDir","c:\\LeoDown");
	}
	m_DownRegistry.Close();
	if(!m_DownRegistry.Open(nhKeyRoot,nszS1KeyPath))
	{
		int nNum=0;
		m_nAgainNumber=10;
		m_DownRegistry.CreateKey(nhKeyRoot,nszS1KeyPath);
		m_DownRegistry.Close();
		m_DownRegistry.Open(nhKeyRoot,nszProgramePath);
		m_DownRegistry.Write("Number",nNum);
		m_DownRegistry.Write("AgainNumber",m_nAgainNumber);
		m_DownRegistry.Write("Rename",1);

	}
	m_DownRegistry.Close();
	
	//Set Array SetSize and Set m_SavePath
	m_DownRegistry.Open(nhKeyRoot,nszProgramePath);
	m_DownRegistry.Read("DownLoadDir",m_SavePath);
	m_DownRegistry.Read("Number",m_nNumber);
	m_DownRegistry.Read("AgainNumber",m_nAgainNumber);
	m_DownRegistry.Read("Rename",m_bRename);
	m_DownRegistry.Close();
	//************************************
	//打开注册表中关于IE的项
	HKEY nKeyRoot=HKEY_CURRENT_USER;
	LPSTR nKeyPath="Software\\Microsoft\\Internet Explorer\\Main";
	m_IERegistry.Open(nKeyRoot,nKeyPath);

	//如果注册表键没有创建,就创建一个键
	nhKeyRoot=HKEY_CURRENT_USER;
	nszKeyPath="Software\\BLeo2004";
	LPSTR nszSKeyPath="Software\\BLeo2004\\Block";
	nszS1KeyPath="Software\\BLeo2004\\BlockUrl";
	int nDest1=1;
	int nDest0=0;

	if(!m_UrlRegistry.Open(nhKeyRoot,nszKeyPath))
		m_UrlRegistry.CreateKey(nhKeyRoot,nszKeyPath);
	if(!m_UrlRegistry.Open(nhKeyRoot,nszS1KeyPath))
		m_UrlRegistry.CreateKey(nhKeyRoot,nszS1KeyPath);


	if(!m_lRegistry.Open(nhKeyRoot,nszKeyPath))
		m_lRegistry.CreateKey(nhKeyRoot,nszKeyPath);
	if(!m_lRegistry.Open(nhKeyRoot,nszSKeyPath))
		m_lRegistry.CreateKey(nhKeyRoot,nszSKeyPath);
	//注册Leo控件***********************************
	LPSTR nLeoReg="LeoDllReg";
	if(!m_lRegistry.VerifyValue(nLeoReg) && !m_InstallPath.IsEmpty())
	{
		m_lRegistry.Write(nLeoReg,nDest1);
		CString nsReg,nsDir,nsTemp,nsDir2;
		
		nsDir=m_InstallPath;
		nsTemp=nsDir.Mid(3,13);

		if(nsTemp=="Program Files")
		{
			nsTemp=nsDir.Left(3);
			nsDir2=nsDir.Mid(16);
			nsDir=nsTemp+"Progra~1"+nsDir2;
		}
		nsReg="/s "+nsDir+"\\LEOHelper.dll";
		ShellExecute(NULL,"open","regsvr32.exe",(LPCTSTR)nsReg,NULL,SW_SHOWNORMAL);
	}
	//******************************************
	if(!m_lRegistry.VerifyValue(nszNPopupWin))
		m_lRegistry.Write(nszNPopupWin,nDest1);
	if(!m_lRegistry.VerifyValue(nszNPicture))
		m_lRegistry.Write(nszNPicture,nDest0);
	if(!m_lRegistry.VerifyValue(nszNAnimated))
		m_lRegistry.Write(nszNAnimated,nDest1);
	if(!m_lRegistry.VerifyValue(nszNFlash))
		m_lRegistry.Write(nszNFlash,nDest1);
	if(!m_lRegistry.VerifyValue(nszNBlockUrl))
		m_lRegistry.Write(nszNBlockUrl,nDest0);

	m_ToolTipArray.SetSize(1);

	//创建托盘程序
	if(!m_TrayIcon.Create(this,IDR_TRAYPOPUP_MENU,_T("Leo"),m_hIcon,WM_TRAYNOTIFY))
	{
		MessageBox(_T("LeoBlock2004 托盘程序创建错误"),"Leo",MB_OK|MB_ICONSTOP);
		return -1;
	}

	return 0;
}

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
	if( !CFrameWnd::PreCreateWindow(cs) )
		return FALSE;
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs

	return TRUE;
}

/////////////////////////////////////////////////////////////////////////////
// CMainFrame diagnostics

#ifdef _DEBUG
void CMainFrame::AssertValid() const
{
	CFrameWnd::AssertValid();
}

void CMainFrame::Dump(CDumpContext& dc) const
{
	CFrameWnd::Dump(dc);
}

#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CMainFrame message handlers


BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext) 
{
	// TODO: Add your specialized code here and/or call the base class
	if(!m_SplitterWnd.CreateStatic(this,2,1))
		return FALSE;

	CRect clRect;
	GetClientRect(&clRect);
	CSize clSize=clRect.Size();
	int y=(int)clSize.cy/2-10;
	//Create CTestDownView
	if(!m_SplitterWnd.CreateView(0,0,RUNTIME_CLASS(CTestDownView),CSize(0,y),pContext))
		return FALSE;
	
	//Create CContainerView
	if(!m_SplitterWnd.CreateView(1,0,RUNTIME_CLASS(CContainerView),CSize(0,0),pContext))
		return FALSE;



	SetActiveView((CView*)m_SplitterWnd.GetPane(0,0));

	//Create Drop Window
	CRect nRect;
	GetWindowRect(&nRect);
	ScreenToClient(&nRect);
	nRect.left=nRect.right/2;
	nRect.top=nRect.bottom/2;
	nRect.right=38;
	nRect.bottom=35;

⌨️ 快捷键说明

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