⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mainfrm.cpp

📁 myie的源程序是用VC++写自已可以扩搌使用
💻 CPP
📖 第 1 页 / 共 5 页
字号:
	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 + -