📄 mainfrm.cpp
字号:
rbbi.cyMinChild = 22;
else
rbbi.cyMinChild = rectToolBar.Height();
int bc=m_LinkBar.GetToolBarCtrl().GetButtonCount();
if(bc>0)
{
m_LinkBar.GetToolBarCtrl().GetItemRect(bc-1,&rectToolBar);
/*rbbi.cx =*/ rbbi.cxIdeal = rectToolBar.right;
}
else
/*rbbi.cx =*/ rbbi.cxIdeal = 2;
int bandid = m_wndReBar.GetReBarCtrl().IDToIndex(ID_VIEW_LINKS);
m_wndReBar.GetReBarCtrl().SetBandInfo(bandid, &rbbi);
}
if(FirstLevel)
{
CRect rectToolBar;
REBARBANDINFO rbbi;
m_FavBar.GetItemRect(0, &rectToolBar);
rbbi.cbSize = sizeof(rbbi);
rbbi.fMask = RBBIM_CHILDSIZE | RBBIM_IDEALSIZE /*| RBBIM_SIZE*/ |RBBIM_ID ;
rbbi.wID = ID_VIEW_FAVS;
rbbi.cxMinChild = 0;//rectToolBar.Width()+2;
if(rectToolBar.Height()<22)
rbbi.cyMinChild = 22;
else
rbbi.cyMinChild = rectToolBar.Height();
int bc=m_FavBar.GetToolBarCtrl().GetButtonCount();
if(bc>0)
{
m_FavBar.GetToolBarCtrl().GetItemRect(bc-1,&rectToolBar);
/*rbbi.cx =*/ rbbi.cxIdeal = rectToolBar.right;
}
else
/*rbbi.cx =*/ rbbi.cxIdeal = 2;
int bandid = m_wndReBar.GetReBarCtrl().IDToIndex(ID_VIEW_FAVS);
m_wndReBar.GetReBarCtrl().SetBandInfo(bandid, &rbbi);
}
}catch(...){}
return nEndPos;
}
void CMainFrame::OpenGoUpMenuItem(UINT nID)
{
GET_ACTIVE
//do local url is enough
DO_LOCAL_URL(g_strGoUpUrl[nID-B_GO_UP]);
tcf->m_pView->ToNavigate(g_strGoUpUrl[nID-B_GO_UP],0, NULL);
}
void CMainFrame::OnGoUpPage()
{
GET_ACTIVE
//no g_strGoUpUrl, get up url direct
CString strURL;
strURL = _StringGetUpUrl(tcf->m_pView->m_lpszUrl);
if (strURL != tcf->m_pView->m_lpszUrl)
{
DO_LOCAL_URL(strURL);
if (g_bLinkInNewWindow)
NewChildWindow(1,2,strURL);
else
tcf->m_pView->ToNavigate(strURL, 0, NULL);
}
}
void CMainFrame::OpenMenuItem(UINT nID)
{
try{
TCHAR buf[INTERNET_MAX_PATH_LENGTH];
CString strUrl;
MENUITEMINFO mii;
mii.fMask = MIIM_DATA|MIIM_TYPE; // get the state of the menu item
mii.dwTypeData = NULL;
mii.cch = 0;
mii.dwItemData = NULL;
mii.cbSize = sizeof(mii);
::GetMenuItemInfo(GetMenu()->m_hMenu, nID, FALSE, &mii);
CMenuData* pmd = (CMenuData*)(mii.dwItemData);
if (!pmd || !pmd->m_szURL || strlen(pmd->m_szURL)<1)
strUrl = g_strMenuUrl;
else
strUrl = pmd->m_szURL;
if (strUrl.GetLength()<1)
return;
DWORD dwProperty = DEFAULT_PROPERTY;
int nAutoRunCmd = 0;
if(IS_FAVURL(strUrl))
{
dwProperty = ::GetPrivateProfileInt(_T("InternetShortcut"), _T("Property"), DEFAULT_PROPERTY, strUrl);
nAutoRunCmd = ::GetPrivateProfileInt(_T("InternetShortcut"), _T("AutoRunCmd"), 0, strUrl);
::GetPrivateProfileString(_T("InternetShortcut"), _T("URL"), _T(""), buf, INTERNET_MAX_PATH_LENGTH, strUrl);
strUrl = buf;
}
OpenMenuUrl(strUrl, dwProperty, nAutoRunCmd);
}catch(...){}
}
void CMainFrame::OpenMenuUrl(CString strUrl, DWORD dwProperty, int nAutoRunCmd)
{
try{
if(strUrl.Right(4) == _T(".lnk"))
{
TCHAR buf[INTERNET_MAX_PATH_LENGTH];
if(ResolveLink(strUrl, buf))
{
if (strlen(buf) == 0)//if length=0, maybe means net pc
strUrl = "\\\\" + GET_TITLE(strUrl);
else
strUrl = buf;
}
else
strUrl = "about:blank";
}
//
if (DoSpecialUrl(strUrl))
return;
CChildFrame* tcf = (CChildFrame*)MDIGetActive();
if (VALID_TCF(tcf) && !g_bFavInNewWindow && !PRESS_CTRL)
{
tcf->m_pView->ToNavigate(strUrl, 0, NULL);
//not do this
//m_wndAddress->GetEditCtrl()->SetWindowText(strUrl);
}
else
{
tcf = NewChildWindow(0);
if(VALID_TCF(tcf))
{
if (dwProperty!=DEFAULT_PROPERTY )
tcf->m_pView->SetSpecialProperty(dwProperty);
tcf->m_pView->m_nAutoRunCmd = nAutoRunCmd;
tcf->m_pView->ToNavigate(strUrl, 0, NULL);
if (m_bActiveNewWindow || m_nWin==1)
m_wndAddress->GetEditCtrl()->SetWindowText(strUrl);
}
}
}catch(...){}
}
void CMainFrame::OnFileNewBlank()
{
NewChildWindow(2,0, NULL, NULL, TRUE);
}
void CMainFrame::OnFileNewCurrentpage()
{
// TODO: Add your command handler code here
try{
CString strURL;
CChildFrame* tcf = (CChildFrame*)MDIGetActive();
if (VALID_TCF(tcf))
strURL = tcf->m_pView->m_lpszUrl;
else
strURL = "about:blank";
if (m_bActiveFileNew)
NewChildWindow(1,2,strURL, NULL, TRUE);
else
NewChildWindow(1,2,strURL);
}catch(...){}
}
void CMainFrame::OnUpdateProgress(CCmdUI* pCmdUI)
{
try{
if(g_nPercent<0)
{
if(m_wndStatusBar.IsProgressBarVisible())
{
m_wndStatusBar.ShowProgressBar(false);
//
SetWindowText("MyIE");
}
}
else
{
if(!m_wndStatusBar.IsProgressBarVisible())
m_wndStatusBar.ShowProgressBar(true);
m_wndStatusBar.SetPos(g_nPercent);
static TCHAR str[20];
sprintf(str, "%d%%", g_nPercent);
m_wndStatusBar.SetWindowText(str);
//
sprintf(str, "%d%%-MyIE", g_nPercent);
SetWindowText(str);
}
}catch(...){}
}
int CMainFrame::AddNewTab(CChildFrame* tcf, int CurID, LPTSTR label, BOOL bAddLast)
{
if(tcf==NULL)
return 0;
try{
int presel = m_wndTab.GetCurSel();
if(m_nNewSequence==0)
{
if (tcf->m_nActive & INW_OTHER_SIDE)
CurID = presel;
else
CurID = m_nWin;
}
else if(m_nNewSequence==1)
{
if (tcf->m_nActive & INW_OTHER_SIDE)
CurID = presel;
else
CurID = presel+1;
}
else if(m_nNewSequence==2)
{
if (tcf->m_nActive & INW_OTHER_SIDE)
CurID = presel+1;
else
CurID = presel;
}
if (CurID<0)
CurID = 0;
TCITEM TabCtrlItem;
TabCtrlItem.mask = TCIF_TEXT|TCIF_PARAM;
if(label==NULL)
TabCtrlItem.pszText = "about:blank";
else
TabCtrlItem.pszText = label;
TabCtrlItem.lParam = (LPARAM)tcf;
m_wndTab.InsertItem( CurID, &TabCtrlItem );
//select this tab
if(tcf->m_pView!=NULL)
{
if(tcf->m_pView->m_bIsActive)//m_bActiveNewWindow
m_wndTab.SetCurSel(CurID);
else if(m_nNewSequence==2)
{
if (tcf->m_nActive & INW_OTHER_SIDE)
m_wndTab.SetCurSel(presel);
else
m_wndTab.SetCurSel(CurID+1);
}
else
{
if (tcf->m_nActive & INW_OTHER_SIDE)
m_wndTab.SetCurSel(CurID+1);
else
m_wndTab.SetCurSel(presel);
}
}
PostMessage(WM_UPDATE_TAB, TRUE);
m_nWin = m_wndTab.GetItemCount();
if(m_nWin<=2)
m_SysMenuBar.PostMessage(WM_IDLEUPDATECMDUI, TRUE, 0);
//??
if(m_nTabStyle==1 && m_nWin==1)
m_wndTab.Invalidate();
//??
static BOOL g_bAdjustTabWidth = 0;
if (!g_bAdjustTabWidth)
{
CRect rect;
m_wndTab.GetWindowRect(&rect);
m_wndTab.SetWindowPos(&wndTop, 0,0, rect.Width()+4, rect.Height(), SWP_NOMOVE|SWP_NOOWNERZORDER|SWP_NOZORDER|SWP_NOREDRAW|SWP_NOSENDCHANGING|SWP_NOACTIVATE);
g_bAdjustTabWidth = 1;
}
g_bVerbose = TRUE;
if(m_nNewSequence)
UpdateTabTitleIndex(CurID);
}catch(...){}
return CurID;
}
void CMainFrame::OnSelChange(NMHDR* pNotifyStruct, LRESULT* pResult)
{
OnSelTab(0,0);
*pResult = 0;
}
void CMainFrame::OnSelTab(WPARAM wParam, LPARAM lParam)
{
try{
m_wndTab.m_bDragging = FALSE;
TCITEM TabCtrlItem;
int n = m_wndTab.GetCurSel();
if(n>=0)
{
TabCtrlItem.mask = TCIF_PARAM;
m_wndTab.GetItem(n, &TabCtrlItem);
if(TabCtrlItem.lParam != NULL)
{
((CChildFrame*)TabCtrlItem.lParam)->m_bSkipSel = TRUE;
((CChildFrame*)TabCtrlItem.lParam)->m_nCurTabID = n;
if(((CChildFrame*)TabCtrlItem.lParam)->m_bProtect)
PostMessage(WM_ACTIVATE_WINDOW, 0, TabCtrlItem.lParam);
else
MDIActivate((CChildFrame*)TabCtrlItem.lParam);
}
}
}catch(...){}
}
void CMainFrame::OnRClickElse(NMHDR* pNotifyStruct, LRESULT* pResult)
{
CPoint point;
GetCursorPos(&point);
CWnd * pw = WindowFromPoint(point);
if(pw!=NULL && (pw->m_hWnd == m_wndTab.GetSafeHwnd()
|| ::IsChild(m_wndAddress->GetSafeHwnd(), pw->m_hWnd)))
return;
if (pw->GetSafeHwnd()==m_LinkBar.GetSafeHwnd() || pw->GetSafeHwnd()==m_FavBar.GetSafeHwnd())
{
CToolBar *pBar;
CPoint pt = point;
pBar = (pw->GetSafeHwnd()==m_LinkBar.GetSafeHwnd() ? &m_LinkBar : &m_FavBar);
pBar->ScreenToClient(&pt);
int iButton = pBar->GetToolBarCtrl().HitTest(&pt);
if (iButton >= 0 && iButton<pBar->GetToolBarCtrl().GetButtonCount())
{
TBBUTTON tbb;
if( pBar->GetToolBarCtrl().GetButton( iButton, &tbb ))
{
CString strUrl;
if (tbb.idCommand == ID_LINK_POPUP || tbb.idCommand == ID_FAV_POPUP)
{
CString strDir ;
if (tbb.idCommand == ID_FAV_POPUP)
{
GetFavoriteFolder(strUrl);
CHECK_TAIL(strUrl);
strDir = g_astrFavs[iButton];
}
else
{
strUrl = m_strLinkPath;
DO_RELATIVE_URL(strUrl);
strDir = g_astrLinks[iButton];
}
strUrl += strDir;
}
else
{
strUrl = GetMenuItemUrl(tbb.idCommand,GetMenu()->m_hMenu, FALSE);
}
}
}
}
//else pop menu
CMenu *pmenu;
pmenu = GetMenu()->GetSubMenu(2)->GetSubMenu(0);
if(pmenu!=NULL)
{
pmenu->TrackPopupMenu(
TPM_LEFTALIGN | TPM_LEFTBUTTON | TPM_RIGHTBUTTON,
point.x, point.y, AfxGetMainWnd()
);
}
}
void CMainFrame::OnRClickStatusToolbar(NMHDR* pNotifyStruct, LRESULT* pResult)
{
CPoint point;
GetCursorPos(&point);
CWnd * pw = WindowFromPoint(point);
if(pw!=NULL && (pw->m_hWnd == m_wndTab.GetSafeHwnd()
|| ::IsChild(m_wndAddress->GetSafeHwnd(), pw->m_hWnd)))
return;
CMenu* pPopup = m_TrayMenu.GetSubMenu(0);
pPopup->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,point.x,point.y,AfxGetMainWnd());
}
void CMainFrame::OnRClick(NMHDR* pNotifyStruct, LRESULT* pResult)
{
CPoint point;
// translate the current toolbar item rectangle into screen coordinates
// so that we'll know where to pop up the menu
if(PRESS_CTRL)
return;
GetCursorPos(&point);
BOOL found = false;
int i=0;
CRect rect;
try{
m_wndTab.ScreenToClient(&point);
TCHITTESTINFO hti;
hti.pt = point;
hti.flags = TCHT_ONITEM | TCHT_ONITEMICON | TCHT_ONITEMLABEL ;
m_nRTabID = m_wndTab.HitTest(&hti);
m_wndTab.ClientToScreen(&point);
CMenu menu;
CMenu* pPopup;
if(m_nRTabID>=0)
{
//menu.LoadMenu(IDR_RTAB);
pPopup = m_TabMenu.GetSubMenu(0);
//if is locked
TCITEM TabCtrlItem;
TabCtrlItem.mask = TCIF_PARAM;
m_wndTab.GetItem(m_nRTabID, &TabCtrlItem);
CChildFrame *tcf = (CChildFrame*)TabCtrlItem.lParam;
if(tcf && pPopup!=NULL)
{
if (tcf && tcf->m_bProtect && tcf != (CChildFrame*)MDIGetActive())
{
MSGBOX(IDS_TIP_PROTECT);
return ;
}
pPopup->CheckMenuItem(ID_RTAB_LOCK, tcf->m_bLock ? MF_CHECKED : MF_UNCHECKED);
pPopup->CheckMenuItem(ID_RTAB_PROTECT, tcf->m_bProtect ? MF_CHECKED : MF_UNCHECKED);
pPopup->CheckMenuItem(ID_RTAB_MARK, MARKED(tcf->m_pView) ? MF_CHECKED : MF_UNCHECKED);
}
g_bRTab = TRUE;
pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_LEFTBUTTON | TPM_RIGHTBUT
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -