📄 mainfrm.cpp
字号:
char *token;
char seps[] = "\n";
int i = 0;
token = strtok( tmp, seps);
while( token != NULL )
{
/* While there are tokens in "string" */
m_ExternalUtilList.m_UtilList.GetAt(i)->m_strUtilCmd = token;
/* Get next token: */
token = strtok( NULL, seps );
//add start up
m_ExternalUtilList.m_UtilList.GetAt(i)->m_bUtilStart = FALSE;
m_ExternalUtilList.m_UtilList.GetAt(i)->m_bUtilClose = FALSE;
i++;
}
delete[] tmp;
}
}
else
{
//new format
char Keyname1[10] = "name", Keyname2[10] = "cmds", Keyname3[10] = "sta", Keyname4[10] = "cls";
CString cmd;
BOOL bstart, bClose;
int i=1;
cmd = AfxGetApp()->GetProfileString("ExUtils", "cmds1", NULL);
bstart = AfxGetApp()->GetProfileInt("ExUtils", "sta1", FALSE);
bClose = AfxGetApp()->GetProfileInt("ExUtils", "cls1", bstart);
while(wp != "" && !wp.IsEmpty())
{
eui = new CExternalUtilItem;
eui->m_strUtilName = wp;
eui->m_strUtilCmd = "\""+cmd+"\"";
eui->m_bUtilStart = bstart;
eui->m_bUtilClose = bClose;
m_ExternalUtilList.m_UtilList.Add(eui);
i++;
itoa(i, Keyname1+4, 10);
itoa(i, Keyname2+4, 10);
itoa(i, Keyname3+3, 10);
itoa(i, Keyname4+3, 10);
wp = AfxGetApp()->GetProfileString("ExUtils", Keyname1, NULL);
cmd = AfxGetApp()->GetProfileString("ExUtils", Keyname2, NULL);
bstart = AfxGetApp()->GetProfileInt("ExUtils", Keyname3, FALSE);
bClose = AfxGetApp()->GetProfileInt("ExUtils", Keyname4, bstart);
}
}
BuildUtilMenu();
// ======================OK
// ==============Groups ==========
InitGroups();
//==========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_nTextLabel = AfxGetApp()->GetProfileInt("Settings", "TextLabel", 0);
m_bColorIcon = AfxGetApp()->GetProfileInt("Settings", "ColorIcon", 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);
m_wndStatusBar.SetPaneInfo(2, ID_INDICATOR_SECU , SBPS_NORMAL, 10);
if(AfxGetApp()->GetProfileInt("Bands", "Status", 1)==0)
m_wndStatusBar.ShowWindow(SW_HIDE);
m_hSecuIcon = (HICON)LoadImage(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDI_SECURE),IMAGE_ICON,16,16,LR_DEFAULTCOLOR);
UINT sbstyle, sbID;
m_wndStatusBar.GetPaneInfo(3, sbID, sbstyle, m_SBIPWidth);
m_wndStatusBar.GetPaneInfo(5, sbID, sbstyle, m_SBMemWidth);
m_wndStatusBar.SetPaneText(3, "");
m_wndStatusBar.SetPaneText(5, "");
//display ip
m_bDisplayIP = AfxGetApp()->GetProfileInt("Settings", "DisplayIP", 0);
//display mem
m_bDispMem = AfxGetApp()->GetProfileInt("Settings", "DisplayMem", 1);
if(!m_bDisplayIP)
m_wndStatusBar.SetPaneInfo(3, ID_INDICATOR_IP, SBPS_NORMAL, 0);
if(!m_bDispMem)
m_wndStatusBar.SetPaneInfo(5, ID_INDICATOR_RES, SBPS_NORMAL, 0);
//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");
return -1; // fail to create
}
//add tab
//multiline tab
m_bMultiLineTab = AfxGetApp()->GetProfileInt("Settings", "MultiLineTab", 1);
m_bAutoTab = AfxGetApp()->GetProfileInt("Settings", "AutoTab", 1);
//Tab bar
//Create Tab Bar
CRect rect(0,0,300,19);
if(m_bMultiLineTab)
{
if(!m_bAutoTab)
m_wndTab.Create(WS_VISIBLE|TCS_BUTTONS|TCS_FLATBUTTONS|TCS_FOCUSNEVER|TCS_FORCELABELLEFT|TCS_TOOLTIPS|TCS_RAGGEDRIGHT|TCS_MULTILINE, rect,this, AFX_IDW_TOOLBAR + 2);
else
m_wndTab.Create(WS_VISIBLE|TCS_BUTTONS|TCS_FLATBUTTONS|TCS_FOCUSNEVER|TCS_FORCELABELLEFT|TCS_TOOLTIPS|TCS_RAGGEDRIGHT|TCS_MULTILINE|TCS_FIXEDWIDTH, rect,this, AFX_IDW_TOOLBAR + 2);
GetMenu()->CheckMenuItem(ID_OPTION_MULTI_TAB, MF_CHECKED);
}
else if(!m_bAutoTab)
m_wndTab.Create(WS_VISIBLE|TCS_BUTTONS|TCS_FLATBUTTONS|TCS_FOCUSNEVER|TCS_FORCELABELLEFT|TCS_TOOLTIPS|TCS_RAGGEDRIGHT, rect,this, AFX_IDW_TOOLBAR + 2);
else
m_wndTab.Create(WS_VISIBLE|TCS_BUTTONS|TCS_FLATBUTTONS|TCS_FOCUSNEVER|TCS_FORCELABELLEFT|TCS_TOOLTIPS|TCS_RAGGEDRIGHT|TCS_FIXEDWIDTH , rect,this, AFX_IDW_TOOLBAR + 2);
DWORD dwExStyle= m_wndTab.GetExtendedStyle();
m_wndTab.SetExtendedStyle(dwExStyle | TCS_EX_FLATSEPARATORS);
img.Create(IDB_BITMAP5, 11, 0, RGB(255, 0, 255));
m_TabImgList.Create(IDB_BITMAP5, 11, 0, RGB(255, 0, 255));
m_wndTab.SetImageList(&img);
img.Detach();
CSize size(3,2);
//m_wndTab.SetItemSize(size);
m_wndTab.SetFont(m_wndReBar.GetFont());
m_wndTab.SetPadding( size );
GetMenu()->CheckMenuItem(ID_VIEW_TASKBAR, MF_CHECKED);
//register drag
ms_TabDropTarget.Register(&m_wndTab);
// set up min/max sizes and ideal sizes for pieces of the rebar
rbbi.cbSize = sizeof(rbbi);
rbbi.fMask = RBBIM_CHILDSIZE | RBBIM_IDEALSIZE |RBBIM_ID;
rbbi.wID = ID_VIEW_TASKBAR;
rbbi.cxMinChild = 0;
// m_wndAddress->GetEditCtrl()->GetWindowRect(&rectAddress);
m_wndMenuBar.GetWindowRect(&rectAddress);
rbbi.cyMinChild = rectAddress.Height();
rbbi.cxIdeal = 200;
//add tab to top or bottom
if(m_bTopTab)
{
m_wndReBar.AddBar(&m_wndTab,NULL, NULL, RBBS_FIXEDBMP | RBBS_BREAK |RBBS_GRIPPERALWAYS );
m_wndReBar.GetReBarCtrl().SetBandInfo(7, &rbbi);
m_wndTab.ModifyStyle(0, CCS_NORESIZE);
}
else
{
m_wndReBar2.AddBar(&m_wndTab);
m_wndReBar2.GetReBarCtrl().SetBandInfo(0, &rbbi);
}
//load band position
char temp[7]="band", rectstr[10]="bandrc";
RECT *pbandrect;//, realrect
UINT bands;
int i=-1;
UINT len = 0;
DWORD pos;
BOOL show;
i=-1;
do
{
i++;
itoa(i, temp+4, 10);
bands = AfxGetApp()->GetProfileInt("Settings", temp, 0);
show = AfxGetApp()->GetProfileInt("Bands", temp, 1);
itoa(i, rectstr+6,10);
if(bands!=0 && show)
{
BOOL r = AfxGetApp()->GetProfileBinary("Settings", rectstr, (LPBYTE*)&pbandrect, &len);
if(r)
{
//if(bands!=ID_VIEW_FAVS)
{
int index=m_wndReBar.GetReBarCtrl().IDToIndex(bands);
//m_wndReBar.GetReBarCtrl().GetRect(index, &realrect);
//if(realrect.left != pbandrect->left || realrect.top != pbandrect->top)
{
rbbi.fMask = RBBIM_SIZE;
rbbi.cx=pbandrect->right-pbandrect->left;
m_wndReBar.GetReBarCtrl().SetBandInfo(index, &rbbi);
index=m_wndReBar.GetReBarCtrl().IDToIndex(bands);
m_wndReBar.GetReBarCtrl().BeginDrag(index);
pos=((pbandrect->top+8)<<16)+pbandrect->left;
m_wndReBar.GetReBarCtrl().DragMove(pos);
m_wndReBar.GetReBarCtrl().EndDrag();
}
}
delete pbandrect;
}
}
else if(bands!=0)
{
int index=m_wndReBar.GetReBarCtrl().IDToIndex(bands);
m_wndReBar.GetReBarCtrl().ShowBand(index, FALSE);
GetMenu()->CheckMenuItem(bands, MF_UNCHECKED);
}
}while(bands!=0);
//bottom bar
if(AfxGetApp()->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);
}
hResInst = LoadLibrary("RSRC32.dll");
pGetRes = (GETRES) GetProcAddress(hResInst, "_MyGetFreeSystemResources32@4");
ShowBackground(TRUE);
//2.4 animation title icon
m_animIcon.SetImageList(IDB_BITMAP11,6,RGB(0,0,0));
m_nAnimateIconTimer = SetTimer(99, 180, NULL);
//start update timer
m_nUpdateTimer = SetTimer(1530, 750, NULL);
//get host name
addr[0]='\0';
gethostname(addr,255);
m_wndTab.ModifyStyle(CCS_NORESIZE, 0);
return 0;
}
/////////////////////////////////////////////////////////////////////////////
// CMainFrame diagnostics
#ifdef _DEBUG
void CMainFrame::AssertValid() const
{
CMDIFrameWnd::AssertValid();
}
void CMainFrame::Dump(CDumpContext& dc) const
{
CMDIFrameWnd::Dump(dc);
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CMainFrame message handlers
void CMainFrame::SetAddress(LPCTSTR lpszUrl)
{
// This is called when the browser has completely loaded the new location,
// so make sure the text in the address bar is up to date and stop the
try
{
m_wndAddress->SetWindowText(lpszUrl);
COMBOBOXEXITEM item;
item.mask = CBEIF_IMAGE|CBEIF_SELECTEDIMAGE ;
item.iItem = -1;
item.iImage = 1;
item.iSelectedImage = 1;
m_wndAddress->SetItem(&item);
}
/* catch(CMemoryException * e)
{
if(e!=NULL)e->Delete();
// AfxMessageBox("setaddress error");
}*/
catch(...)
{
}
}
void CMainFrame::OnNewAddress()
{
// gets called when an item in the Address combo box is selected
// just navigate to the newly selected location.
CString str;
try{
int i = m_AddressBar.m_wndAddress.GetCurSel();
if(i<0)
return;
m_AddressBar.GetSelText(i, str);
CChildFrame* tcf = (CChildFrame*)MDIGetActive();
//decode the escape characters
// DecodeEscap(str);
short ks=GetKeyState(VK_CONTROL), ss=GetKeyState(VK_SHIFT);
if(m_bUse3721 && ks>=0 && ss>=0)
{
//use 3721
if(str.Find(':')<0 && str.Find('.')<0)
{
//not a url
str = "http://cns.3721.com/cns.dll?platform=pc&fl=1&fd=1&name="+str; // www.3721.com/***
}
}
//create new if not exist
if(tcf==NULL || bAddressInNewWindow)
tcf = NewChildWindow(0);
//web proxy
if (tcf!=NULL && tcf->m_pView!=NULL)
{
tcf->m_pView->ToNavigate(str, 0, NULL);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -