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