📄 mainfrm.cpp
字号:
m_bSaveConfig = FALSE;
m_nWin=0;
m_nSwitch = 0;
CString str="yes";
g_bstrYes = str.AllocSysString();
m_pCollectDlg = NULL;
m_pLinkListDlg = NULL;
m_bIsOffline = FALSE;//get from register
m_nPopFiltered = 0;
m_bAutoPopWin = FALSE;
LOADSTR(g_strIeProxy ,IDS_IE_PROXY);
m_nPreLines = 0;//must do this, or tab will OnUpdateTab when start
m_bNotShowRightMenu = 0;
//
m_nSearchBarAction = 0;
m_bShowScriptResult = true;
//for ndebug add
m_bAutoRunExternal = 0;
m_bActiveNewWindow = 0;
m_bRMouseDrag = 0;
m_bRMouseGesture = 0;
//must init to 0, or it will be random
m_bIsAutoSave = 0;
m_pCurView = NULL;
m_strLastNavUrl.Empty();
m_nDialogFilterCount = 0;
}
CMainFrame::~CMainFrame()
{
try{
m_astrFavoriteFolders.RemoveAll();
m_ExternalUtilList.RemoveAll();
m_astrSkins.RemoveAll();
m_aProxyCategories.RemoveAll();
if(m_bmBGPic)
DeleteObject(m_bmBGPic);
if(m_nAnimateIconTimer)
KillTimer(m_nAnimateIconTimer);
SysFreeString(g_bstrYes);
pmf = NULL;
DestroyMenuData(m_TabMenu.m_hMenu,0);
DestroyMenuData(m_TrayMenu.m_hMenu,0);
FREENULL(g_strLngBuf);
}catch(...){}
}
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
pmf = this;
AfxOleInit();
//
CImageList img;
CString str;
CMyIEApp* app = (CMyIEApp*)AfxGetApp();
::SetProp(m_hWnd, app->m_pszAppName, (HANDLE)1);
if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;
//create rebar
if (!m_wndReBar.Create(this,
RBS_BANDBORDERS | RBS_DBLCLKTOGGLE | RBS_REGISTERDROP | RBS_VARHEIGHT,
CCS_NODIVIDER | CCS_NOPARENTALIGN |
WS_CHILD | WS_CLIPCHILDREN | WS_CLIPSIBLINGS | WS_VISIBLE | CBRS_TOP)
)
{
return -1; // fail to create
}
m_bLockToolbar = app->GetProfileInt("Settings", "LockToolbar", FALSE);
m_strSkinName = app->GetProfileString("Settings", "SkinName", "default");
m_dwFsShow = app->GetProfileInt("Settings", "FullScreenShow", 588);
m_dwAhShow = app->GetProfileInt("Settings", "AutoHideShow", 588);
CString filename = app->m_strSkinPath + m_strSkinName + "\\";
if ( !_FileIsExist(filename) )
m_strSkinName = "default";
//create main menu
CMenuBar& mb = m_wndMenuBar;
VERIFY(mb.CreateEx(this));
mb.ModifyStyle(0, TBSTYLE_TRANSPARENT|TBSTYLE_FLAT| TBSTYLE_LIST);
mb.LoadMenu(IDR_MAINFRAME);
InitMenuBarImage();
//menu
CMenu* pMenu = mb.GetMenu();
_LoadMenuStringOwnerDraw(pMenu, "MenuMain",&(mb.m_ImgMenu));
pMenu->Detach();
//tab menu
m_bTopTab = app->GetProfileInt("TabStyle", "TabPos", 0);
ReloadTabMenu();
//
m_TrayMenu.LoadMenu(IDR_TRAYMENU);
_LoadMenuStringOwnerDraw(m_TrayMenu.GetSubMenu(0),"MenuTray", &(mb.m_ImgMenu));
//sysmenu
if (!m_SysMenuBar.CreateEx(this))
{
TRACE0("Failed to create toolbar\n");
return -1; // fail to create
}
//load win buttons
char key[5]="W";
for(int i=0; i<6; i++)
{
itoa(i, key+1, 10);
m_abWinButtons[i] = app->GetProfileInt("WinButtons", key, 1);
}
InitSystemBarImage();
BuildWinButtons();
// link and fav menu
g_bCompactFavBar = app->GetProfileInt("Settings", "CompactFavBar", FALSE);
m_nMenuWidth = app->GetProfileInt("Settings", "MenuSize", 50);
m_bDisplayOpenAll = app->GetProfileInt("Settings", "DisplayOpenAll", TRUE);
m_bDisplayAddFav = app->GetProfileInt("Settings", "DisplayAddFav", TRUE);
m_bShowHiddenFav = app->GetProfileInt("Settings", "ShowHiddenFav", FALSE);
g_bSingleMenu = app->GetProfileInt("Settings", "SingleMenu", FALSE);
m_bUseDefaultFavPath = app->GetProfileInt("Settings", "UseDefaultFavPath", TRUE);
m_strFavPath = app->GetProfileString("Settings", "FavPath", "");
m_bUseDefaultLinkPath = app->GetProfileInt("Settings", "UseDefaultLinkPath", TRUE);
m_strLinkPath = app->GetProfileString("Settings", "LinkPath", "");
m_bFavShowUrl = app->GetProfileInt("Settings", "FavShowUrl", TRUE);
//link bar
if (!m_LinkBar.CreateEx(this))
{
TRACE0("Failed to create toolbar\n");
return -1; // fail to create
}
InitLinkBarImage();
m_LinkBar.ModifyStyle(0, TBSTYLE_FLAT | TBSTYLE_TRANSPARENT | TBSTYLE_LIST|TBSTYLE_TOOLTIPS );
m_LinkBar.SetBarStyle(m_LinkBar.GetBarStyle() |
CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);
//Favorite bar
if (!m_FavBar.CreateEx(this))
{
TRACE0("Failed to create toolbar\n");
return -1; // fail to create
}
InitFavBarImage();
m_FavBar.ModifyStyle(0, TBSTYLE_FLAT | TBSTYLE_TRANSPARENT | TBSTYLE_LIST|TBSTYLE_TOOLTIPS );
m_FavBar.SetBarStyle(m_FavBar.GetBarStyle() |
CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);
//
InitFavorites();
//Tool Bar
if (!m_wndToolBar.CreateEx(this))
{
TRACE0("Failed to create toolbar\n");
return -1; // fail to create
}
m_wndToolBar.ModifyStyle(0, TBSTYLE_FLAT | TBSTYLE_TRANSPARENT |TBSTYLE_TOOLTIPS );
//m_wndToolBar.ModifyStyleEx(0, WS_EX_TOOLWINDOW);
m_wndToolBar.GetToolBarCtrl().SetExtendedStyle(TBSTYLE_EX_DRAWDDARROWS);
// Create and set the hot toolbar image list.
m_bSmallToolBar = app->GetProfileInt("Settings", "SmallToolbar",0);
m_nTextLabel = app->GetProfileInt("Settings", "TextLabel", 0);
m_bColorIcon = app->GetProfileInt("Settings", "ColorIcon", TRUE);
InitToolBar();
//AddressBar
m_bShowToolbarLabel = app->GetProfileInt("Settings", "ShowToolbarLabel", TRUE);
m_bShowAddressBarButton = app->GetProfileInt("Settings", "ShowAddressBarButton", TRUE);
m_bShowSearchBarButton = app->GetProfileInt("Settings", "ShowSearchBarButton", TRUE);
m_bComboShowIcon = app->GetProfileInt("Settings", "ComboShowIcon", TRUE);
if (!m_AddressBar.CreateEx(this))
{
TRACE0("Failed to create toolbar\n");
return -1; // fail to create
}
InitGoImage();
m_AddressBar.ModifyStyle(0, TBSTYLE_FLAT | TBSTYLE_TRANSPARENT |TBSTYLE_TOOLTIPS );
m_AddressBar.GetToolBarCtrl().SetExtendedStyle(TBSTYLE_EX_DRAWDDARROWS);
m_AddressBar.SetButtons(NULL, 2);
m_AddressBar.SetButtonInfo(0, 0, TBBS_SEPARATOR, 0);
m_AddressBar.SetButtonInfo(1, IDOK, TBSTYLE_BUTTON| TBSTYLE_DROPDOWN,0 );//| TBSTYLE_DROPDOWN, 0);
CString strTip;
LOADSTR(strTip ,IDS_GO);
m_AddressBar.GetToolBarCtrl().GetToolTips()->UpdateTipText(strTip, &m_AddressBar, IDOK);
m_AddressBar.Init();
//get the reference to the comboboxex.
m_wndAddress = m_AddressBar.GetAddressBox();
//external tool bar
if (!m_ExternalTool.CreateEx(this))
{
TRACE0("Failed to create toolbar\n");
return -1; // fail to create
}
m_ExternalTool.ModifyStyle(0, TBSTYLE_FLAT | TBSTYLE_TRANSPARENT |TBSTYLE_TOOLTIPS );
m_ExternalTool.SetBarStyle(m_ExternalTool.GetBarStyle() |
CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);
//
SHFILEINFO shFinfo;
HIMAGELIST hImgList = NULL;
hImgList = (HIMAGELIST)SHGetFileInfo( "C:\\",
0,
&shFinfo,
sizeof( shFinfo ),
SHGFI_SYSICONINDEX |
SHGFI_SMALLICON );
if ( !hImgList )
return FALSE;
m_ExternalTool.SendMessage(TB_SETIMAGELIST, 0, (LPARAM)hImgList);
//better place here, not flash when delay load config
CString wp;
CExternalUtilItem* eui;
wp = app->GetProfileString("ExUtils", "name1", NULL);
if(wp == "" || wp.IsEmpty())
{
}
else
{
//new format
char Keyname1[10] = "name", Keyname2[10] = "cmds", Keyname3[10] = "sta", Keyname4[10] = "cls", Keyname5[10] = "run";
char Keyname11[10] = "para", Keyname12[10] = "path";
CString cmd,para,path;
BOOL bstart, bClose,bRun;
int i=1;
cmd = app->GetProfileString("ExUtils", "cmds1", NULL);
para = app->GetProfileString("ExUtils", "para1", NULL);
path = app->GetProfileString("ExUtils", "path1", NULL);
bstart = app->GetProfileInt("ExUtils", "sta1", FALSE);
bClose = app->GetProfileInt("ExUtils", "cls1", bstart);
bRun = app->GetProfileInt("ExUtils", "run1", FALSE);
while(wp != "" && !wp.IsEmpty())
{
eui = new CExternalUtilItem;
eui->m_strUtilName = wp;
eui->m_strUtilCmd = "\""+cmd+"\"";
eui->m_strUtilPara = para;
eui->m_strUtilPath = path;
eui->m_bUtilStart = bstart;
eui->m_bUtilClose = bClose;
eui->m_bUtilRun = bRun;
m_ExternalUtilList.m_UtilList.Add(eui);
i++;
itoa(i, Keyname1+4, 10);
itoa(i, Keyname2+4, 10);
itoa(i, Keyname11+4, 10);
itoa(i, Keyname12+4, 10);
//
itoa(i, Keyname3+3, 10);
itoa(i, Keyname4+3, 10);
itoa(i, Keyname5+3, 10);
wp = app->GetProfileString("ExUtils", Keyname1, NULL);
cmd = app->GetProfileString("ExUtils", Keyname2, NULL);
para = app->GetProfileString("ExUtils", Keyname11, NULL);
path = app->GetProfileString("ExUtils", Keyname12, NULL);
bstart = app->GetProfileInt("ExUtils", Keyname3, FALSE);
bClose = app->GetProfileInt("ExUtils", Keyname4, bstart);
bRun = app->GetProfileInt("ExUtils", Keyname5, FALSE);
}
}
BuildUtilMenu();
//search bar
if (!m_SearchBar.CreateEx(this))
{
TRACE0("Failed to create toolbar\n");
return -1; // fail to create
}
m_SearchList.LoadSearchList();//must before init
m_SearchBar.Init();
m_wndSearch = &m_SearchBar.m_wndComboBox;
LoadTypedSearch();
m_SearchBar.ModifyStyle(0, TBSTYLE_FLAT | TBSTYLE_TRANSPARENT |TBSTYLE_TOOLTIPS );
m_SearchBar.GetToolBarCtrl().SetExtendedStyle(TBSTYLE_EX_DRAWDDARROWS);
m_SearchBar.InitButton();
//
//status bar
if (!m_wndStatusBar.Create(this) ||
!m_wndStatusBar.SetIndicators(g_nIndicators,
sizeof(g_nIndicators)/sizeof(UINT)))
{
TRACE0("Failed to create status bar\n");
return -1; // fail to create
}
m_wndStatusBar.SetProgressBarWidth(80);
m_wndStatusBar.SetRange(0,100);
//
m_wndStatusBar.SetPaneStyle(0, SBPS_STRETCH|SBPS_NOBORDERS);
for (i=1 ; i<=3; i++)
m_wndStatusBar.SetPaneStyle(i, SBPS_NORMAL|SBPS_NOBORDERS);
UINT sbstyle, sbID;
m_wndStatusBar.GetPaneInfo(3, sbID, sbstyle, m_nBaseWidth);
m_wndStatusBar.SetPaneText(3, "");
m_wndStatusBar.SetPaneInfo(2, ID_INDICATOR_TOOLS , SBPS_NORMAL|SBPS_NOBORDERS, m_wndStatusBar.m_nToolbarWidth-4);
m_hNormalIcon = (HICON)LoadImage(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDI_NORMAL),IMAGE_ICON,16,16,LR_DEFAULTCOLOR);
m_hSecuIcon = (HICON)LoadImage(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDI_SECU),IMAGE_ICON,16,16,LR_DEFAULTCOLOR);
m_wndStatusBar.GetStatusBarCtrl().SetIcon(0, m_hNormalIcon);
if(app->GetProfileInt("Bands", "Status", 1)==0)
m_wndStatusBar.ShowWindow(SW_HIDE);
//create bottom bar
if (!m_wndReBar2.Create(this,RBS_BANDBORDERS,WS_CHILD|WS_VISIBLE|WS_CLIPSIBLINGS| WS_CLIPCHILDREN | CBRS_BOTTOM))
{
TRACE0("Failed to create rebar\n");
return -1; // fail to create
}
m_bMultiLineTab = app->GetProfileInt("Settings", "MultiLineTab", 1);
m_bAutoTab = app->GetProfileInt("Settings", "AutoTab", 1);
m_nTabStyle = app->GetProfileInt("TabStyle", "TabStyle", 1);
CRect rect(0,0,300, TAB_HEIGHT);
if (m_nTabStyle == 0)
rect.bottom += 5;
else if (m_nTabStyle == 1)
rect.bottom += 4;
DWORD dwStyle = WS_VISIBLE|WS_CHILD | TCS_FOCUSNEVER|TCS_FORCELABELLEFT|TCS_TOOLTIPS;
//
if (m_nTabStyle!=2)
dwStyle |= TCS_OWNERDRAWFIXED;
else if(m_nTabStyle==2)
dwStyle |= TCS_BUTTONS|TCS_FLATBUTTONS|TCS_RAGGEDRIGHT;
//
if(!m_bTopTab)
dwStyle |= TCS_BOTTOM;
//
if(m_bMultiLineTab)
dwStyle |= TCS_MULTILINE;
//
if(m_bAutoTab)
dwStyle |= TCS_FIXEDWIDTH;
//
m_wndTab.Create(dwStyle, rect,this, ID_TOOLBAR_TAB);
DWORD dwExStyle= m_wndTab.GetExtendedStyle();
m_wndTab.SetExtendedStyle(dwExStyle | TCS_EX_FLATSEPARATORS);
InitTaskBarImage();
CSize size;
if(m_nTabStyle==2)
{
size.cx = FBPADDINGX;
size.cy = FBPADDINGY;
m_wndTab.SetPadding( size );
}
GetMenu()->CheckMenuItem(ID_VIEW_TASKBAR, MF_CHECKED);
m_wndTab.SetFonts();
//add tab to top or bottom
REBARBANDINFO rbbi;
if(m_bTopTab)
m_wndTab.ModifyStyle(0, CCS_NORESIZE);
else
{
rbbi.cbSize = sizeof(rbbi);
rbbi.fMask = RBBIM_CHILDSIZE | RBBIM_IDEALSIZE |RBBIM_ID;
rbbi.wID = ID_VIEW_TASKBAR;
rbbi.cxMinChild = 0;
CRect rectAddress;
m_wndTab.GetWindowRect(&rectAddress);
rbbi.cyMinChild = rectAddress.Height();
rbbi.cxIdeal = 200;
//
m_wndReBar2.AddBar(&m_wndTab);
if(m_nTabStyle!=2)
{
rbbi.fMask |= RBBIM_STYLE;
rbbi.fStyle = RBBS_FIXEDBMP | RBBS_NOGRIPPER;
}
m_wndReBar2.GetReBarCtrl().SetBandInfo(0, &rbbi);
}
//create rebar
GetProfileReBarBandsState();
if(m_bLockToolbar)
FixToolbar(TRUE);
//
m_bDisableBackground = app->GetProfileInt("Settings", "DisableBackground", FALSE);
if (m_bDisableBackground==FALSE)
ShowBackground(m_bDisableBackground);
//bottom bar
if(app->GetProfileInt("Bands", "bandb0", 1)==0)
{
m_wndReBar2.GetReBarCtrl().ShowBand(0, FALSE);
GetMenu()->CheckMenuItem(ID_VIEW_TASKBAR, MF_UNCHECKED);
}
//auto complete
HINSTANCE hIns = LoadLibrary("shlwapi.dll");
if(hIns != NULL)
{
LPFNDLLFUNC1 lpfnDllFunc1 = (LPFNDLLFUNC1)GetProcAddress(hIns, "SHAutoComplete");
if(lpfnDllFunc1!=NULL)
lpfnDllFunc1(m_wndAddress->GetEditCtrl()->m_hWnd, 0xe);
FreeLibrary(hIns);
}
m_hResInst = LoadLibrary("RSRC32.dll");
g_pGetRes = (GETRES) GetProcAddress(m_hResInst, "_MyGetFreeSystemResources32@4");
m_wndTab.ModifyStyle(CCS_NORESIZE, 0);
m_wndTab.SetTabStyle(m_nTabStyle);
m_crUnSelColor = app->GetProfileInt("TabStyle", "UnSelColor", -1);
m_crUnSelFontColor = app->GetProfileInt("TabStyle", "UnSelFontColor", -1);
m_crSelFontColor = app->GetProfileInt("TabStyle", "SelFontColor", -1);
m_crSepColor = app->GetProfileInt("TabStyle", "SepColor", -1);
m_wndTab.SetUnSelColor(m_crUnSelColor);
m_wndTab.SetUnSelFontColor(m_crUnSelFontColor);
m_wndTab.SetSelFontColor(m_crSelFontColor);
m_wndTab.SetSepColor(m_crSepColor);
//
UINT Modifiers = app->GetProfileInt("Settings", "ShowHideModifiers", MOD_CONTROL);
UINT Key = app->GetProfileInt("Settings", "ShowHideKey", 192);
g_bRegisterHotKeyOk = FALSE;
if (Key)
g_bRegisterHotKeyOk = RegisterHotKey (m_hWnd, 0, Modifiers , Key);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -