📄 mainfrm.cpp
字号:
#include "stdafx.h"
#include "MyIE.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 "ToolMenu.h"
#include "MenuData.h"
//#include <afxsock.h>
#include <Winsock.h>
#include "setscdlg.h"
#include "setaliasdlg.h"
#include "customizetoolbar.h"
#include "MyIEOptions.h"
#include "WebFileOpenDlg.h"
#include "InputPassword.h"
#include "MenuOrder.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 "AddToThisFavDlg.h"
#include "inputalias.h"
#include "urlfilterprop.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"
#include <afxinet.h>//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;
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_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_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;
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_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)
ON_UPDATE_COMMAND_UI(ID_OPTIONS_ACTIVENEWWINDOW, OnUpdateOptionsActivenewwindow)
ON_COMMAND(ID_RTAB_ADDFAV, OnRtabAddfav)
ON_COMMAND(ID_VIEW_LINKS, OnViewLinks)
ON_COMMAND(ID_VIEW_TOOLBAR, OnViewToolbar)
ON_UPDATE_COMMAND_UI(ID_VIEW_TOOLBAR, OnUpdateViewToolbar)
ON_WM_SIZE()
ON_COMMAND(ID_HELP_FORUM, OnHelpForum)
ON_COMMAND(ID_HELP_MAIL_TO, OnHelpMail)
ON_COMMAND(ID_FILE_CLOSE_KEEPCUR, OnFileCloseKeepcur)
ON_COMMAND(ID_VIEW_REFRESHALL, OnViewRefreshall)
ON_COMMAND(ID_VIEW_STOP_ALL, OnViewStopAll)
ON_COMMAND(ID_HELP_HOMEPAGE, OnHelpHomepage)
ON_COMMAND(ID_FILE_NEW_CLIP, OnFileNewClip)
ON_COMMAND(ID_WINDOW_CASCADE, OnWindowCascade)
ON_COMMAND(ID_WINDOW_TILE_HORZ, OnWindowTileHorz)
ON_COMMAND(ID_WINDOW_TILE_VERT, OnWindowTileVert)
ON_WM_SETTINGCHANGE()
ON_WM_MEASUREITEM()
ON_COMMAND(ID_WINDOW_RESTOR, OnWindowRestore)
ON_WM_DRAWITEM()
ON_COMMAND(ID_WINDOW_MIN, OnWindowMin)
ON_COMMAND(ID_MENU_BAR, OnViewMenubar)
ON_UPDATE_COMMAND_UI(ID_TOOLS_SKIN_DEFAULT, OnUpdateToolsSetSkin)
ON_COMMAND(ID_FILE_NEWMyIE, OnFileNewMyIE)
ON_COMMAND(ID_FILE_OPENF, OnFileOpen)
ON_COMMAND(ID_VIEW_TOOLBARTEXTLABEL, OnViewToolbartextlabel)
ON_UPDATE_COMMAND_UI(ID_VIEW_TOOLBARTEXTLABEL, OnUpdateViewToolbartextlabel)
ON_COMMAND(ID_SHORTCUT_USE_SC, OnShortcutUseSc)
ON_UPDATE_COMMAND_UI(ID_SHORTCUT_USE_SC, OnUpdateShortcutUseSc)
ON_COMMAND(ID_SHORTCUT_SC, OnShortcutSc)
ON_COMMAND(ID_SHORTCUT_ALIAS, OnShortcutAlias)
ON_UPDATE_COMMAND_UI(ID_SHORTCUT_ALIAS, OnUpdateShortcutAlias)
ON_COMMAND(ID_SHORTCUT_MANALIAS, OnShortcutManalias)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -