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

📄 mainfrm.cpp

📁 myie2.4版本的源代码
💻 CPP
📖 第 1 页 / 共 5 页
字号:
			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 + -