MainFrm.cpp
上传用户:szled88
上传日期:2015-04-09
资源大小:43957k
文件大小:14k
- // MainFrm.cpp : implementation of the CMainFrame class
- //
- // This file is a part of the XTREME TOOLKIT PRO MFC class library.
- // (c)1998-2008 Codejock Software, All Rights Reserved.
- //
- // THIS SOURCE FILE IS THE PROPERTY OF CODEJOCK SOFTWARE AND IS NOT TO BE
- // RE-DISTRIBUTED BY ANY MEANS WHATSOEVER WITHOUT THE EXPRESSED WRITTEN
- // CONSENT OF CODEJOCK SOFTWARE.
- //
- // THIS SOURCE CODE CAN ONLY BE USED UNDER THE TERMS AND CONDITIONS OUTLINED
- // IN THE XTREME TOOLKIT PRO LICENSE AGREEMENT. CODEJOCK SOFTWARE GRANTS TO
- // YOU (ONE SOFTWARE DEVELOPER) THE LIMITED RIGHT TO USE THIS SOFTWARE ON A
- // SINGLE COMPUTER.
- //
- // CONTACT INFORMATION:
- // support@codejock.com
- // http://www.codejock.com
- //
- /////////////////////////////////////////////////////////////////////////////
- #include "stdafx.h"
- #include "DynamicPanes.h"
- #include "MainFrm.h"
- #include "SimpleForm.h"
- #include "SimpleListView.h"
- #ifdef _DEBUG
- #define new DEBUG_NEW
- #undef THIS_FILE
- static char THIS_FILE[] = __FILE__;
- #endif
- /////////////////////////////////////////////////////////////////////////////
- // CMainFrame
- IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)
- BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
- //{{AFX_MSG_MAP(CMainFrame)
- ON_WM_CREATE()
- ON_COMMAND(ID_MANAGER_CREATEFORM, OnManagerCreateform)
- ON_MESSAGE(XTPWM_DOCKINGPANE_NOTIFY, OnDockingPaneNotify)
- ON_COMMAND(ID_MANAGER_CREATEEDIT, OnManagerCreateedit)
- ON_COMMAND(ID_MANAGER_CREATELISTCONTROL, OnManagerCreatelistcontrol)
- ON_COMMAND(ID_MANAGER_CREATE3INROW, OnManagerCreate3inrow)
- ON_COMMAND(ID_MANAGER_CREATE3INCOLUMN, OnManagerCreate3incolumn)
- ON_COMMAND(ID_MANAGER_CREATE3INWINDOW, OnManagerCreate3inwindow)
- ON_COMMAND(ID_MANAGER_HIDEALL, OnManagerHideall)
- ON_COMMAND(ID_MANAGER_SHOWALL, OnManagerShowall)
- ON_COMMAND(ID_MANAGER_DESTOYALL, OnManagerDestoyall)
- ON_UPDATE_COMMAND_UI(ID_MANAGER_DESTOYALL, OnUpdateManagerAll)
- ON_COMMAND(ID_TOOLS_ALLOWCONTEXTMENU, OnToolsAllowcontextmenu)
- ON_UPDATE_COMMAND_UI(ID_TOOLS_ALLOWCONTEXTMENU, OnUpdateToolsAllowcontextmenu)
- ON_COMMAND(ID_TOOLS_FORBIDEDITCLOSING, OnToolsForbideditclosing)
- ON_UPDATE_COMMAND_UI(ID_TOOLS_FORBIDEDITCLOSING, OnUpdateToolsForbideditclosing)
- ON_COMMAND(ID_TOOLS_FORBIDFORMCLOSING, OnToolsForbidformclosing)
- ON_UPDATE_COMMAND_UI(ID_TOOLS_FORBIDFORMCLOSING, OnUpdateToolsForbidformclosing)
- ON_COMMAND(ID_TOOLS_FORBIDLISTCLOSING, OnToolsForbidlistclosing)
- ON_UPDATE_COMMAND_UI(ID_TOOLS_FORBIDLISTCLOSING, OnUpdateToolsForbidlistclosing)
- ON_COMMAND(ID_TOOLS_THEME_OFFICE2000, OnToolsThemeOffice2000)
- ON_COMMAND(ID_TOOLS_THEME_OFFICE2003, OnToolsThemeOffice2003)
- ON_COMMAND(ID_TOOLS_THEME_OFFICEXP, OnToolsThemeOfficexp)
- ON_UPDATE_COMMAND_UI(ID_TOOLS_THEME_OFFICE2000, OnUpdateToolsThemeOffice2000)
- ON_UPDATE_COMMAND_UI(ID_TOOLS_THEME_OFFICE2003, OnUpdateToolsThemeOffice2003)
- ON_UPDATE_COMMAND_UI(ID_TOOLS_THEME_OFFICEXP, OnUpdateToolsThemeOfficexp)
- ON_UPDATE_COMMAND_UI(ID_MANAGER_SHOWALL, OnUpdateManagerAll)
- ON_UPDATE_COMMAND_UI(ID_MANAGER_HIDEALL, OnUpdateManagerAll)
- //}}AFX_MSG_MAP
- ON_WM_CLOSE()
- ON_COMMAND(XTP_ID_CUSTOMIZE, OnCustomize)
- END_MESSAGE_MAP()
- static UINT indicators[] =
- {
- ID_SEPARATOR, // status line indicator
- ID_INDICATOR_CAPS,
- ID_INDICATOR_NUM,
- ID_INDICATOR_SCRL,
- };
- /////////////////////////////////////////////////////////////////////////////
- // CMainFrame construction/destruction
- CMainFrame::CMainFrame()
- {
- m_nCount = 0;
- m_bContextMenu = TRUE;
- m_bForbidEditClosing = m_bForbidFormClosing = m_bForbidListClosing = FALSE;
- }
- CMainFrame::~CMainFrame()
- {
- }
- int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
- {
- if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
- return -1;
- if (!m_wndStatusBar.Create(this) ||
- !m_wndStatusBar.SetIndicators(indicators,
- sizeof(indicators)/sizeof(UINT)))
- {
- TRACE0("Failed to create status barn");
- return -1; // fail to create
- }
- if (!InitCommandBars())
- return -1;
- CXTPPaintManager::SetTheme(xtpThemeOfficeXP);
- CXTPCommandBars* pCommandBars = GetCommandBars();
- pCommandBars->SetMenu(_T("Menu Bar"), IDR_MAINFRAME);
- CXTPToolBar* pStandardBar = (CXTPToolBar*)pCommandBars->Add(_T("Standard"), xtpBarTop);
- if (!pStandardBar ||
- !pStandardBar->LoadToolBar(IDR_MAINFRAME))
- {
- TRACE0("Failed to create toolbarn");
- return -1;
- }
- // Load the previous state for command bars.
- LoadCommandBars(_T("CommandBars"));
- m_paneManager.InstallDockingPanes(this);
- m_paneManager.SetTheme(xtpPaneThemeOffice);
- int nIDIcons[] = {1, 2, 3, 4, 5, 6};
- m_paneManager.SetIcons(IDB_BITMAP_ICONS, nIDIcons, 7, RGB(255, 0, 255));
- XTPPaintManager()->RefreshMetrics();
- return 0;
- }
- BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
- {
- if( !CFrameWnd::PreCreateWindow(cs) )
- return FALSE;
- cs.lpszClass = _T("XTPMainFrame");
- CXTPDrawHelpers::RegisterWndClass(AfxGetInstanceHandle(), cs.lpszClass,
- CS_DBLCLKS, AfxGetApp()->LoadIcon(IDR_MAINFRAME));
- cs.style |= WS_CLIPCHILDREN|WS_CLIPSIBLINGS;
- return TRUE;
- }
- /////////////////////////////////////////////////////////////////////////////
- // CMainFrame diagnostics
- #ifdef _DEBUG
- void CMainFrame::AssertValid() const
- {
- CFrameWnd::AssertValid();
- }
- void CMainFrame::Dump(CDumpContext& dc) const
- {
- CFrameWnd::Dump(dc);
- }
- #endif //_DEBUG
- /////////////////////////////////////////////////////////////////////////////
- // CMainFrame message handlers
- void CMainFrame::ShowContextMenu(CPoint pos, CXTPDockingPane* pPopupPane)
- {
- if (!pPopupPane)
- return;
-
- CMenu menu;
- VERIFY(menu.LoadMenu(IDR_POPUP_PANES));
- CMenu* pPopup = menu.GetSubMenu(0);
-
-
- if (pPopupPane->IsHidden())
- {
- pPopup->CheckMenuItem(ID_POPUP_HIDE, MF_BYCOMMAND|MF_CHECKED);
- }
-
- int nCommand = CXTPCommandBars::TrackPopupMenu(pPopup, TPM_RIGHTBUTTON|TPM_NONOTIFY|TPM_RETURNCMD, pos.x, pos.y, this);
- switch (nCommand)
- {
- case ID_POPUP_CLOSE:
- pPopupPane->Close();
- break;
-
- case ID_POPUP_DESTROY:
- if (pPopupPane->GetChild())
- {
- pPopupPane->GetChild()->DestroyWindow();
- }
- m_paneManager.DestroyPane(pPopupPane);
- break;
-
- case ID_POPUP_HIDE:
- m_paneManager.ToggleAutoHide(pPopupPane);
- break;
- }
- }
- LRESULT CMainFrame::OnDockingPaneNotify(WPARAM wParam, LPARAM lParam)
- {
- if (wParam == XTP_DPN_SHOWWINDOW)
- {
- // get a pointer to the docking pane being shown.
- CXTPDockingPane* pPane = (CXTPDockingPane*)lParam;
- if (!pPane->IsValid())
- {
- CWnd* pWnd = NULL;
- if (m_mapPanes.Lookup(pPane->GetID(), pWnd))
- {
- pPane->Attach(pWnd);
- }
- }
- return TRUE; // handled
- }
- if (wParam == XTP_DPN_CONTEXTMENU)
- {
- XTP_DOCKINGPANE_CLICK* pClick = (XTP_DOCKINGPANE_CLICK*)lParam;
- if (m_bContextMenu && pClick->pPane) ShowContextMenu(pClick->pt, pClick->pPane);
- return TRUE;
- }
- if (wParam == XTP_DPN_CLOSEPANE)
- {
- CXTPDockingPane* pPane = (CXTPDockingPane*)lParam;
- CWnd* pWnd =NULL;
- if (!m_mapPanes.Lookup(pPane->GetID(), pWnd))
- return FALSE;
- CFrameWnd* pFrame = DYNAMIC_DOWNCAST(CFrameWnd, pWnd);
- if (pFrame)
- {
- CView* pView = (CView*)pFrame->GetWindow(GW_CHILD);
- if (pView && m_bForbidEditClosing && pView->IsKindOf(RUNTIME_CLASS(CEditView)))
- return XTP_ACTION_NOCLOSE;
- if (pView && m_bForbidListClosing && pView->IsKindOf(RUNTIME_CLASS(CSimpleListView)))
- return XTP_ACTION_NOCLOSE;
- if (pView && m_bForbidFormClosing && pView->IsKindOf(RUNTIME_CLASS(CSimpleForm)))
- return XTP_ACTION_NOCLOSE;
- }
- return TRUE;
- }
- return FALSE;
- }
- CXTPDockingPane* CMainFrame::CreatePane(CRuntimeClass* pNewViewClass, CString strFormat, XTPDockingPaneDirection direction, CXTPDockingPane* pNeighbour)
- {
- int nID = ++m_nCount;
- CXTPDockingPane* pwndPane = m_paneManager.CreatePane(
- nID, CRect(0, 0,200, 120), direction, pNeighbour);
- CString strTitle;
- strTitle.Format(strFormat, nID);
- pwndPane->SetTitle(strTitle);
- pwndPane->SetIconID(nID % 6 + 1);
- CFrameWnd* pFrame = new CFrameWnd;
- CCreateContext context;
- context.m_pNewViewClass = pNewViewClass;
- context.m_pCurrentDoc = GetActiveView()->GetDocument();
- pFrame->Create(NULL, NULL, WS_CHILD|WS_VISIBLE|WS_CLIPCHILDREN|WS_CLIPSIBLINGS, CRect(0, 0, 0, 0), this, NULL, 0, &context);
- pFrame->ModifyStyleEx(WS_EX_CLIENTEDGE, 0);
- m_mapPanes.SetAt(nID, pFrame);
- return pwndPane;
- }
- void CMainFrame::OnManagerCreateform()
- {
- CreatePane(RUNTIME_CLASS(CSimpleForm), _T("Form %i"), xtpPaneDockRight);
- }
- void CMainFrame::OnManagerCreateedit()
- {
- CreatePane(RUNTIME_CLASS(CEditView), _T("Edit %i"), xtpPaneDockBottom);
- }
- void CMainFrame::OnManagerCreatelistcontrol()
- {
- CreatePane(RUNTIME_CLASS(CSimpleListView), _T("List %i"), xtpPaneDockLeft);
- }
- void CMainFrame::OnManagerCreate3inrow()
- {
- CXTPDockingPane* pwndPaneForm = CreatePane(RUNTIME_CLASS(CSimpleForm), _T("Form %i"), xtpPaneDockBottom);
- CXTPDockingPane* pwndPaneEdit = CreatePane(RUNTIME_CLASS(CEditView), _T("Edit %i"), xtpPaneDockRight, pwndPaneForm);
- CreatePane(RUNTIME_CLASS(CSimpleListView), _T("List %i"), xtpPaneDockRight, pwndPaneEdit);
- }
- void CMainFrame::OnManagerCreate3incolumn()
- {
- CXTPDockingPane* pwndPaneForm = CreatePane(RUNTIME_CLASS(CSimpleForm), _T("Form %i"), xtpPaneDockLeft);
- CXTPDockingPane* pwndPaneEdit = CreatePane(RUNTIME_CLASS(CEditView), _T("Edit %i"), xtpPaneDockBottom, pwndPaneForm);
- CreatePane(RUNTIME_CLASS(CSimpleListView), _T("List %i"), xtpPaneDockBottom, pwndPaneEdit);
- }
- void CMainFrame::OnManagerCreate3inwindow()
- {
- CXTPDockingPane* pwndPaneForm = CreatePane(RUNTIME_CLASS(CSimpleForm), _T("Form %i"), xtpPaneDockRight);
- CXTPDockingPane* pwndPaneEdit = CreatePane(RUNTIME_CLASS(CEditView), _T("Edit %i"), xtpPaneDockRight);
- CXTPDockingPane* pwndPaneList = CreatePane(RUNTIME_CLASS(CSimpleListView), _T("List %i"), xtpPaneDockRight);
- m_paneManager.AttachPane(pwndPaneEdit, pwndPaneForm);
- m_paneManager.AttachPane(pwndPaneList, pwndPaneForm);
- }
- void CMainFrame::OnManagerHideall()
- {
- CXTPDockingPaneInfoList& lstPanes = m_paneManager.GetPaneList();
- POSITION pos = lstPanes.GetHeadPosition();
- while (pos)
- {
- CXTPDockingPane* pPane = lstPanes.GetNext(pos);
- if (!pPane->IsHidden())
- pPane->Close();
- }
- }
- void CMainFrame::OnManagerShowall()
- {
- CXTPDockingPaneInfoList& lstPanes = m_paneManager.GetPaneList();
- POSITION pos = lstPanes.GetHeadPosition();
- while (pos)
- {
- CXTPDockingPane* pPane = lstPanes.GetNext(pos);
- if (pPane->IsClosed())
- m_paneManager.ShowPane(pPane);
- }
- }
- void CMainFrame::OnManagerDestoyall()
- {
- POSITION pos = m_mapPanes.GetStartPosition();
- UINT nID; CWnd* pWnd;
- while (pos)
- {
- m_mapPanes.GetNextAssoc(pos, nID, pWnd);
- pWnd->DestroyWindow();
- }
- m_mapPanes.RemoveAll();
-
- m_paneManager.DestroyAll();
- }
- void CMainFrame::OnUpdateManagerAll(CCmdUI* pCmdUI)
- {
- pCmdUI->Enable(m_paneManager.GetPaneList().GetCount() > 0);
- }
- void CMainFrame::OnToolsAllowcontextmenu()
- {
- m_bContextMenu = !m_bContextMenu;
- }
- void CMainFrame::OnUpdateToolsAllowcontextmenu(CCmdUI* pCmdUI)
- {
- pCmdUI->SetCheck(m_bContextMenu);
- }
- void CMainFrame::OnToolsForbideditclosing()
- {
- m_bForbidEditClosing = !m_bForbidEditClosing;
- }
- void CMainFrame::OnUpdateToolsForbideditclosing(CCmdUI* pCmdUI)
- {
- pCmdUI->SetCheck(m_bForbidEditClosing);
- }
- void CMainFrame::OnToolsForbidformclosing()
- {
- m_bForbidFormClosing = !m_bForbidFormClosing;
- }
- void CMainFrame::OnUpdateToolsForbidformclosing(CCmdUI* pCmdUI)
- {
- pCmdUI->SetCheck(m_bForbidFormClosing);
- }
- void CMainFrame::OnToolsForbidlistclosing()
- {
- m_bForbidListClosing = !m_bForbidListClosing;
- }
- void CMainFrame::OnUpdateToolsForbidlistclosing(CCmdUI* pCmdUI)
- {
- pCmdUI->SetCheck(m_bForbidListClosing);
- }
- void CMainFrame::OnToolsThemeOffice2000()
- {
- m_paneManager.SetTheme(xtpPaneThemeDefault);
- CXTPPaintManager::SetTheme(xtpThemeOffice2000);
- GetCommandBars()->RedrawCommandBars();
- }
- void CMainFrame::OnToolsThemeOffice2003()
- {
- m_paneManager.SetTheme(xtpPaneThemeOffice2003);
- CXTPPaintManager::SetTheme(xtpThemeOffice2003);
- GetCommandBars()->RedrawCommandBars();
- }
- void CMainFrame::OnToolsThemeOfficexp()
- {
- m_paneManager.SetTheme(xtpPaneThemeOffice);
- CXTPPaintManager::SetTheme(xtpThemeOfficeXP);
- GetCommandBars()->RedrawCommandBars();
- }
- void CMainFrame::OnUpdateToolsThemeOffice2000(CCmdUI* pCmdUI)
- {
- pCmdUI->SetCheck(m_paneManager.GetCurrentTheme() == xtpPaneThemeDefault? TRUE: FALSE);
- }
- void CMainFrame::OnUpdateToolsThemeOffice2003(CCmdUI* pCmdUI)
- {
- pCmdUI->SetCheck(m_paneManager.GetCurrentTheme() == xtpPaneThemeOffice2003? TRUE: FALSE);
- }
- void CMainFrame::OnUpdateToolsThemeOfficexp(CCmdUI* pCmdUI)
- {
- pCmdUI->SetCheck(m_paneManager.GetCurrentTheme() == xtpPaneThemeOffice? TRUE: FALSE);
- }
- void CMainFrame::OnClose()
- {
- // Save the current state for command bars.
- SaveCommandBars(_T("CommandBars"));
- // TODO: Add your message handler code here and/or call default
- CFrameWnd::OnClose();
- }
- void CMainFrame::OnCustomize()
- {
- // get a pointer to the command bars object.
- CXTPCommandBars* pCommandBars = GetCommandBars();
- if (pCommandBars == NULL)
- return;
- // instanciate the customize dialog
- CXTPCustomizeSheet dlg(pCommandBars);
- // add the options page to the customize dialog.
- CXTPCustomizeOptionsPage pageOptions(&dlg);
- dlg.AddPage(&pageOptions);
- // add the commands page to the customize dialog.
- CXTPCustomizeCommandsPage* pPageCommands = dlg.GetCommandsPage();
- pPageCommands->AddCategories(IDR_MAINFRAME);
- // initialize the commands page page.
- pPageCommands->InsertAllCommandsCategory();
- pPageCommands->InsertBuiltInMenus(IDR_MAINFRAME);
- pPageCommands->InsertNewMenuCategory();
- // display the customize dialog.
- dlg.DoModal();
- }