📄 mainfrm.cpp
字号:
nFavs = 0; nMostFavs = 0;
strOpenAll.LoadString(IDS_OPEN_ALL_FAV);
strOpenMost.LoadString(IDS_OPEN_ALL_MOSTFAV);
// make sure there's a trailing backslash
if(strPath[strPath.GetLength() - 1] != _T('\\'))
strPath += _T('\\');
if(strPath==m_strLinkFolder)
isLink = TRUE;
strPath2 = strPath;
strPath += "*.*";
// now scan the directory, first for .URL files and then for subdirectories
// that may also contain .URL files
h = FindFirstFile(strPath, &wfd);
if(h != INVALID_HANDLE_VALUE)
{
nEndPos = nStartPos;
do
{
if((wfd.dwFileAttributes & (FILE_ATTRIBUTE_DIRECTORY|FILE_ATTRIBUTE_HIDDEN|FILE_ATTRIBUTE_SYSTEM))==0)
{
str = wfd.cFileName; str2= str;
str.MakeLower();
if(str.Right(4) == _T(".url"))
{
// an .URL file is formatted just like an .INI file, so we can
// use GetPrivateProfileString() to get the information we want
::GetPrivateProfileString(_T("InternetShortcut"), _T("URL"),
_T(""), buf, INTERNET_MAX_PATH_LENGTH,
strPath2 + str);
str2 = str2.Left(str2.GetLength() - 4);
// scan through the array and perform an insertion sort
// to make sure the menu ends up in alphabetic order
/*for(nPos = nStartPos ; nPos < nEndPos ; ++nPos)
{
if(str.CompareNoCase(astrFavorites[nPos]) < 0)
break;
}*/
nPos = nEndPos;
astrFavorites.InsertAt(nPos, str2);
m_astrFavoriteURLs.InsertAt(nPos, buf);
++nEndPos;
nFavs ++;
}
else if(str.Right(4) == _T(".lnk"))
{
//if(ResolveLink(strPath2 + str, buf))
{
// scan through the array and perform an insertion sort
// to make sure the menu ends up in alphabetic order
/*for(nPos = nStartPos ; nPos < nEndPos ; ++nPos)
{
if(str.CompareNoCase(astrFavorites[nPos]) < 0)
break;
}*/
nPos = nEndPos;
//m_astrFavoriteURLs.InsertAt(nPos, buf);
m_astrFavoriteURLs.InsertAt(nPos, strPath2 + str);
str2 = str2.Left(str2.GetLength() - 4);
astrFavorites.InsertAt(nPos, str2);
++nEndPos;
nFavs ++;
}
}
}
} while(FindNextFile(h, &wfd));
FindClose(h);
// Now add these items to the menu
CString fstr;
int nMenuLen = m_nMenuWidth;
int iString;
TBBUTTON tbb;
if(isLink)
{
//remove all link buttons
int b = m_LinkBar.GetToolBarCtrl().GetButtonCount();
for(int i = 1; i<b;i++)
m_LinkBar.GetToolBarCtrl().DeleteButton(1);
REBARBANDINFO rbbi;
rbbi.cbSize = sizeof(rbbi);
rbbi.fMask = RBBIM_CHILDSIZE | RBBIM_IDEALSIZE | RBBIM_SIZE |RBBIM_ID ;
rbbi.wID = ID_VIEW_LINKS;
rbbi.cxMinChild = 2;
rbbi.cyMinChild = 22;
/*rbbi.cx =*/ rbbi.cxIdeal = 2;
int bandid = m_wndReBar.GetReBarCtrl().IDToIndex(ID_VIEW_LINKS);
m_wndReBar.GetReBarCtrl().SetBandInfo(bandid, &rbbi);
}
if(FirstLevel)
{
//remove all Fav buttons
int b = m_FavBar.GetToolBarCtrl().GetButtonCount();
for(int i = 0; i<b;i++)
m_FavBar.GetToolBarCtrl().DeleteButton(0);
REBARBANDINFO rbbi;
rbbi.cbSize = sizeof(rbbi);
rbbi.fMask = RBBIM_CHILDSIZE | RBBIM_IDEALSIZE | RBBIM_SIZE |RBBIM_ID ;
rbbi.wID = ID_VIEW_FAVS;
rbbi.cxMinChild = 2;
rbbi.cyMinChild = 22;
/*rbbi.cx =*/ rbbi.cxIdeal = 2;
int bandid = m_wndReBar.GetReBarCtrl().IDToIndex(ID_VIEW_FAVS);
m_wndReBar.GetReBarCtrl().SetBandInfo(bandid, &rbbi);
}
for(nPos = nStartPos ; nPos < nEndPos ; ++nPos)
{
fstr = astrFavorites[nPos];
if(fstr.GetLength()>nMenuLen)
{
fstr = astrFavorites[nPos].Left(nMenuLen-3);
fstr += "...";
}
//pMenu->AppendMenu(MF_STRING | MF_ENABLED , 0xe00 + nPos, fstr);
CMenuData * md= new CMenuData;
md->m_pImgList = &m_wndMenuBar.m_ImgList;
str = astrFavorites[nPos];
buf[0]=0;
OFSTRUCT ofs;
if(OpenFile(strPath2+str+".url", &ofs, OF_EXIST)!=HFILE_ERROR)
::GetPrivateProfileString(_T("MyIE"), _T("MostFav"),
_T(""), buf, 2048,
strPath2 + str+".url");
if(buf[0]!='1')
md->m_nBitmap = 1;
else
{
md->m_nBitmap = 4;
nMostFavs ++;
}
SetMenuText(fstr, md);
// md->nID = 0xe00 + nPos;
// md->nFlags = MF_ENABLED;
pMenu->AppendMenu ( MF_ENABLED|MF_OWNERDRAW, 0x1380 + nPos , (char*)md );
if(isLink)
{
int ind = nPos-nStartPos+1;
m_LinkBar.SetButtonInfo(ind,0x1380 + nPos,TBSTYLE_AUTOSIZE,md->m_nBitmap);
m_LinkBar.SetButtonText(ind, fstr);
m_astrLinks.Add(fstr);
m_LinkBar.GetToolBarCtrl().GetToolTips()->UpdateTipText(m_astrFavoriteURLs[nPos], &m_LinkBar, 0x1380+nPos);
}
}
// now that we've got all the .URL files, check the subdirectories for more
nLastDir = 0;
h = FindFirstFile(strPath, &wfd);
ASSERT(h != INVALID_HANDLE_VALUE);
// CString strcha = "频道";
// CString strcha2; strcha2.LoadString(IDS_CHANNEL_E);
do
{
if(wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
// ignore the current and parent directory entries
if(lstrcmp(wfd.cFileName, _T(".")) == 0 || lstrcmp(wfd.cFileName, _T("..")) == 0 )//|| lstrcmp(wfd.cFileName, strcha) == 0 || lstrcmp(wfd.cFileName, strcha2) == 0
continue;
BOOL rec = FALSE;
CString temp = strPath2 + wfd.cFileName + "\\";
if(temp.Find(m_strLinkFolder)==0)
{//only in or is link folder we will recurse
rec = TRUE;
}
nPos = nLastDir;
pSubMenu = new CMenu;
pSubMenu->CreatePopupMenu();
if(rec)
{
// call this function recursively.
nNewEndPos = BuildFavoritesMenu(strPath2 + wfd.cFileName, nEndPos, pSubMenu, 0, FALSE, nSubFavs, nSubMostFavs);
nEndPos = nNewEndPos;
}
else
{
CMenuData * md= new CMenuData;
md->m_pImgList = &m_wndMenuBar.m_ImgList;
md->m_nBitmap = -1;
SetMenuText("Empty", md);
SetMenuFolder(temp, md);
md->m_bIni = FALSE;
pSubMenu->AppendMenu(MF_OWNERDRAW|MF_DISABLED|MF_GRAYED , 0, (char*)md );
}
//if(nNewEndPos != nEndPos)
{
// only intert a submenu if there are in fact .URL files in the subdirectory
//nEndPos = nNewEndPos;
//pMenu->InsertMenu(nPos+nFixMenu, MF_BYPOSITION | MF_POPUP | MF_STRING, (UINT)pSubMenu->m_hMenu, wfd.cFileName);
CMenuData * md= new CMenuData;
md->m_pImgList = &m_wndMenuBar.m_ImgList;
char mff[2];
mff[0]=0;
GetPrivateProfileString("MyIE", "MostFav", "0", mff, 2, strPath2+wfd.cFileName+"\\"+"myiefolder.mic");
if(mff[0]=='1')
md->m_nBitmap = 5;
else
md->m_nBitmap = 0;
fstr = wfd.cFileName;
if(fstr.GetLength()>nMenuLen)
{
fstr = fstr.Left(nMenuLen-3);
fstr += "...";
}
SetMenuText(fstr, md);
pMenu->InsertMenu(nPos+nFixMenu, MF_BYPOSITION | MF_POPUP | MF_OWNERDRAW, (UINT)pSubMenu->m_hMenu , (char*)md );
//add favorites bar
if(FirstLevel)
{
memset(&tbb, 0, sizeof(tbb));
iString = m_FavBar.GetToolBarCtrl().AddStrings(wfd.cFileName);
tbb.iString = iString;
tbb.fsState = TBSTATE_ENABLED;
tbb.fsStyle = TBSTYLE_AUTOSIZE;
if(mff[0]=='1')
tbb.iBitmap = 5;
else
tbb.iBitmap = 0;
if(bCompactFavBar)
tbb.iBitmap = -1;
tbb.idCommand = ID_FAV_POPUP;
tbb.dwData = (UINT)pSubMenu->m_hMenu;
VERIFY(m_FavBar.GetToolBarCtrl().AddButtons(1, &tbb));
m_astrFavs.Add(wfd.cFileName);
}
if(isLink)
{
memset(&tbb, 0, sizeof(tbb));
iString = m_LinkBar.GetToolBarCtrl().AddStrings(wfd.cFileName);
tbb.iString = iString;
tbb.fsState = TBSTATE_ENABLED;
tbb.fsStyle = TBSTYLE_AUTOSIZE;
if(mff[0]=='1')
tbb.iBitmap = 5;
else
tbb.iBitmap = 0;
tbb.idCommand = ID_LINK_POPUP;
tbb.dwData = (UINT)pSubMenu->m_hMenu;
VERIFY(m_LinkBar.GetToolBarCtrl().AddButtons(1, &tbb));
m_astrLinks.Add(wfd.cFileName);
}
astrDirs.InsertAt(nPos, wfd.cFileName);
if(rec)
{
//add open all favorites menu
int fs=m_astrFavoriteFolders.GetSize();
if(nSubFavs || nSubMostFavs)
pSubMenu->InsertMenu(0,MF_BYPOSITION | MF_SEPARATOR);
if(nSubMostFavs)
pSubMenu->InsertMenu(0,MF_BYPOSITION| MF_STRING ,0x1280+fs, strOpenMost);
if(nSubFavs)
pSubMenu->InsertMenu(0,MF_BYPOSITION| MF_STRING ,0x1000+fs, strOpenAll);
m_astrFavoriteFolders.InsertAt(fs, strPath2 + wfd.cFileName);
}
pSubMenu->Detach();
++nLastDir;
}
delete pSubMenu;
}
} while(FindNextFile(h, &wfd));
FindClose(h);
}
//add a break if needed
if(!bSingleMenu)
AddMenuBreak(pMenu);
if(isLink)
{
CRect rectToolBar;
REBARBANDINFO rbbi;
m_LinkBar.GetItemRect(0, &rectToolBar);
//m_LinkBar.SetSizes(rectToolBar.Size(), CSize(16,100));
rbbi.cbSize = sizeof(rbbi);
rbbi.fMask = RBBIM_CHILDSIZE | RBBIM_IDEALSIZE | RBBIM_SIZE |RBBIM_ID ;
rbbi.wID = ID_VIEW_LINKS;
rbbi.cxMinChild = rectToolBar.Width()+2;
if(rectToolBar.Height()<22)
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 = 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);
}
return nEndPos;
}
void CMainFrame::OnFavorite(UINT nID)
{
short ks=GetKeyState(VK_CONTROL);
CString url;
if(nID>=0x1380)
{
url = m_astrFavoriteURLs[nID-0x1380];
if(url.Right(4) == _T(".lnk"))
{
TCHAR buf[INTERNET_MAX_PATH_LENGTH];
if(ResolveLink(url, buf))
{
url = buf;
m_astrFavoriteURLs[nID-0x1380] = url;
}
else
url = "about:blank";
}
}
CChildFrame* tcf = (CChildFrame*)MDIGetActive();
if (tcf!=NULL && tcf->m_pView!=NULL && !m_bAlwaysNewWindow && ks>=0)
((CMyIEView*)tcf->m_pView)->ToNavigate(url, 0, NULL);
else
{
tcf = NewChildWindow(0);
if(tcf!=NULL)
((CMyIEView*)tcf->m_pView)->ToNavigate(url, 0, NULL);
}
}
void CMainFrame::OnFileNewBlank()
{
// TODO: Add your command handler code here
//nOpenType = 0;
//PostMessage(WM_COMMAND, ID_FILE_NEW_S);
NewChildWindow(2,0);
if(m_bActiveNewWindow)
m_wndAddress->SetFocus();
}
void CMainFrame::OnFileNewCurrentpage()
{
// TODO: Add your command handler code here
// nOpenType = 2;
CString strURL;
CChildFrame* tcf = (CChildFrame*)MDIGetActive();
if (tcf!=NULL && tcf->m_pView!=NULL)
strURL = ((CMyIEView*)tcf->m_pView)->GetLocationURL();
else
strURL = "about:blank";
//PostMessage(WM_COMMAND, ID_FILE_NEW_S);
NewChildWindow(1,2,strURL);
if(m_bActiveNewWindow)
m_wndAddress->SetFocus();
}
void CMainFrame::OnUpdateProgress(CCmdUI* pCmdUI)
{
if(percent<0)
{
if(m_wndStatusBar.IsProgressBarVisible())
m_wndStatusBar.ShowProgressBar(false);
pCmdUI->SetText("");
}
else
{
if(!m_wndStatusBar.IsProgressBarVisible())
m_wndStatusBar.ShowProgressBar(true);
m_wndStatusBar.SetPos(percent);
}
};
void CMainFrame::OnUpdateWins(CCmdUI* pCmdUI)
{
CTime t = CTime::GetCurrentTime();
CTimeSpan ts = t - m_tLastWinsUpdate;
if(ts.GetTotalSeconds()>= 2)
{
int n = m_wndTab.GetItemCount();
char temp[5];
itoa(n, temp, 10);
pCmdUI->SetText(temp);
m_tLastWinsUpdate = t;
}
}
void CMainFrame::OnUpdateIP(CCmdUI* pCmdUI)
{
if(!m_bDisplayIP)
{
pCmdUI->SetText("");
return;
}
CString ip="";
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -