📄 mainfrm.cpp
字号:
{
m_astrFavoriteFolders.RemoveAll();
m_astrFavoriteURLs.RemoveAll();
m_astrPopup.RemoveAll();
m_lstrUtilCmds.RemoveAll();
m_lstrUtilNames.RemoveAll();
m_astrProxy.RemoveAll();
m_astrWebProxy.RemoveAll();
m_astrBGPics.RemoveAll();
delete m_pwndExpObj;
if(m_bmBGPic)
DeleteObject(m_bmBGPic);
if(m_nTimerID)
KillTimer(m_nTimerID);
}
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
// ReleaseMutex(m_hMutex);
CImageList img;
CString str;
::SetProp(m_hWnd, AfxGetApp()->m_pszAppName, (HANDLE)1);
if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;
//read backgorund pic name
m_strBGPic = AfxGetApp()->GetProfileString("Settings", "Background", "");
CBitmap bitmap;
CRect rectToolBar;
//========create main menu
CMenuBar& mb = m_wndMenuBar;
VERIFY(mb.CreateEx(this));
mb.ModifyStyle(0, TBSTYLE_TRANSPARENT|TBSTYLE_FLAT| TBSTYLE_LIST);
mb.LoadMenu(IDR_MAINFRAME);
bitmap.LoadBitmap(IDB_BITMAP1);
m_wndMenuBar.m_ImgList.Create(16, 16, ILC_COLORDDB|ILC_MASK, 7, 1);
m_wndMenuBar.m_ImgList.Add(&bitmap, RGB(255,0,255));
bitmap.Detach();
GetMenu()->CheckMenuItem(ID_VIEW_MENUBAR, MF_CHECKED);
//============
//============sysmenu
if (!m_SysMenuBar.CreateEx(this))
{
TRACE0("Failed to create toolbar\n");
return -1; // fail to create
}
img.Create(IDB_BITMAP6, 12, 0, RGB(255, 255, 255));
m_SysMenuBar.GetToolBarCtrl().SetImageList(&img);
img.Detach();
m_SysMenuBar.ModifyStyle(0, TBSTYLE_FLAT | TBSTYLE_TRANSPARENT );
m_SysMenuBar.SetButtonInfo(0, ID_TAB_PRE, TBSTYLE_BUTTON, 5);
m_SysMenuBar.SetButtonInfo(1, ID_TAB_NEXT, TBSTYLE_BUTTON, 4);
m_SysMenuBar.SetButtonInfo(2,0,TBBS_SEPARATOR,0);
m_SysMenuBar.SetButtonInfo(3, ID_FILE_CLOSEALL, TBSTYLE_BUTTON, 3);
m_SysMenuBar.SetButtonInfo(4,0,TBBS_SEPARATOR,0);
m_SysMenuBar.SetButtonInfo(5, ID_WINDOW_MIN, TBSTYLE_BUTTON, 0);
m_SysMenuBar.SetButtonInfo(6, ID_WINDOW_RESTOR, TBSTYLE_BUTTON, 1);
m_SysMenuBar.SetButtonInfo(7, ID_FILE_CLOSE_1, TBSTYLE_BUTTON, 2);
m_SysMenuBar.SetBarStyle(m_SysMenuBar.GetBarStyle() |
CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_FIXED);
//=============
//=============link bar
if (!m_LinkBar.CreateEx(this))
{
TRACE0("Failed to create toolbar\n");
return -1; // fail to create
}
bitmap.LoadBitmap(IDB_BITMAP1);
img.Create(16, 16, ILC_COLORDDB|ILC_MASK, 7, 1);
img.Add(&bitmap, RGB(255,0,255));
m_LinkBar.GetToolBarCtrl().SetImageList(&img);
img.Detach();
bitmap.Detach();
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);
//add open all links
int iString;
TBBUTTON tbb;
str.LoadString(IDS_LINKS);
memset(&tbb, 0, sizeof(tbb));
iString = m_LinkBar.GetToolBarCtrl().AddStrings(str);
tbb.iString = iString;
tbb.fsState = TBSTATE_ENABLED;
tbb.fsStyle = TBSTYLE_AUTOSIZE;
tbb.iBitmap = 3;
tbb.idCommand = ID_TOOLS_OPENALLLINKS;
VERIFY(m_LinkBar.GetToolBarCtrl().AddButtons(1, &tbb));
//================
//================Favorite bar
//compact fav bar
bCompactFavBar = AfxGetApp()->GetProfileInt("Settings", "CompactFavBar", FALSE);
if (!m_FavBar.CreateEx(this))
{
TRACE0("Failed to create toolbar\n");
return -1; // fail to create
}
if(!bCompactFavBar)
{
bitmap.LoadBitmap(IDB_BITMAP1);
img.Create(16, 16, ILC_COLORDDB|ILC_MASK, 7, 1);
img.Add(&bitmap, RGB(255,0,255));
m_FavBar.GetToolBarCtrl().SetImageList(&img);
img.Detach();
bitmap.Detach();
}
else
m_FavBar.GetToolBarCtrl().SetImageList(NULL);
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);
//===================
//max menu size
m_nMenuWidth = AfxGetApp()->GetProfileInt("Settings", "MenuSize", 26);
//single column menu
bSingleMenu = AfxGetApp()->GetProfileInt("Settings", "SingleMenu", FALSE);
// first get rid of bogus submenu items.
InitFavorites();
m_LinkBar.GetToolBarCtrl().GetToolTips()->UpdateTipText(ID_TOOLS_OPENALLLINKS, &m_LinkBar, ID_TOOLS_OPENALLLINKS);
GetMenu()->CheckMenuItem(ID_VIEW_LINKS, MF_CHECKED);
GetMenu()->CheckMenuItem(ID_VIEW_FAVS, MF_CHECKED);
//============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().SetButtonWidth(22, 150);
m_wndToolBar.GetToolBarCtrl().SetExtendedStyle(TBSTYLE_EX_DRAWDDARROWS);
// Create and set the normal toolbar image list.
bitmap.LoadBitmap(IDB_COLDTOOLBAR);
img.Create(21, 20, ILC_COLORDDB|ILC_MASK, 20, 1);
img.Add(&bitmap, RGB(255,0,255));
m_wndToolBar.SendMessage(TB_SETIMAGELIST, 0, (LPARAM)img.m_hImageList);
img.Detach();
bitmap.Detach();
// Create and set the hot toolbar image list.
bitmap.LoadBitmap(IDB_HOTTOOLBAR);
img.Create(21, 20, ILC_COLORDDB|ILC_MASK, 20, 1);
img.Add(&bitmap, RGB(255,0,255));
m_wndToolBar.SendMessage(TB_SETHOTIMAGELIST, 0, (LPARAM)img.m_hImageList);
img.Detach();
bitmap.Detach();
//====================
//===============AddressBar
if (!m_AddressBar.CreateEx(this))
{
TRACE0("Failed to create toolbar\n");
return -1; // fail to create
}
bitmap.LoadBitmap(IDB_BITMAP7);
img.Create(16, 16, ILC_COLORDDB|ILC_MASK, 1, 1);
img.Add(&bitmap, RGB(255,0,255));
m_AddressBar.SendMessage(TB_SETIMAGELIST, 0, (LPARAM)img.m_hImageList);
img.Detach();
bitmap.Detach();
bitmap.LoadBitmap(IDB_BITMAP8);
img.Create(16, 16, ILC_COLORDDB|ILC_MASK, 1, 1);
img.Add(&bitmap, RGB(255,0,255));
m_AddressBar.SendMessage(TB_SETHOTIMAGELIST, 0, (LPARAM)img.m_hImageList);
img.Detach();
bitmap.Detach();
m_AddressBar.ModifyStyle(0, TBSTYLE_FLAT | TBSTYLE_TRANSPARENT |TBSTYLE_TOOLTIPS );
m_AddressBar.SetButtonInfo(0, 0, TBBS_SEPARATOR, 0);
m_AddressBar.SetButtonInfo(1, IDOK, TBSTYLE_BUTTON, 0);
m_AddressBar.GetToolBarCtrl().GetToolTips()->UpdateTipText("Go", &m_AddressBar, IDOK);
m_AddressBar.Init();
//get the reference to the comboboxex.
m_wndAddress = m_AddressBar.GetAddressBox();
GetMenu()->CheckMenuItem(ID_VIEW_ADDRESSBAR, MF_CHECKED);
//load typed URLs
LoadTypedURL();
//=======================
//===============external tool bar
if (!m_ExternalTool.CreateEx(this))
{
TRACE0("Failed to create toolbar\n");
return -1; // fail to create
}
GetMenu()->CheckMenuItem(ID_VIEW_EX_TOOL, MF_CHECKED);
m_ExternalTool.ModifyStyle(0, TBSTYLE_FLAT | TBSTYLE_TRANSPARENT | TBSTYLE_LIST|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);
//build external toolbar
//get Utils name list
CString wp;
char * tmp;
wp = AfxGetApp()->GetProfileString("ExUtils", "name1", NULL);
if(wp == "" || wp.IsEmpty())
{
tmp = NULL;
UINT len;
BOOL r = AfxGetApp()->GetProfileBinary("ExUtils","names", (LPBYTE*)(&tmp), &len);
if(r)
{
//load pop list
char *token;
char seps[] = "\n";
token = strtok( tmp, seps);
while( token != NULL )
{
/* While there are tokens in "string" */
m_lstrUtilNames.AddTail(token);
/* Get next token: */
token = strtok( NULL, seps );
}
delete[] tmp;
}
//get Utils command list
tmp = NULL;
r = AfxGetApp()->GetProfileBinary("ExUtils","cmds", (LPBYTE*)(&tmp), &len);
if(r)
{
//load pop list
char *token;
char seps[] = "\n";
token = strtok( tmp, seps);
while( token != NULL )
{
/* While there are tokens in "string" */
m_lstrUtilCmds.AddTail(token);
/* Get next token: */
token = strtok( NULL, seps );
//add start up
m_lbUtilStart.AddTail(FALSE);
}
delete[] tmp;
}
int pn=m_lstrUtilNames.GetCount()-m_lstrUtilCmds.GetCount();
if(pn>0)
{
for(int i=0; i<pn;i++)
m_lstrUtilCmds.AddTail("");
}
}
else
{
//new format
char Keyname1[10] = "name", Keyname2[10] = "cmds", Keyname3[10] = "sta";
CString cmd;
BOOL bstart;
int i=1;
cmd = AfxGetApp()->GetProfileString("ExUtils", "cmds1", NULL);
bstart = AfxGetApp()->GetProfileInt("ExUtils", "sta1", FALSE);
while(wp != "" && !wp.IsEmpty())
{
m_lstrUtilNames.AddTail(wp);
m_lstrUtilCmds.AddTail("\""+cmd+"\"");
m_lbUtilStart.AddTail(bstart);
i++;
itoa(i, Keyname1+4, 10);
itoa(i, Keyname2+4, 10);
itoa(i, Keyname3+3, 10);
wp = AfxGetApp()->GetProfileString("ExUtils", Keyname1, NULL);
cmd = AfxGetApp()->GetProfileString("ExUtils", Keyname2, NULL);
bstart = AfxGetApp()->GetProfileInt("ExUtils", Keyname3, FALSE);
}
}
BuildUtilMenu();
// ======================OK
//==========create rebar
if (!m_wndReBar.Create(this,RBS_BANDBORDERS|RBS_DBLCLKTOGGLE | RBS_REGISTERDROP |RBS_VARHEIGHT ,CCS_NODIVIDER |CCS_NOPARENTALIGN |WS_BORDER |WS_CHILD |WS_CLIPCHILDREN |WS_CLIPSIBLINGS |WS_VISIBLE | CBRS_TOP))
{
return -1; // fail to create
}
//========add to rebar
m_wndReBar.AddBar(&m_wndMenuBar, NULL,NULL, RBBS_FIXEDBMP | RBBS_BREAK |RBBS_GRIPPERALWAYS|RBBS_USECHEVRON);
m_wndReBar.AddBar(&m_SysMenuBar, NULL, NULL, RBBS_FIXEDBMP |RBBS_GRIPPERALWAYS);
m_wndReBar.AddBar(&m_wndToolBar, NULL,NULL, RBBS_FIXEDBMP | RBBS_BREAK |RBBS_GRIPPERALWAYS|RBBS_USECHEVRON);
str.LoadString(IDS_ADDRESS);
m_wndReBar.AddBar(&m_AddressBar, str,NULL, RBBS_FIXEDBMP | RBBS_BREAK |RBBS_GRIPPERALWAYS );
// set up min/max sizes and ideal sizes for pieces of the rebar
REBARBANDINFO rbbi;
m_wndMenuBar.GetItemRect(1, &rectToolBar);
rbbi.cbSize = sizeof(rbbi);
rbbi.fMask = RBBIM_CHILDSIZE | RBBIM_IDEALSIZE | RBBIM_SIZE|RBBIM_ID;//|RBBIM_STYLE
rbbi.wID = ID_MENU_BAR;
rbbi.cxMinChild = rectToolBar.Width();
rbbi.cyMinChild = rectToolBar.Height();
m_wndMenuBar.GetToolBarCtrl().GetItemRect(m_wndMenuBar.GetToolBarCtrl().GetButtonCount()-1,&rectToolBar);
rbbi.cx = rbbi.cxIdeal = rectToolBar.right;
m_wndReBar.GetReBarCtrl().SetBandInfo(0, &rbbi);
m_SysMenuBar.GetItemRect(0, &rectToolBar);
rbbi.cbSize = sizeof(rbbi);
rbbi.fMask = RBBIM_CHILDSIZE | RBBIM_IDEALSIZE | RBBIM_SIZE|RBBIM_ID;//|RBBIM_STYLE
rbbi.wID = ID_SYSMENU_BAR;
rbbi.cyMinChild = rectToolBar.Height();
m_SysMenuBar.GetToolBarCtrl().GetItemRect(m_SysMenuBar.GetToolBarCtrl().GetButtonCount()-1,&rectToolBar);
rbbi.cxMinChild = rbbi.cx = rbbi.cxIdeal = rectToolBar.right+2;
m_wndReBar.GetReBarCtrl().SetBandInfo(1, &rbbi);
rbbi.cbSize = sizeof(rbbi);
rbbi.fMask = RBBIM_ID ;//|RBBIM_STYLE
rbbi.wID = ID_VIEW_TOOLBAR;
m_wndReBar.GetReBarCtrl().SetBandInfo(2, &rbbi);
m_bTextLabel=AfxGetApp()->GetProfileInt("Settings", "TextLabel", FALSE);
InitialToolBar();
rbbi.cxMinChild = 0;
CRect rectAddress;
rbbi.fMask = RBBIM_CHILDSIZE | RBBIM_IDEALSIZE | RBBIM_SIZE| RBBIM_ID;
rbbi.wID = ID_VIEW_ADDRESSBAR;
m_wndAddress->GetEditCtrl()->GetWindowRect(&rectAddress);
rbbi.cyMinChild = rectAddress.Height() + 10;
rbbi.cxMinChild = 20;
rbbi.cx = rbbi.cxIdeal = 20;
m_wndReBar.GetReBarCtrl().SetBandInfo(3, &rbbi);
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
}
m_wndStatusBar.SetProgressBarWidth(80);
m_wndStatusBar.SetRange(0,100);
m_wndStatusBar.SetPaneStyle(ID_SEPARATOR, SBPS_STRETCH);
if(AfxGetApp()->GetProfileInt("Bands", "Status", 1)==0)
m_wndStatusBar.ShowWindow(SW_HIDE);
//link bar
// set up toolbar button sizes
m_LinkBar.GetItemRect(0, &rectToolBar);
m_wndReBar.AddBar(&m_LinkBar, NULL,NULL, RBBS_FIXEDBMP | RBBS_BREAK |RBBS_GRIPPERALWAYS|RBBS_USECHEVRON);
rbbi.cbSize = sizeof(rbbi);
rbbi.fMask = RBBIM_CHILDSIZE | RBBIM_IDEALSIZE | RBBIM_SIZE |RBBIM_ID ;
rbbi.wID = ID_VIEW_LINKS;
rbbi.cxMinChild = rectToolBar.Width()+2;
rbbi.cyMinChild = 22;
m_LinkBar.GetToolBarCtrl().GetItemRect(m_LinkBar.GetToolBarCtrl().GetButtonCount()-1,&rectToolBar);
rbbi.cx = rbbi.cxIdeal = rectToolBar.right;
m_wndReBar.GetReBarCtrl().SetBandInfo(4, &rbbi);
//Favorate bar
// set up toolbar button sizes
m_FavBar.GetItemRect(0, &rectToolBar);
str.LoadString(IDS_FAVORITES);
m_wndReBar.AddBar(&m_FavBar, str,NULL, RBBS_FIXEDBMP | RBBS_BREAK |RBBS_GRIPPERALWAYS|RBBS_USECHEVRON);
rbbi.cbSize = sizeof(rbbi);
rbbi.fMask = RBBIM_CHILDSIZE | RBBIM_IDEALSIZE | RBBIM_SIZE |RBBIM_ID ;
rbbi.wID = ID_VIEW_FAVS;
rbbi.cxMinChild = rectToolBar.Width()+2;
rbbi.cyMinChild = 22;
m_FavBar.GetToolBarCtrl().GetItemRect(m_FavBar.GetToolBarCtrl().GetButtonCount()-1,&rectToolBar);
rbbi.cx = rbbi.cxIdeal = rectToolBar.right;
m_wndReBar.GetReBarCtrl().SetBandInfo(5, &rbbi);
//exteranl tool bar
// set up toolbar button sizes
m_ExternalTool.GetItemRect(0, &rectToolBar);
str.LoadString(IDS_EX_TOOL);
m_wndReBar.AddBar(&m_ExternalTool, str,NULL, RBBS_FIXEDBMP | RBBS_BREAK |RBBS_GRIPPERALWAYS|RBBS_USECHEVRON);
rbbi.cbSize = sizeof(rbbi);
rbbi.fMask = RBBIM_CHILDSIZE | RBBIM_IDEALSIZE | RBBIM_SIZE |RBBIM_ID ;
rbbi.wID = ID_VIEW_EX_TOOL;
rbbi.cxMinChild = rectToolBar.Width()+2;
rbbi.cyMinChild = 22;
m_ExternalTool.GetToolBarCtrl().GetItemRect(m_ExternalTool.GetToolBarCtrl().GetButtonCount()-1,&rectToolBar);
/*rbbi.cx =*/ rbbi.cxIdeal = rectToolBar.right;
m_wndReBar.GetReBarCtrl().SetBandInfo(6, &rbbi);
//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");
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -