📄 uiframewnd.cpp
字号:
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 + -