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

📄 uiframewnd.cpp

📁 vc座的资源管理器源代码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	VERIFY(mb.Create(this, WS_CHILD|WS_VISIBLE|WS_CLIPSIBLINGS|WS_CLIPCHILDREN|
		CBRS_TOOLTIPS|CBRS_SIZE_DYNAMIC|CBRS_FLYBY|CBRS_ORIENT_HORZ));
	mb.ModifyStyle(0, TBSTYLE_TRANSPARENT);

	// Load doc or main menu. Only required since this app flips
	// between coolbar/toolbars.
	CFrameWnd *pParent = GetParentFrame();
	CFrameWnd* pFrame = pParent->GetActiveFrame();
	ASSERT(m_IDToolbar > 0);
	mb.LoadMenu(m_IDToolbar);

	CRect rc;
	mb.GetItemRect(0, &rc);
	CSize szMenu = mb.CalcDynamicLayout(-1, LM_HORZ); // get min horz size

	// create menu bar band.
	CSize szMin;
	szMin = CSize( szMenu.cx, rc.Height());
	if (!InsertBand(&mb, szMin, 0x7ff))
		return FALSE;

	//////////////////
	// Create tool bar
	CFlatToolBar& tb = m_wndToolBar;
	VERIFY(tb.Create(this,
		WS_CHILD|WS_VISIBLE|WS_CLIPSIBLINGS|WS_CLIPCHILDREN|
			CBRS_TOOLTIPS|CBRS_SIZE_DYNAMIC|CBRS_FLYBY|CBRS_ORIENT_HORZ));
	VERIFY(tb.LoadToolBar(m_IDToolbar)); 
	// use transparent so coolbar bitmap will show through
	tb.ModifyStyle(0, TBSTYLE_TRANSPARENT);

	// Get minimum size of toolbar, which is basically size of one button
	CSize szHorz = tb.CalcDynamicLayout(-1, LM_HORZ); // get min horz size
	tb.GetItemRect(0, &rc);
	szMin = rc.Size(); // CSize( szHorz.cx, rc.Height()); 

	// create toolbar band. Use largest size possible
	if (!InsertBand(&tb, szMin, 0x7fff, NULL, -1, TRUE))
		return FALSE;

	return TRUE; // OK
}

void CReallyCoolBar::SetToolBarID(UINT IDToolbar)
{
	m_IDToolbar = IDToolbar;
}

BOOL CWebBrowserCoolBar::OnCreateBands()
{
	CReallyCoolBar::OnCreateBands();

	CFlatToolBar& bb = m_wndBrowserBar;
	VERIFY(bb.Create(this,
		WS_CHILD|WS_VISIBLE|WS_CLIPSIBLINGS|WS_CLIPCHILDREN|
			CBRS_TOOLTIPS|CBRS_SIZE_DYNAMIC|CBRS_FLYBY|CBRS_ORIENT_HORZ));
	CImageList img;
	CString str;
//	bb.GetToolBarCtrl().SetButtonWidth(50, 150);
	bb.GetToolBarCtrl().SetExtendedStyle(TBSTYLE_EX_DRAWDDARROWS);
	img.Create(IDB_HOTTOOLBAR, 22, 0, RGB(255, 0, 255));
	bb.GetToolBarCtrl().SetHotImageList(&img);
	img.Detach();
	img.Create(IDB_COLDTOOLBAR, 22, 0, RGB(255, 0, 255));
	bb.GetToolBarCtrl().SetImageList(&img);
	img.Detach();
	bb.ModifyStyle(0, TBSTYLE_FLAT | TBSTYLE_TRANSPARENT);
	bb.SetButtons(NULL, 7);
	// use transparent so coolbar bitmap will show through
	bb.ModifyStyle(0, TBSTYLE_TRANSPARENT);

	// set up each toolbar button
/*	str.LoadString(IDS_BROWSER_GO_BACK);
	bb.SetButtonText(0, str);
	str.LoadString(IDS_BROWSER_GO_FORWARD);
	bb.SetButtonText(1, str);
	str.LoadString(IDS_BROWSER_STOP);
	bb.SetButtonText(2, str);
	str.LoadString(IDS_BROWSER_REFRESH);
	bb.SetButtonText(3, str);
	str.LoadString(IDS_BROWSER_GO_HOME);
	bb.SetButtonText(4, str);
	str.LoadString(IDS_BROWSER_SEARCH);
	bb.SetButtonText(5, str);
	str.LoadString(IDS_BROWSER_FAVORITES);
	bb.SetButtonText(6, str);
*/
	bb.SetButtonInfo(0, ID_BROWSER_GO_BACK, TBSTYLE_BUTTON, 0);
	bb.SetButtonInfo(1, ID_BROWSER_GO_FORWARD, TBSTYLE_BUTTON, 1);
	bb.SetButtonInfo(2, ID_BROWSER_STOP, TBSTYLE_BUTTON, 2);
	bb.SetButtonInfo(3, ID_BROWSER_REFRESH, TBSTYLE_BUTTON, 3);
	bb.SetButtonInfo(4, ID_BROWSER_GO_HOME, TBSTYLE_BUTTON, 4);
	bb.SetButtonInfo(5, ID_BROWSER_SEARCH, TBSTYLE_BUTTON, 5);
	bb.SetButtonInfo(6, ID_BROWSER_FAVORITES, TBSTYLE_BUTTON, 6);


	CRect rectToolBar;
	CRect rc;
	// set up toolbar button sizes
	bb.GetItemRect(0, &rectToolBar);
//	bb.SetSizes(rectToolBar.Size(), CSize(30,20));

	// Get minimum size of toolbar, which is basically size of one button
	CSize szHorz = bb.CalcDynamicLayout(-1, LM_HORZ); // get min horz size
	bb.GetItemRect(0, &rc);
	CSize szMin = rc.Size(); // CSize( szHorz.cx, rc.Height()); 

	// create toolbar band. Use largest size possible
	if (!InsertBand(&bb, szMin, 0x7fff, NULL, -1, TRUE))
		return FALSE;

	//////////////////
	// Create combo box and fill with data

	CRect rcCombo(0,0,600,200);
	m_wndCombo.Create(WS_VISIBLE|WS_CHILD|WS_VSCROLL|CBS_DROPDOWN|
		WS_CLIPCHILDREN|WS_CLIPSIBLINGS, rcCombo, this, IDC_CB_IE_ADDRESS);
	m_wndCombo.SetFont(GetFont());

	CSize szMinCombo = m_wndBrowserBar.CalcDynamicLayout(-1, LM_HORZDOCK);	      // get min horz size
	if (!InsertBand(&m_wndCombo, szMinCombo, 0x7fff, _T("Address")))
		return FALSE;

	return TRUE;
}

// changed from MFC to use WindowFromPoint instead of GetFocus
LRESULT CUIFrameWnd::OnRegisteredMouseWheel(WPARAM wParam, LPARAM lParam)
{
	// convert from MSH_MOUSEWHEEL to WM_MOUSEWHEEL
	TRACE(_T("CUFrameWnd registered mouse wheel message\n"));
//	return CFrameWnd::OnRegisteredMouseWheel(wParam,lParam);

	WORD keyState = 0;
	keyState |= (::GetKeyState(VK_CONTROL) < 0) ? MK_CONTROL : 0;
	keyState |= (::GetKeyState(VK_SHIFT) < 0) ? MK_SHIFT : 0;

	LRESULT lResult;
	CPoint point;
	::GetCursorPos(&point);
	HWND hwFocus = ::WindowFromPoint(point);
//	HWND hwFocus = ::GetFocus();
	const HWND hwDesktop = ::GetDesktopWindow();

	if (hwFocus == NULL)
		lResult = SendMessage(WM_MOUSEWHEEL, (wParam << 16) | keyState, lParam);
	else
	{
		do {
			lParam = ::SendMessage(hwFocus, WM_MOUSEWHEEL,
				(wParam << 16) | keyState, lParam);
			hwFocus = ::GetParent(hwFocus);
		}
		while (lParam == 0 && hwFocus != NULL && hwFocus != hwDesktop);
	}
	return lResult;

}

BOOL CUIFrameWnd::OnMouseWheel(UINT nFlags, short zDelta, CPoint pt) 
{
	CFrameWnd::OnMouseWheel(nFlags,zDelta,pt); 
	// TODO: Add your message handler code here and/or call default
	TRACE(_T("CUIFrameWnd mouse wheel message\n"));
	return TRUE;
}

LRESULT CUIFrameWnd::OnCBIEPopulate(WPARAM wParam,LPARAM lParam)
{
	TRACE(_T("Received ComboBox populate message in CUIFrameWnd\n"));
	if (m_pwndCoolBar && m_pwndCoolBar->IsKindOf(RUNTIME_CLASS(CWebBrowserCoolBar)))
	{
		TRACE(_T("Sending to ShellComboBox...\n"));
		((CWebBrowserCoolBar*)m_pwndCoolBar)->GetComboBox().SendMessage(WM_APP_CB_IE_POPULATE,wParam,lParam);
	}
	return 1L;
}

LRESULT CUIFrameWnd::OnCBIEHitEnter(WPARAM wParam,LPARAM lParam)
{
	if (lParam == NULL)
		return 0L;
	if (m_pwndCoolBar && m_pwndCoolBar->IsKindOf(RUNTIME_CLASS(CWebBrowserCoolBar)))
	{
		CWinApp *pApp = AfxGetApp();
		CUIApp *pUIApp=NULL;
		if (pApp->IsKindOf(RUNTIME_CLASS(CUIApp)))
			pUIApp = (CUIApp*)pApp;
		if (pUIApp)
		{
			CView *pView = NULL;
			pView = pUIApp->GetView(RUNTIME_CLASS(CIEShellTreeView));
			if (pView)
			{
				LRESULT lResult = 0;
				if (wParam == 0)
					lResult = ((CIEShellTreeView*)pView)->GetShellTreeCtrl().SendMessage(WM_APP_CB_IE_HIT_ENTER,wParam,lParam);
				if (lResult == 0)
				{
					pView = pUIApp->GetView(RUNTIME_CLASS(CIEShellListView));
					if (pView)
						pView->SendMessage(WM_APP_CB_IE_HIT_ENTER,wParam,lParam);
				}
			}
		}
	}
	return 1L;	
}

LRESULT CUIFrameWnd::OnCBIESelChange(WPARAM wParam,LPARAM lParam)
{
	if (m_pwndCoolBar && m_pwndCoolBar->IsKindOf(RUNTIME_CLASS(CWebBrowserCoolBar)))
	{
		CWinApp *pApp = AfxGetApp();
		CUIApp *pUIApp=NULL;
		if (pApp->IsKindOf(RUNTIME_CLASS(CUIApp)))
			pUIApp = (CUIApp*)pApp;
		if (pUIApp)
		{
			CView *pView = NULL;
			if (wParam)
			{
				pView = pUIApp->GetView(RUNTIME_CLASS(CIEShellTreeView));
				if (pView)
					((CIEShellTreeView*)pView)->GetShellTreeCtrl().SendMessage(WM_APP_CB_IE_SEL_CHANGE,wParam,lParam);
			}
			else
			{
				pView = pUIApp->GetView(RUNTIME_CLASS(CIEShellListView));
				if (pView)
					pView->SendMessage(WM_APP_CB_IE_SEL_CHANGE,wParam,lParam);
			}
		}
	}
	return 1L;
}

LRESULT CUIFrameWnd::OnCBIESetEditText(WPARAM wParam,LPARAM lParam)
{
	if (m_pwndCoolBar && m_pwndCoolBar->IsKindOf(RUNTIME_CLASS(CWebBrowserCoolBar)))
	{
		if (wParam)
			((CWebBrowserCoolBar*)m_pwndCoolBar)->GetComboBox().GetEditCtrl()->SetWindowText((LPCTSTR)wParam);
	}
	return 1L;
}


////////////////////////////////////////////////////////////////
// CToolBarComboBox
//

BEGIN_MESSAGE_MAP(CToolBarComboBox, CIEShellComboBox)
END_MESSAGE_MAP()

//////////////////

⌨️ 快捷键说明

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