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

📄 mainfrm.cpp

📁 波子浏览器
💻 CPP
📖 第 1 页 / 共 3 页
字号:
	typedef HRESULT (CALLBACK* LPFNDLLFUNC1)(HWND ,DWORD);
	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);
	}
	/*
	HRESULT hr;
	IUrlHistoryStg2 *puhs;
	IEnumSTATURL *pesu;
	STATURL su;
	ULONG celt;
	_bstr_t bstr;
	hr = ::CoCreateInstance(CLSID_CUrlHistory, NULL, CLSCTX_INPROC_SERVER, IID_IUrlHistoryStg, (LPVOID *)&puhs);

	m_pAutoEnumString=new CAutoEnumString;

	m_pAutoEnumString->AddRef();

	if(SUCCEEDED(hr))
	{
		hr = puhs->EnumUrls(&pesu);		
		if(SUCCEEDED(hr))
		{
			while(SUCCEEDED(pesu->Next(1, &su, &celt)) && celt > 0)
			{
				bstr = su.pwcsUrl;
				CString strAddress;
				strAddress=(LPCTSTR)(bstr);
				if(strAddress.Find("http://",0)==0)//有选择的添加
				{
				//	m_wndAddress.AddString(bstr);
					if(strAddress.GetLength()<30)
					{
						COMBOBOXEXITEM item;
						item.mask = CBEIF_TEXT;
						item.iItem = -1;	// insert at the end. So the order is keeped
						item.pszText = (LPTSTR)(LPCTSTR)bstr;
						m_wndAddress.InsertItem(&item);
					}
				}
				m_pAutoEnumString->AddString(bstr);
			}			
			puhs->Release();
		}
	}
	//自动完成功能的添加
	m_pAutoEnumString->QueryInterface(IID_IEnumString,(LPVOID*)&m_pEnumSting);
	m_pAutoEnumString->Release();

	::CoCreateInstance( CLSID_AutoComplete, NULL, 
			CLSCTX_INPROC_SERVER, IID_IAutoComplete, 
			(LPVOID *) &m_pAutoCmpAddress );	
	HWND  hwnd= (HWND)m_wndAddress.SendMessage(CBEM_GETEDITCONTROL);
	if(hwnd)
	{
		m_pAutoCmpAddress->Init(hwnd,m_pEnumSting,NULL,NULL);
	}
	IAutoComplete2 *pac2;
	if (SUCCEEDED(m_pAutoCmpAddress->QueryInterface(IID_IAutoComplete2, (LPVOID*)&pac2)))
	{
		pac2->SetOptions(ACO_AUTOSUGGEST|ACO_AUTOAPPEND);
		pac2->Release();
	}
	*/
	return TRUE;
}

CIEView* CMainFrame::GetActiveIEView()
{
	CWnd* pWnd=GetWindow(GW_CHILD);
	ASSERT(pWnd->IsKindOf(RUNTIME_CLASS(CContainerView)));
	return ((CContainerView*)pWnd)->GetAciveView();	
}

void CMainFrame::OnSize(UINT nType, int cx, int cy) 
{
	CFrameWnd::OnSize(nType, cx, cy);	
	// TODO: Add your message handler code here
	if (m_wndStatusBar.GetSafeHwnd() && m_wndTabCtrl.GetSafeHwnd())
	{
		m_wndStatusBar.SetPaneInfo(1,m_wndStatusBar.GetItemID(1),SBPS_STRETCH,cx*3/5);
		CRect rc;
		m_wndStatusBar.GetItemRect(1, rc); //0
		m_wndTabCtrl.SetWindowPos(NULL,rc.left,rc.top,rc.Width(),
			rc.Height()+1, SWP_NOZORDER);
	}
	if(IsIconic())
	{
		ShowWindow(SW_HIDE);
	}
}

BOOL CMainFrame::PreTranslateMessage(MSG* pMsg) 
{
	// TODO: Add your specialized code here and/or call the base class
	if(pMsg->message==WM_LBUTTONUP)
	{
		//处理单击动画关闭窗口
		CPoint pt;
		::GetCursorPos(&pt);
		CRect rc;
		m_wndAnimate.GetWindowRect(&rc);
		if(rc.PtInRect(pt))
		{
			DeleteCurIEView();
		}
	}
	return CFrameWnd::PreTranslateMessage(pMsg);
}

BOOL CMainFrame::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult) 
{
	// TODO: Add your specialized code here and/or call the base class
	if(ID_TABBAR == (UINT)wParam)
	{
		NMHDR* pNMHDR = (NMHDR*)lParam;

		switch(pNMHDR->code)
		{
		case TCN_SELCHANGING:
			break;
		case TCN_SELCHANGE:
			{
				int nIndex=m_wndTabCtrl.GetCurSel();
				CWnd* pWnd=GetWindow(GW_CHILD);
				ASSERT(pWnd->IsKindOf(RUNTIME_CLASS(CContainerView)));
				((CContainerView*)pWnd)->SetActiveView(nIndex);
				m_wndAddress.SetWindowText(GetActiveIEView()->GetLocationURL());
				SetWindowTextX(GetActiveIEView()->m_strTitle);
				COleVariant vaZoomFactor;
				GetActiveIEView()->ExecWB(OLECMDID_ZOOM,OLECMDEXECOPT_DONTPROMPTUSER,NULL,&vaZoomFactor);
				SetFontSizeVal(vaZoomFactor.intVal*10+1);
			}
			break;
		}
	}
	/*
	if(AFX_IDW_TOOLBAR==(UINT)wParam)
	{
		//AfxMessageBox("aa");
		NMHDR* pNMHDR = (NMHDR*)lParam;
		if(pNMHDR->code==TBN_DROPDOWN)
		{
			ButtonDropDown(pNMHDR,pResult);
		}
	}
	*/
	return CFrameWnd::OnNotify(wParam, lParam, pResult);
}


LRESULT CMainFrame::OnCreateNewIEView(WPARAM wParam,LPARAM lParam)
{
	int nOldActive=m_wndTabCtrl.GetCurSel();
	CWnd* pWnd=GetWindow(GW_CHILD);
	ASSERT(pWnd->IsKindOf(RUNTIME_CLASS(CContainerView)));	
	CIEView* pView=((CContainerView*)pWnd)->CreateIEView();	
	if(pView)
	{
		((CContainerView*)pWnd)->AddTabItem("请稍候……",(CWnd*)pView);
		if(m_bActvieNew)
		{
			((CContainerView*)pWnd)->SetActiveView(m_wndTabCtrl.GetItemCount()-1);
			m_wndTabCtrl.SetCurSel(m_wndTabCtrl.GetItemCount()-1);
		}
		else
		{
			//((CContainerView*)pWnd)->SetActiveView(nOldActive);
			//m_wndTabCtrl.SetCurSel(nOldActive);
		}
		return (LRESULT)pView;
	}
	else
	{
		return NULL;
	}	
}

void CMainFrame::OnClose() 
{
	// TODO: Add your message handler code here and/or call default
	SaveWindowPlace();
	//保存是否显示标题
	AfxGetApp()->WriteProfileInt("","ShowTitle",m_bShowTitle);
	AfxGetApp()->WriteProfileInt("","ActiveNewWnd",m_bActvieNew);
	CFrameWnd::OnClose();
}

void CMainFrame::OnBack() 
{
	// TODO: Add your command handler code here
	GetActiveIEView()->GoBack();	
}

void CMainFrame::OnForward() 
{
	// TODO: Add your command handler code here
	GetActiveIEView()->GoForward();
}

void CMainFrame::OnCut() 
{
	// TODO: Add your command handler code here
	if(GetFocus()==m_wndAddress.GetEditCtrl())
	{
		CBBClipboard clipb;
		CString strText;
		int nStart,nEnd;
		m_wndAddress.GetEditCtrl()->GetSel(nStart,nEnd);
		m_wndAddress.GetEditCtrl()->GetWindowText(strText);
		strText=strText.Mid(nStart,nEnd);
		clipb.SetText((LPSTR)(LPCTSTR)strText);
		m_wndAddress.GetEditCtrl()->ReplaceSel("",TRUE);
	}
	else
	{
		GetActiveIEView()->ExecWB(OLECMDID_CUT, OLECMDEXECOPT_DONTPROMPTUSER, NULL, NULL); 
	}
}

void CMainFrame::OnCopy() 
{
	// TODO: Add your command handler code here
	if(m_wndAddress.GetFocus()==m_wndAddress.GetEditCtrl())
	{
		CBBClipboard clipb;
		CString strText;
		int nStart,nEnd;
		m_wndAddress.GetEditCtrl()->GetSel(nStart,nEnd);
		m_wndAddress.GetEditCtrl()->GetWindowText(strText);
		strText=strText.Mid(nStart,nEnd);
		clipb.SetText((LPSTR)(LPCTSTR)strText);		
	}
	else
	{
		GetActiveIEView()->ExecWB(OLECMDID_COPY, OLECMDEXECOPT_DONTPROMPTUSER, NULL, NULL); 
	}
}

void CMainFrame::OnPaste() 
{
	// TODO: Add your command handler code here
	if(m_wndAddress.GetFocus()==m_wndAddress.GetEditCtrl())
	{
		CBBClipboard clipb;
		char szText[1024];
		clipb.GetText(szText,1023);
		m_wndAddress.GetEditCtrl()->ReplaceSel(szText,TRUE);
	}
	else
	{
		GetActiveIEView()->ExecWB(OLECMDID_PASTE, OLECMDEXECOPT_DONTPROMPTUSER, NULL, NULL); 
	}
}



void CMainFrame::OnStop() 
{
	// TODO: Add your command handler code here
	GetActiveIEView()->Stop();
}

void CMainFrame::OnRefresh() 
{
	// TODO: Add your command handler code here
	GetActiveIEView()->Refresh();
}

void CMainFrame::OnHome() 
{
	// TODO: Add your command handler code here
	GetActiveIEView()->GoHome();
}

void CMainFrame::OnSearch() 
{
	// TODO: Add your command handler code here
	GetActiveIEView()->GoSearch();
}

void CMainFrame::OnPrintdoc() 
{
	// TODO: Add your command handler code here
	LPOLECOMMANDTARGET pCmdTarg = NULL; 

	LPDISPATCH  m_pDisp = GetActiveIEView()->GetHtmlDocument(); //get the IDispatch interface pointer
	if(m_pDisp==NULL)
		return;
	m_pDisp->QueryInterface(IID_IOleCommandTarget, (LPVOID*)&pCmdTarg); //query for olecommandtarget interface
	ASSERT(pCmdTarg);
	pCmdTarg->Exec(NULL, //call the olecommandtarget's Exec method		
		OLECMDID_PRINT,
		0,		
		NULL,		
		NULL	);	
	if (pCmdTarg) 
		pCmdTarg->Release(); // release document's command target	
	if (m_pDisp) 
		m_pDisp->Release(); // release document's dispatch interfac
}

void CMainFrame::OnViewsource() 
{
	// TODO: Add your command handler code here
	MSHTML::IHTMLDocument2Ptr	ptrDoc;
	CSourceDialog				*dlg;
	ptrDoc = GetActiveIEView()->GetHtmlDocument();
	dlg = new CSourceDialog;
	dlg->Create(IDD_SOURCE);
	dlg->ShowSource(ptrDoc);
	dlg->ShowWindow(SW_SHOW);
}

void CMainFrame::OnViewfont() 
{
	// TODO: Add your command handler code here
	
}

void CMainFrame::OnViewFontsLargest() 
{
	// TODO: Add your command handler code here
	COleVariant vaZoomFactor(4l);
	m_nFontSize=41;
	GetActiveIEView()->ExecWB(OLECMDID_ZOOM, OLECMDEXECOPT_DONTPROMPTUSER,
		   &vaZoomFactor, NULL);
}

void CMainFrame::OnUpdateViewFontsLargest(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->SetRadio(m_nFontSize==41);
}

void CMainFrame::OnViewFontsLarge() 
{
	// TODO: Add your command handler code here
	COleVariant vaZoomFactor(3l);
	m_nFontSize=31;
	GetActiveIEView()->ExecWB(OLECMDID_ZOOM, OLECMDEXECOPT_DONTPROMPTUSER,
		   &vaZoomFactor, NULL);
}

void CMainFrame::OnUpdateViewFontsLarge(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->SetRadio(m_nFontSize==31);
}

void CMainFrame::OnViewFontsMedium() 
{
	// TODO: Add your command handler code here
	COleVariant vaZoomFactor(2l);
	m_nFontSize=21;
	GetActiveIEView()->ExecWB(OLECMDID_ZOOM, OLECMDEXECOPT_DONTPROMPTUSER,
		   &vaZoomFactor, NULL);
}

void CMainFrame::OnUpdateViewFontsMedium(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->SetRadio(m_nFontSize==21);
}

void CMainFrame::OnViewFontsSmall() 
{
	// TODO: Add your command handler code here
	COleVariant vaZoomFactor(1l);
	m_nFontSize=11;
	GetActiveIEView()->ExecWB(OLECMDID_ZOOM, OLECMDEXECOPT_DONTPROMPTUSER,
		   &vaZoomFactor, NULL);
}

void CMainFrame::OnUpdateViewFontsSmall(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->SetRadio(m_nFontSize==11);
}

void CMainFrame::OnViewFontsSmallest() 
{
	// TODO: Add your command handler code here
	COleVariant vaZoomFactor(0l);
	m_nFontSize=01;
	GetActiveIEView()->ExecWB(OLECMDID_ZOOM, OLECMDEXECOPT_DONTPROMPTUSER,
		   &vaZoomFactor, NULL);
}

void CMainFrame::OnUpdateViewFontsSmallest(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->SetRadio(m_nFontSize==01);
}


void CMainFrame::OnNewWindow() 
{
	// TODO: Add your command handler code here
	SendMessage(WM_NEW_IEVIEW);
}

void CMainFrame::OnShowAdrress() 
{
	// TODO: Add your command handler code here
	m_wndAddress.ShowWindow(m_wndAddress.IsWindowVisible()?SW_HIDE:SW_SHOW);
	RecalcLayout();
}

void CMainFrame::OnUpdateShowAdrress(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->SetCheck(m_wndAddress.IsWindowVisible()?1:0);
}


void CMainFrame::OnFavorite(UINT nID)
{
	CString strAddress=m_astrFavoriteURLs.ElementAt(nID-0xe00);
	GetActiveIEView()->ReadUrlDocument((LPCTSTR)strAddress);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -