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

📄 mainfrm.cpp

📁 用VC写的浏览器
💻 CPP
📖 第 1 页 / 共 5 页
字号:
#include "stdafx.h"
#include "GreenBrowser.h"
#include <INITGUID.H> 
#include <Mshtmhst.h>
#include <wininet.h>
#include <ExDisp.h>// For ShellUIHelper
//#include <comdef.h>// For Compiler COM Support Classes
#include <UrlHist.h>
#include "popupdlg.h"
#include "MainFrm.h"
#include "setproxy.h"
#include "externalUtils.h"
#include "HistoryTree.h"
#include "FavTree.h"
#include "ShellTree.h"
#include "ToolMenu.h"
#include "MenuData.h"
//#include <afxsock.h>
#include <Winsock.h>
#include "setscdlg.h"
#include "setaliasdlg.h"
#include "customizetoolbar.h"
#include "GreenBrowserOptions.h"
#include "WebFileOpenDlg.h"
#include "InputPassword.h"
#include "Resourcebar.h"
#include "MenuOrder.h"
#include "OrgGroupDlg.h"
#include "GroupUrlDlg.h"
#include "MAPI.h"
#include "SimpleSAH.h"
#include "SelProxyCatDlg.h"
#include "AnimateIcon.h"
#include "QuickSearchDlg.h"
#include "Crypt.h"
#include "CollectorDlg.h"
#include "LinkListDlg.h"
#include "Monitor.h"
#include "AddToThisFavDlg.h"
#include "inputalias.h"
#include "urlfilterprop.h"
#include "rasspdm.h"//ras speed 
#include "GroupSelectDlg.h"
#include "SelectURL.h"
#include "PopupConfirm.h"
#include <mmsystem.h>//for sndplaysound
#include <Mshtmdid.h>
#include "AddPopupDlg.h"
#include "InputDlg.h"
#include "SetFormDataDlg.h"
#include "SAPrefsDialog.h"
#include "CleanAll.h"
#include <direct.h>//mkdir
#include "SelectLang.h"

#ifdef _WRITE_LNG_FILE_
	#include "SortSaveDlg.h"
	#include "ProxyInfo.h"
	#include "SetRefIntervalDlg.h"
#endif

#include "ExpMenu.h"

#include <afxinet.h>//for CInternetSession

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

//##############################################################
//Define the command group GUID for the WebBrowser control 
//It is undocumented, and supose to be changed in the feature
DEFINE_GUID(CGID_IWebBrowser,0xED016940L,0xBD5B,0x11cf,0xBA,
      0x4E,0x00,0xC0,0x4F,0xD7,0x08,0x16); 
static const IID IID_ITravelLogStg	= { 0x7EBFDD80, 0xAD18, 0x11d3, {0xA4,0xC5,0x00,0xC0,0x4F,0x72,0xD6,0xB8}};
//track pop menu
#define TPM_RECURSE         0x0001L

//call back
typedef HRESULT (CALLBACK* LPFNDLLFUNC1)(HWND ,DWORD);
typedef BOOL (CALLBACK* LPFNDLLFUNC2)(HWND ,LPTSTR, int, BOOL);
typedef ULONG (CALLBACK* LPMAPISendDocuments)(ULONG, LPTSTR, LPTSTR, LPTSTR, ULONG);
typedef LONG (CALLBACK* GETRES)(int);

//tab
#define TABPADDINGX 6
#define TABPADDINGY 4
#define FBPADDINGX 3
#define FBPADDINGY 2
//some else put here
#define PROXYID		2
#define TAB_HEIGHT	19
#define MAX_GO_UP	10
//fav delete start pos
#define FAV_START	4
//search type
#define ST_SEARCHBAR	1
#define ST_ADDRBAR		2
#define ST_DRAGMENU		3
//drag drop menu type
#define DT_IMAGE		1
#define DT_LINK			2
#define DT_TEXT			3

//##############################################################
typedef struct tagBandInfo
{
	UINT nIndex;
	UINT nID;
	UINT fStyle;
	UINT cx;
}BandInfo;

#define RBBS_USECHEVRON     0x00000200  // display drop-down button for this band if it's sized smaller than ideal width
BandInfo g_BandInfo[] = {
	{ 0, ID_MENU_BAR,		RBBS_FIXEDBMP | RBBS_GRIPPERALWAYS | RBBS_USECHEVRON,			100 },
	{ 1, ID_SYSMENU_BAR,	RBBS_FIXEDBMP | RBBS_BREAK | RBBS_GRIPPERALWAYS, 100 },
	{ 2, ID_VIEW_TOOLBAR,	RBBS_FIXEDBMP | RBBS_BREAK | RBBS_GRIPPERALWAYS | RBBS_USECHEVRON, 100 },
	{ 3, ID_VIEW_ADDRESSBAR,RBBS_FIXEDBMP | RBBS_BREAK | RBBS_GRIPPERALWAYS, 100 },
	{ 4, ID_VIEW_LINKS,		RBBS_FIXEDBMP | RBBS_BREAK | RBBS_GRIPPERALWAYS | RBBS_USECHEVRON, 100 },
	{ 5, ID_VIEW_FAVS,		RBBS_FIXEDBMP | RBBS_BREAK | RBBS_GRIPPERALWAYS | RBBS_USECHEVRON, 100 },
	{ 6, ID_VIEW_EX_TOOL,	RBBS_FIXEDBMP | RBBS_BREAK | RBBS_GRIPPERALWAYS | RBBS_USECHEVRON, 100 },
	{ 7, ID_VIEW_SEARCH,	RBBS_FIXEDBMP | RBBS_BREAK | RBBS_GRIPPERALWAYS, 100 },
	{ 8, ID_VIEW_TASKBAR,	RBBS_FIXEDBMP | RBBS_BREAK | RBBS_GRIPPERALWAYS | RBBS_USECHEVRON, 100 }
};

//##############################################################
#define MAX_BAR	10
UINT g_BarInfo[MAX_BAR] = {
	ID_VIEW_TOOLBAR,
	ID_VIEW_EX_TOOL,
	ID_VIEW_ADDRESSBAR,
	ID_VIEW_SEARCH,
	ID_VIEW_FAVS,
	ID_VIEW_LINKS,
	ID_VIEW_TASKBAR,
	ID_SYSMENU_BAR,
	ID_MENU_BAR,
	ID_VIEW_STATUS_BAR
	};

//##############################################################
#define IS_ENV_URL(str)		(str.GetAt(0)=='%')
#define DO_ENV_URL(str);	\
	if ( IS_ENV_URL(str) )	\
	{	\
		TCHAR           szPath[MAX_PATH];	\
		ExpandEnvironmentStrings(str, szPath, MAX_PATH);	\
		str = szPath;	\
	}

#define DO_LOCAL_URL(str);	\
	if (m_bOpenFolderOut)	\
	{	\
		if (IS_LOCAL_FOLDER(str))	\
		{	\
			ShellExecute(NULL, "open", str , "", NULL, SW_SHOW );	\
			return;	\
		}	\
	}

//www.netcaptor.com
//bbs.netcaptor.com
//www.abc.com
//bbs.abc.com
//abc.cn

//abc.com
//abc.com.cn
//abc.net
//abc.org
#define DO_QUICK_URL(str);	\
	if(str.Find(':') < 0)	\
	{	\
		int nDot = str.Find('.');	\
		if( nDot > 0)	\
		{	\
			CString strLower = str;	\
			strLower.MakeLower();	\
			if (strLower.Left(4)!="www.")	\
			{	\
				if (strLower.Mid(nDot,4)==".com" || strLower.Mid(nDot,4)==".net" ||	strLower.Mid(nDot,4)==".edu" ||	strLower.Mid(nDot,4)==".org" )	\
				{	\
					TCHAR ch = strLower.GetAt(nDot+4);	\
					if (ch == 0 || ch == '.')	\
						str = "www." + str;	\
				}	\
			}	\
		}	\
	}
	
//##############################################################
#define SEARCH_STR(str)	\
	if (str.GetLength()) \
	{\
		m_wndSearch->GetEditCtrl()->SetWindowText(str);	\
		m_nSearchBarAction = (PRESS_SHIFT ? 4 : 1);	\
		SendMessage(WM_COMMAND, ID_SEARCH_OK); \
	}

//##############################################################
#define DO_CMD_STR(strUrl);	\
	if(strUrl.Left(1) == '\"')	\
		strUrl = strUrl.Mid(1);	\
	if(strUrl.Right(1) == '\"')	\
		strUrl = strUrl.Left(strUrl.GetLength()-1);	\
	DO_ENV_URL(strUrl);	\
	DO_RELATIVE_URL(strUrl);

#define DO_SEARCH_STR(url,keyw)	\
	if (url.Find("%u") > -1)	\
	{	\
		_Ascii2Utf8(keyw);	\
		url.Replace("%u", keyw);	\
	}	\
	else	\
	{	\
		_AsciiFormat(keyw);	\
		url.Replace("%s", keyw);	\
	}

#define GET_ACTIVE	\
	CChildFrame* tcf = (CChildFrame*)MDIGetActive();	\
	if (!tcf || !tcf->m_pView) return;

#define IS_FILTER_ENABLE (g_bKillPop|m_bUseUrlFilter|m_bUseDialogFilter|m_bUseFlyingFilter)

//##############################################################
#define STR_JAVASCRIPT	"JavaScript"

#define STR_RELOAD_UNSHOWN_IMAGE	\
"	function cancelError() {return true;} onerror=cancelError; \
	var i,len,src,img; \
	len=document.images.length; \
	for(i=0;i<len;i++) \
	{ \
		img=document.images[i]; \
		if(!img.complete||img.fileSize<0) \
		{ src=img.src; img.src=''; img.src=src; } \
	}"

#define STR_KILL_BLANK	\
"	function cancelError() {return true;} onerror=cancelError; \
	function killTag(tagName) \
	{ \
		var url; \
		var objs=document.getElementsByTagName(tagName); \
		for(i=0;i<objs.length;i++) \
		{ \
			url = tagName=='object'?objs[i].movie:objs[i].src; \
			if (url.indexOf('://')<0) \
	  		{ \
	  			url = document.URL.substring(0,document.URL.lastIndexOf('/')+1); \
	  			url += tagName=='object'?objs[i].movie:objs[i].src; \
	  		} \
			if(external.gbIsAdContent(url)) \
			{ \
				objs[i].outerHTML='$AD'; \
				i--; \
			} \
		} \
	} \
	killTag('iframe');killTag('img');killTag('embed');killTag('object');"

#define STR_KILL_FLYING	\
"	function cancelError() {return true;} onerror=cancelError; \
	function newpropertychange(){ \
		var name = event.propertyName.toLowerCase(); \
		var elem = event.srcElement; \
		if( name.indexOf('left')>-1||name.indexOf('top')>-1||name.indexOf('move')>-1) \
		{ try{ elem.onpropertychange = null; elem.style.visibility = 'hidden'; elem.srcElement.removeNode(true); }catch(e){} } \
	} \
	function killobj(doc,obj){ \
		var objs=doc.document.getElementsByTagName(obj); \
		for (var i=0;i<objs.length;i++){ \
			var obj=objs[i]; \
			if ((obj.style.position=='absolute'&&obj.style.display!='none')||(obj.tagName=='SPAN'&&obj.style.left!='auto')||(obj.tagName=='EMBED'&&obj.src.toLowerCase().indexOf('.swf')!=-1)||(obj.tagName=='OBJECT'&&obj.classid.toLowerCase()=='clsid:d27cdb6e-ae6d-11cf-96b8-444553540000')) \
			{ try{ obj.onpropertychange = newpropertychange; }catch(e){} } \
		} \
	} \
	function killflying(doc){ \
		killobj(doc,'div'); killobj(doc,'span'); killobj(doc,'img'); killobj(doc,'object'); killobj(doc,'embed');  \
		if(doc.layers) killobj(doc,'layer'); \
	} \
	if(location.hostname.indexOf('.google.com')==-1) \
		killflying(self);"

//##############################################################
#define MARKED(pView)		(pView->m_nOldIcon==TI_MARK)

//##############################################################
CMainFrame* pmf = NULL;
//fav
CStringArray g_astrLinks;
CStringArray g_astrFavs;
//filter
CMapStringToPtr g_mapUrlFilter;
CStringArray	g_aUrlPattern;
CMapStringToPtr g_mapUrlUnFilter;
CStringArray	g_aUrlUnPattern;

float g_fSeed = 1;
GETRES g_pGetRes = NULL;
static char g_szAddr[256];
char g_szFile[1024];
BSTR g_bstrYes;
char*	g_strLngBuf=NULL;

int g_nPercent = -1;
int g_bMax;  //1. max, 0, unmax, 2, tile/cascade, 3, restore, 4 minimize
int g_nMaxWins = 100;
int g_nNextTab = -1;
int g_nDefFontSize = 3;
int g_nTrayIconID;
int	g_nOldNewSequence = 1;//back the value when open fav all
int	g_nSearchType=0;//0:search bar, 1:address bar, 2: all search of text drag menu
int	g_nDragType=0;
int	g_nBarVisible=0;
int	g_nStartPage=0;

BOOL g_bConfirmExit;
BOOL g_bConfirmExitDowning;
BOOL g_bExitAtOnce=FALSE;
BOOL g_bSingleMenu = FALSE;
BOOL g_bSilent = TRUE;
BOOL g_bDisScrollText = FALSE;
BOOL g_bFilteBlank = FALSE;
BOOL g_bKillPop,g_bKillAutoWin,g_bKillListWin,g_bKillDupWin;
BOOL g_bLinkInNewWindow, g_bFileInNewWindow, g_bFavInNewWindow, g_bHisInNewWindow;
BOOL g_bAddressInNewWindow, g_bHomeInNewWindow;
BOOL g_bCompactFavBar = FALSE;
BOOL g_bConfirmCloseAll = TRUE;
BOOL g_bConfirmCloseAllKeepCur = TRUE;
BOOL g_bConfirmCloseLock;
BOOL g_bForbidMult;
BOOL g_bRTab=0;
BOOL g_bVerbose;
BOOL g_bAutoSetBG, g_bLockHomepage;
BOOL g_bProxyDirty = FALSE;

//for tab
BOOL g_bShowIndex; //show 1,2,3... at tab head
BOOL g_bClickClose;//click icon close page
BOOL g_bShowDot;
BOOL g_bShowRead;
BOOL g_bShowFavIcon;
BOOL g_bRegisterHotKeyOk;
UINT g_nGroupSize;

CString g_strIeProxy;
CString g_strLastUrl;//temp url before pop menu when drag
CString g_strLastText;//temp url before pop menu when drag
CString g_strMenuUrl;//sometime can not get fav item's url (fav bar's chev menu), but onmenuselect can get
//
CString g_strGoUpUrl[MAX_GO_UP];
CString g_strKillFlyingCode;
CString g_strKillFlyingLang;
CString g_strKillBlankCode;

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

IMPLEMENT_DYNAMIC(CMainFrame, CMDIFrameWnd)

const UINT MSWHELL_ROLLMSG = RegisterWindowMessage( "MSWHEEL_ROLLMSG" );
BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWnd)
	ON_WM_CREATE()
	ON_COMMAND(ID_FILE_NEW_BLANK, OnFileNewBlank)
	ON_COMMAND(ID_FILE_NEW_CURRENTPAGE, OnFileNewCurrentpage)
	ON_COMMAND(ID_VIEW_ADDRESSBAR, OnViewAddressbar)
	ON_COMMAND(ID_VIEW_TASKBAR, OnViewTaskbar)
	ON_COMMAND(ID_FILE_CLOSEALL, OnFileCloseall)
	ON_COMMAND(ID_FILE_WORKOFFLINE, OnFileWorkoffline)
	ON_WM_CLOSE()
	ON_COMMAND(ID_VIEW_SOURCE, OnViewSource)
	ON_COMMAND(ID_FILE_CLOSE_1, OnFileClose)
	ON_COMMAND(ID_FILE_CLOSE_2, OnFileClose2)
	ON_COMMAND(ID_TOOLS_INTERNETOPTIONS, OnToolsInternetoptions)
	ON_COMMAND(ID_FAVORITES_ADDTOFAVORITES, OnFavoritesAddtofavorites)
	ON_COMMAND(ID_FAVORITES_EXPORTFAVORITES, OnFavoritesExportfavorites)
	ON_COMMAND(ID_FAVORITES_IMPORTFAVORITES, OnFavoritesImportfavorites)
	ON_COMMAND(ID_FAVORITES_ORGNIZEFAVORITES, OnFavoritesOrgnizefavorites)
	ON_COMMAND(ID_TOOLS_ADDTOPOPUPFILTER, OnToolsAddtopopupfilter)
	ON_COMMAND(ID_RTAB_ADDTOPOPUPFILTER, OnRtabAddtopopupfilter)
	ON_COMMAND(ID_TOOLS_EDITPOPUPFILTERLIST, OnToolsEditpopupfilterlist)
	ON_UPDATE_COMMAND_UI(ID_FILE_WORKOFFLINE, OnUpdateFileWorkoffline)
	ON_UPDATE_COMMAND_UI(ID_TOOLS_INTERNETOPTIONS, OnUpdateMenu)
	ON_COMMAND(ID_GO_UP_PAGE, OnGoUpPage)
	ON_COMMAND(ID_TOOLS_EMAIL, OnToolsEmail)
	ON_COMMAND(ID_TOOLS_ADDR, OnToolsAddr)
	ON_UPDATE_COMMAND_UI(ID_OPTIONS_USE_PROXY, OnUpdateOptionsUseProxy)
	ON_COMMAND(ID_OPTIONS_USE_PROXY, OnOptionsUseProxy)
	ON_COMMAND(ID_TOOLS_COOKIE, OnToolsCleanCookie)
	ON_COMMAND(ID_TOOLS_CACHE, OnToolsCache)
	ON_COMMAND(ID_TOOLS_ALL, OnToolsAll)
	ON_COMMAND(ID_TOOLS_HISTORY, OnToolsHistory)
	ON_COMMAND(ID_OPTIONS_SET_PROXY, OnOptionsSetProxy)
	ON_COMMAND(ID_TOOLS_EXTERNALUTILITIES_UTILITYMANAGER, OnToolsExternalUtilitymanager)
	ON_COMMAND(ID_VIEW_HIS, OnViewHis)
	ON_UPDATE_COMMAND_UI(ID_VIEW_HIS, OnUpdateViewExp)
	ON_COMMAND(ID_VIEW_FULLSCREEN, OnViewFullscreen)
	ON_UPDATE_COMMAND_UI(ID_VIEW_FULLSCREEN, OnUpdateViewFullscreen)
	ON_COMMAND(ID_ADDR_DROP, OnAddrDrop)
	ON_COMMAND(ID_ADDR_FOCUS, OnAddrFocus)
	ON_COMMAND(ID_FILE_NEW_S, OnFileNew)
	ON_COMMAND(ID_HELP_HELP, OnHelpHelp)
	ON_COMMAND(ID_OPTIONS_ACTIVENEWWINDOW, OnOptionsActivenewwindow)

⌨️ 快捷键说明

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