📄 mainfrm.cpp
字号:
// MainFrm.cpp : implementation of the CMainFrame class
//
#include "stdafx.h"
#include "IE6mdi.h"
#include "MainFrm.h"
#include "IE6mdiview.h"
#include "ViewManager.h"
#include "DialogAutoSave.h"
#ifndef _FAVDIALOG
#include "DialogFav.h"
#endif
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CMainFrame
IMPLEMENT_DYNAMIC(CMainFrame, CMDIFrameWnd)
BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWnd)
//{{AFX_MSG_MAP(CMainFrame)
ON_WM_CREATE()
ON_COMMAND(IDOK, OnNewAddressEnter)
ON_COMMAND(ID_FILE_OPENURLLIST2, OnFileOpenurllist)
ON_COMMAND(ID_FILE_SAVEURLLIST2, OnFileSaveurllist)
ON_COMMAND(ID_FILE_OPENADOCUMENT2, OnFileOpenadocument)
ON_COMMAND(ID_FILE_CHANGETHELOGO, OnFileChangethelogo)
ON_COMMAND(ID_FILE_DEFAULTLOGO, OnFileDefaultlogo)
ON_COMMAND(ID_POPUP_WINDOW, OnNothing)
ON_WM_CLOSE()
ON_WM_SIZE()
ON_COMMAND(ID_WINDOW_AUTOSAVE, OnWindowAutosave)
ON_COMMAND(ID_WINDOW_WINDOWLIST, OnMyWindowList)
ON_COMMAND(ID_POPUP_WINDOW_OFF, OnNothing)
ON_COMMAND(ID_MANAGE, OnMyWindowList)
ON_COMMAND(ID_FAVFLOAT, OnFavFloat)
ON_WM_TIMER()
//}}AFX_MSG_MAP
ON_NOTIFY(TBN_DROPDOWN, AFX_IDW_TOOLBAR, OnDropDown)
ON_CBN_SELENDOK(AFX_IDW_TOOLBAR + 1,OnNewAddress)
ON_CBN_EDITCHANGE(AFX_IDW_TOOLBAR + 1,OnDebug)
ON_COMMAND(ID_FONT_DROPDOWN, DoNothing)
//ON_COMMAND(IDOK, OnNewAddressEnter)
END_MESSAGE_MAP()
static UINT indicators[] =
{
ID_SEPARATOR, // opened windows: 0
ID_SEPARATOR, // status line indicator: 1
ID_SEPARATOR // indicator for autosave
// ID_INDICATOR_CAPS,
// ID_INDICATOR_NUM,
// ID_INDICATOR_SCRL,
};
/////////////////////////////////////////////////////////////////////////////
// CMainFrame construction/destruction
CMainFrame::CMainFrame()
{
m_delay = AfxGetApp()->GetProfileInt("Settings","Autosave_delay",60);
m_file = AfxGetApp()->GetProfileString("Settings","Autosave_file","");;
}
CMainFrame::~CMainFrame()
{
}
/*
*******************************************************************************/
// FUNCTION : void CMainFrame::OnNothing()
//
// PURPOSE : called when no more view and when the user wants to change the
// state of PopupWindow
//
// PARAMETERS : none
//
// RETURN VALUE : void
//
//
// COMMENTS :
//
//
/*******************************************************************************
*/
void CMainFrame::OnNothing()
{
int m_iPopup = AfxGetApp()->GetProfileInt("Settings","NoPopupWindow",1);
if (m_iPopup == 1) {
m_wndToolBar.SetButtonInfo(8, ID_POPUP_WINDOW, TBSTYLE_BUTTON, 13);
AfxGetApp()->WriteProfileInt("Settings","NoPopupWindow",0);
}
else {
m_wndToolBar.SetButtonInfo(8, ID_POPUP_WINDOW_OFF, TBSTYLE_BUTTON, 14);
AfxGetApp()->WriteProfileInt("Settings","NoPopupWindow",1);
}
}
/*
*******************************************************************************/
// FUNCTION : int CMainFrame::OnCreate(LPCREATESTRUCT)
//
// PURPOSE : create all the toolbars and other stuffs
//
// PARAMETERS :
// lpCreateStruct -
//
// RETURN VALUE : int
//
//
// COMMENTS :
//
//
/*******************************************************************************
*/
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;
///////////// create the toolbar :O)
CImageList img;
CString str;
if (!m_wndToolBar.CreateEx(this))
{
TRACE0("Failed to create toolbar\n");
return -1; // fail to create
}
// set up toolbar properties
// every button is 22 pixels large :O)
m_wndToolBar.GetToolBarCtrl().SetButtonWidth(20, 200);
m_wndToolBar.GetToolBarCtrl().SetExtendedStyle(TBSTYLE_EX_DRAWDDARROWS);
img.Create(IDB_HOTTOOLBAR, 22, 0, RGB(255, 0, 255));
m_wndToolBar.GetToolBarCtrl().SetHotImageList(&img);
img.Detach();
img.Create(IDB_COLDTOOLBAR, 22, 0, RGB(255, 0, 255));
m_wndToolBar.GetToolBarCtrl().SetImageList(&img);
img.Detach();
m_wndToolBar.ModifyStyle(0, TBSTYLE_FLAT | TBSTYLE_TRANSPARENT);
m_wndToolBar.SetButtons(NULL, 12);
m_wndToolBar.SetButtonInfo(1, ID_GO_BACK, TBSTYLE_BUTTON, 0);
m_wndToolBar.SetButtonInfo(2, ID_GO_FORWARD, TBSTYLE_BUTTON, 1);
m_wndToolBar.SetButtonInfo(3, ID_VIEW_STOP, TBSTYLE_BUTTON, 2);
m_wndToolBar.SetButtonInfo(4, ID_VIEW_REFRESH, TBSTYLE_BUTTON, 3);
m_wndToolBar.SetButtonInfo(5, ID_GO_START_PAGE, TBSTYLE_BUTTON, 4);
m_wndToolBar.SetButtonInfo(6, ID_KILL_ALL, TBSTYLE_BUTTON, 10);
m_wndToolBar.SetButtonInfo(0, ID_FILE_NEW2, TBSTYLE_BUTTON, 6);
m_wndToolBar.SetButtonInfo(7, ID_MANAGE, TBSTYLE_BUTTON, 11);
int m_iPopup = AfxGetApp()->GetProfileInt("Settings","NoPopupWindow",1);
if (m_iPopup == 1)
m_wndToolBar.SetButtonInfo(8, ID_POPUP_WINDOW_OFF, TBSTYLE_BUTTON, 14); // 13: off, 14:on
else
m_wndToolBar.SetButtonInfo(8, ID_POPUP_WINDOW, TBSTYLE_BUTTON, 13); // 13: off, 14:on
m_wndToolBar.SetButtonInfo(9, ID_PRINT, TBSTYLE_BUTTON, 7);
m_wndToolBar.SetButtonInfo(10, ID_FONT_DROPDOWN, TBSTYLE_BUTTON | TBSTYLE_DROPDOWN, 8);
m_wndToolBar.SetButtonInfo(11, ID_FAVFLOAT, TBSTYLE_BUTTON, 12);
CRect rectToolBar;
// set up toolbar button sizes
m_wndToolBar.GetItemRect(0, &rectToolBar);
m_wndToolBar.SetSizes(rectToolBar.Size(), CSize(22,22)); // rectToolBar.Size() first argument
// Address bar creation (combobox)
if (!m_wndAddress.Create(CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_CHILD, CRect(0, 0, 200, 120), this, AFX_IDW_TOOLBAR + 1))
{
TRACE0("Failed to create combobox\n");
return -1; // fail to create
}
m_wndAddress.LimitText(0);
GetURL(); // restore the history
// create the animation control
m_wndAnimate.Create(WS_CHILD | WS_VISIBLE , CRect(0, 0, 25, 25), this, AFX_IDW_TOOLBAR + 2);
// the AVI should be 26x26 pixels :O)
// test if there is an avi in the current directory available
CWinApp* pApp = AfxGetApp();
CString AVIfile = pApp->GetProfileString("Settings","AVI default file","");
if (!m_wndAnimate.Open(AVIfile)) // if no AVI we open the default
m_wndAnimate.Open(IDR_MFCAVI);
IsLogoPlayed = 0;
if (!m_wndReBar.Create(this) ||
!m_wndReBar.AddBar(&m_wndToolBar) ||
!m_wndReBar.AddBar(&m_wndAddress, CString(LPCTSTR(IDS_ADDRESS)))||
!m_wndReBar.AddBar(&m_wndAnimate, NULL, NULL, RBBS_FIXEDSIZE | RBBS_FIXEDBMP)) // RBBS_FIXEDSIZE | RBBS_FIXEDBMP
{
TRACE0("Failed to create rebar\n");
return -1; // fail to create
}
m_wndToolBar.SetBarStyle(m_wndToolBar.GetBarStyle() |
CBRS_TOOLTIPS | CBRS_FLYBY);
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
}
// modify the style of the status bar
//SBPS_NORMAL
UINT Id,Style;
int Width,NewZero;
m_wndStatusBar.GetPaneInfo(0,Id,Style,Width);
NewZero = (Width*4)/5;
m_wndStatusBar.SetPaneInfo(0,Id,0,NewZero);
m_wndStatusBar.GetPaneInfo(1,Id,Style,Width);
m_wndStatusBar.SetPaneInfo(1,Id,SBPS_STRETCH,Width);
m_wndStatusBar.GetPaneInfo(2,Id,Style,Width);
m_wndStatusBar.SetPaneInfo(2,Id,SBPS_NORMAL,15); //autosave
/////////////////////////////////////////////////////////
theWindowTab.Create(WS_CHILD|WS_VISIBLE|TCS_BUTTONS
|TCS_FIXEDWIDTH|TCS_SINGLELINE
|TCS_FORCELABELLEFT,
CRect(0,0,0,0), &m_wndStatusBar, 1000);
/////////////////////////////////////////////////////////
return 0;
}
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
if( !CMDIFrameWnd::PreCreateWindow(cs) )
return FALSE;
return TRUE;
}
/////////////////////////////////////////////////////////////////////////////
// CMainFrame diagnostics
#ifdef _DEBUG
void CMainFrame::AssertValid() const
{
CMDIFrameWnd::AssertValid();
}
void CMainFrame::Dump(CDumpContext& dc) const
{
CMDIFrameWnd::Dump(dc);
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CMainFrame message handlers
/*
*******************************************************************************/
// FUNCTION : void CMainFrame::OnNewAddress()
//
// PURPOSE : called when the user select a old address from the history
// go to this address. Open in the current window or open a new one if no more
// window active
//
// PARAMETERS : none
//
// RETURN VALUE : void
//
//
// COMMENTS :
//
//
/*******************************************************************************
*/
void CMainFrame::OnNewAddress()
{
// gets called when an item in the Address combo box is selected
// just navigate to the newly selected location.
CString str;
m_wndAddress.GetLBText(m_wndAddress.GetCurSel(), str);
if (str.GetLength() == 0)
return;
////////////////////////////////////////////////////
// retrieve the active view, little bit hard in MDI
////////////////////////////////////////////////////
CMainFrame *pFrame = (CMainFrame*)AfxGetApp()->m_pMainWnd;
CMDIChildWnd *pChild = (CMDIChildWnd *) pFrame->GetActiveFrame();
CIE6mdiView *pView = (CIE6mdiView *) pChild->GetActiveView();
if (pView == NULL) {
// we need to create a new window
AfxGetApp()->m_pMainWnd->SendMessage(WM_COMMAND,(WPARAM)ID_FILE_NEW,(LPARAM)NULL);
pChild = (CMDIChildWnd *) pFrame->GetActiveFrame();
pView = (CIE6mdiView *) pChild->GetActiveView();
pView->Navigate2(str);
return;
}
else
pView->Navigate2(str);
}
/*
*******************************************************************************/
// FUNCTION : void CMainFrame::OnNewAddressEnter()
//
// PURPOSE : go to the URL just entered in the address bar, add the new address
// to the history. Open in the current window or open a new one if no more
// window active
//
// PARAMETERS : none
//
// RETURN VALUE : void
//
//
// COMMENTS :
//
//
/*******************************************************************************
*/
void CMainFrame::OnNewAddressEnter()
{
// gets called when an item is entered manually into the edit box portion
// of the Address combo box.
// navigate to the newly selected location and also add this address to the
// list of addresses in the combo box.
CString str;
m_wndAddress.GetEditCtrl()->GetWindowText(str);
if (str.GetLength() == 0)
return;
str = CheckUrl(str);
AddURL(str);
////////////////////////////////////////////////////
// retrieve the active view, little bit hard in MDI
////////////////////////////////////////////////////
CMainFrame *pFrame = (CMainFrame*)AfxGetApp()->m_pMainWnd;
CMDIChildWnd *pChild = (CMDIChildWnd *) pFrame->GetActiveFrame();
// Get the active view attached to the active MDI child
// window.
CIE6mdiView *pView = (CIE6mdiView *) pChild->GetActiveView();
if (pView == NULL) {
AfxGetApp()->m_pMainWnd->SendMessage(WM_COMMAND,(WPARAM)ID_FILE_NEW,(LPARAM)NULL);
pChild = (CMDIChildWnd *) pFrame->GetActiveFrame();
pView = (CIE6mdiView *) pChild->GetActiveView();
pView->Navigate2(str);
return;
}
else
pView->Navigate2(str);
// add the URL the the history
COMBOBOXEXITEM item;
item.mask = CBEIF_TEXT;
item.iItem = 0; // not -1; we add in head position
item.pszText = (LPTSTR)(LPCTSTR)str;
m_wndAddress.InsertItem(&item);
}
/*
*******************************************************************************/
// FUNCTION : void CMainFrame::StopAnimation()
//
// PURPOSE : stop the AVI animation
//
// PARAMETERS : none
//
// RETURN VALUE : void
//
//
// COMMENTS :
//
//
/*******************************************************************************
*/
void CMainFrame::StopAnimation()
{
m_wndAnimate.Stop();
m_wndAnimate.Seek(0);
IsLogoPlayed = 0;
}
/*
*******************************************************************************/
// FUNCTION : void CMainFrame::StartAnimation()
//
// PURPOSE : start the AVI animation
//
// PARAMETERS : none
//
// RETURN VALUE : void
//
//
// COMMENTS :
//
//
/*******************************************************************************
*/
void CMainFrame::StartAnimation()
{
m_wndAnimate.Play(0, -1, -1);
IsLogoPlayed = 1;
}
/*
*******************************************************************************/
// FUNCTION : void CMainFrame::SetAddress(LPCTSTR)
//
// PURPOSE : update the Address bar
//
// PARAMETERS :
// lpszUrl - new URL to display
//
// RETURN VALUE : void
//
//
// COMMENTS :
//
//
/*******************************************************************************
*/
void CMainFrame::SetAddress(LPCTSTR lpszUrl)
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -