MainFrm.cpp
上传用户:szled88
上传日期:2015-04-09
资源大小:43957k
文件大小:8k
源码类别:

对话框与窗口

开发平台:

Visual C++

  1. // MainFrm.cpp : implementation of the CMainFrame class
  2. //
  3. // This file is a part of the XTREME TOOLKIT PRO MFC class library.
  4. // (c)1998-2008 Codejock Software, All Rights Reserved.
  5. //
  6. // THIS SOURCE FILE IS THE PROPERTY OF CODEJOCK SOFTWARE AND IS NOT TO BE
  7. // RE-DISTRIBUTED BY ANY MEANS WHATSOEVER WITHOUT THE EXPRESSED WRITTEN
  8. // CONSENT OF CODEJOCK SOFTWARE.
  9. //
  10. // THIS SOURCE CODE CAN ONLY BE USED UNDER THE TERMS AND CONDITIONS OUTLINED
  11. // IN THE XTREME TOOLKIT PRO LICENSE AGREEMENT. CODEJOCK SOFTWARE GRANTS TO
  12. // YOU (ONE SOFTWARE DEVELOPER) THE LIMITED RIGHT TO USE THIS SOFTWARE ON A
  13. // SINGLE COMPUTER.
  14. //
  15. // CONTACT INFORMATION:
  16. // support@codejock.com
  17. // http://www.codejock.com
  18. //
  19. /////////////////////////////////////////////////////////////////////////////
  20. #include "stdafx.h"
  21. #include "DockingContainers.h"
  22. #include "MainFrm.h"
  23. #ifdef _DEBUG
  24. #define new DEBUG_NEW
  25. #undef THIS_FILE
  26. static char THIS_FILE[] = __FILE__;
  27. #endif
  28. class CComandBarsPaintManager : public CXTPOffice2003Theme
  29. {
  30. public:
  31. void FillCommandBarEntry(CDC* pDC, CXTPCommandBar* pBar)
  32. {
  33. if (DYNAMIC_DOWNCAST(CXTPToolBar, pBar) != 0 && pBar->GetCommandBars() == 0)
  34. pDC->FillSolidRect(CXTPClientRect(pBar), m_clrDockBar.clrLight);
  35. else
  36. CXTPOffice2003Theme::FillCommandBarEntry(pDC, pBar);
  37. }
  38. void RoundRect(CDC* pDC, CRect rc, COLORREF clr)
  39. {
  40. CXTPBrushDC brush(*pDC, clr);
  41. CXTPPenDC pen(*pDC, GetXtremeColor(XPCOLOR_MENUBAR_BORDER));
  42. pDC->RoundRect(rc.left, rc.top, rc.right, rc.bottom, 6, 6);
  43. }
  44. void DrawRectangle(CDC* pDC, CRect rc, BOOL bSelected, BOOL bPressed, BOOL bEnabled, BOOL bChecked, BOOL bPopuped, XTPBarType barType, XTPBarPosition barPosition)
  45. {
  46. if (bPopuped || !bEnabled || m_bLunaTheme)
  47. {
  48. CXTPOffice2003Theme::DrawRectangle(pDC, rc, bSelected, bPressed, bEnabled, bChecked, bPopuped, barType, barPosition);
  49. return;
  50. }
  51. if (bChecked && !bSelected && !bPressed) RoundRect(pDC, rc, GetXtremeColor(XPCOLOR_MENUBAR_FACE));
  52. else if (bChecked && bSelected && !bPressed) RoundRect(pDC, rc, m_clrDockBar.clrLight);
  53. else if (IsKeyboardSelected(bPressed) || (bSelected && bPressed))  RoundRect(pDC, rc, m_clrDockBar.clrLight);
  54. else if (bSelected || bPressed)  RoundRect(pDC, rc, m_clrDockBar.clrDark);
  55. }
  56. };
  57. /////////////////////////////////////////////////////////////////////////////
  58. // CMainFrame
  59. IMPLEMENT_DYNAMIC(CMainFrame, CMDIFrameWnd)
  60. BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWnd)
  61. //{{AFX_MSG_MAP(CMainFrame)
  62. // NOTE - the ClassWizard will add and remove mapping macros here.
  63. //    DO NOT EDIT what you see in these blocks of generated code !
  64. ON_WM_CREATE()
  65. //}}AFX_MSG_MAP
  66. ON_MESSAGE(XTPWM_DOCKINGPANE_NOTIFY, OnDockingPaneNotify)
  67. ON_COMMAND(XTP_ID_CUSTOMIZE, OnCustomize)
  68. ON_WM_CLOSE()
  69. END_MESSAGE_MAP()
  70. static UINT indicators[] =
  71. {
  72. ID_SEPARATOR,           // status line indicator
  73. ID_INDICATOR_CAPS,
  74. ID_INDICATOR_NUM,
  75. ID_INDICATOR_SCRL,
  76. };
  77. /////////////////////////////////////////////////////////////////////////////
  78. // CMainFrame construction/destruction
  79. CMainFrame::CMainFrame()
  80. {
  81. // TODO: add member initialization code here
  82. }
  83. CMainFrame::~CMainFrame()
  84. {
  85. }
  86. int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
  87. {
  88. if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1)
  89. return -1;
  90. XTPColorManager()->DisableLunaColors(TRUE);
  91. if (!m_wndStatusBar.Create(this) ||
  92. !m_wndStatusBar.SetIndicators(indicators,
  93.   sizeof(indicators)/sizeof(UINT)))
  94. {
  95. TRACE0("Failed to create status barn");
  96. return -1;      // fail to create
  97. }
  98. if (!InitCommandBars())
  99. return -1;
  100. XTPPaintManager()->SetCustomTheme(new CComandBarsPaintManager());
  101. XTPPaintManager()->m_bEnableAnimation = TRUE;
  102. CXTPCommandBars* pCommandBars = GetCommandBars();
  103. CXTPCommandBar* pMenuBar = pCommandBars->SetMenu(_T("Menu Bar"), IDR_MAINFRAME);
  104. pMenuBar->SetFlags(xtpFlagAddMDISysPopup);
  105. CXTPToolBar* pCommandBar = (CXTPToolBar*)pCommandBars->Add(_T("Standard"), xtpBarTop);
  106. if (!pCommandBar ||
  107. !pCommandBar->LoadToolBar(IDR_MAINFRAME))
  108. {
  109. TRACE0("Failed to create toolbarn");
  110. return -1;
  111. }
  112. // Load the previous state for toolbars and menus.
  113. LoadCommandBars(_T("CommandBars"));
  114. m_paneManager.InstallDockingPanes(this);
  115. m_paneManager.SetCustomTheme(new CDockingPanePaintManager());
  116. // Create docking panes.
  117. CXTPDockingPane* pPaneExplorer = m_paneManager.CreatePane(
  118. IDR_PANE_EXPLORER, CRect(0, 0,250, 120), xtpPaneDockLeft);
  119. m_paneManager.CreatePane(
  120. IDR_PANE_ICONS, CRect(0, 0,200, 120), xtpPaneDockBottom, pPaneExplorer);
  121. CXTPDockingPane* pPaneTools = m_paneManager.CreatePane(
  122. IDR_PANE_TOOLS, CRect(0, 0,100, 200), xtpPaneDockRight);
  123. m_paneManager.CreatePane(
  124. IDR_PANE_COLORS, CRect(0, 0,100, 100), xtpPaneDockBottom, pPaneTools);
  125. m_paneManager.SetThemedFloatingFrames(TRUE);
  126. // Load the previous state for docking panes.
  127. CXTPDockingPaneLayout layoutNormal(&m_paneManager);
  128. if (layoutNormal.Load(_T("NormalLayout")))
  129. {
  130. m_paneManager.SetLayout(&layoutNormal);
  131. }
  132. return 0;
  133. }
  134. BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
  135. {
  136. if( !CMDIFrameWnd::PreCreateWindow(cs) )
  137. return FALSE;
  138. cs.lpszClass = _T("XTPMainFrame");
  139. CXTPDrawHelpers::RegisterWndClass(AfxGetInstanceHandle(), cs.lpszClass, 
  140. CS_DBLCLKS, AfxGetApp()->LoadIcon(IDR_MAINFRAME));
  141. return TRUE;
  142. }
  143. /////////////////////////////////////////////////////////////////////////////
  144. // CMainFrame diagnostics
  145. #ifdef _DEBUG
  146. void CMainFrame::AssertValid() const
  147. {
  148. CMDIFrameWnd::AssertValid();
  149. }
  150. void CMainFrame::Dump(CDumpContext& dc) const
  151. {
  152. CMDIFrameWnd::Dump(dc);
  153. }
  154. #endif //_DEBUG
  155. /////////////////////////////////////////////////////////////////////////////
  156. // CMainFrame message handlers
  157. LRESULT CMainFrame::OnDockingPaneNotify(WPARAM wParam, LPARAM lParam)
  158. {
  159. if (wParam == XTP_DPN_SHOWWINDOW)
  160. {
  161. CXTPDockingPane* pPane = (CXTPDockingPane*)lParam;
  162. if (!pPane->IsValid())
  163. {
  164. switch (pPane->GetID())
  165. {
  166. case IDR_PANE_EXPLORER:
  167. pPane->Attach(m_wndExplorerView.CreatePane(this));
  168. break;
  169. case IDR_PANE_ICONS:
  170. pPane->Attach(m_wndIconsView.CreatePane(this));
  171. break;
  172. case IDR_PANE_TOOLS:
  173. pPane->Attach(m_wndToolsView.CreatePane(this));
  174. break;
  175. case IDR_PANE_COLORS:
  176. pPane->Attach(m_wndColorsView.CreatePane(this));
  177. break;
  178. }
  179. }
  180. return 1;
  181. }
  182. return 0;
  183. }
  184. void CMainFrame::RefreshPanes()
  185. {
  186. if (m_wndToolsView.GetSafeHwnd())
  187. m_wndToolsView.Refresh();
  188. }
  189. void CMainFrame::OnCustomize()
  190. {
  191. // Get a pointer to the command bars object.
  192. CXTPCommandBars* pCommandBars = GetCommandBars();
  193. if(pCommandBars != NULL)
  194. {
  195. // Instanciate the customize dialog object.
  196. CXTPCustomizeSheet dlg(pCommandBars);
  197. // Add the options page to the customize dialog.
  198. CXTPCustomizeOptionsPage pageOptions(&dlg);
  199. dlg.AddPage(&pageOptions);
  200. // Add the commands page to the customize dialog.
  201. CXTPCustomizeCommandsPage* pCommands = dlg.GetCommandsPage();
  202. pCommands->AddCategories(IDR_MAINFRAME);
  203. // Use the command bar manager to initialize the
  204. // customize dialog.
  205. pCommands->InsertAllCommandsCategory();
  206. pCommands->InsertBuiltInMenus(IDR_MAINFRAME);
  207. pCommands->InsertNewMenuCategory();
  208. // Dispaly the dialog.
  209. dlg.DoModal();
  210. }
  211. }
  212. void CMainFrame::OnClose()
  213. {
  214. CXTPDockingPaneLayout layoutNormal(&m_paneManager);
  215. m_paneManager.GetLayout(&layoutNormal);
  216. layoutNormal.Save(_T("NormalLayout"));
  217. // Save the current state for toolbars and menus.
  218. SaveCommandBars(_T("CommandBars"));
  219. CFrameWnd::OnClose();
  220. }
  221. void CMainFrame::OnSetPreviewMode(BOOL bPreview, CPrintPreviewState* pState)
  222. {
  223. // Toggle CommandBars
  224. GetCommandBars()->OnSetPreviewMode(bPreview);
  225. // Toggle Docking Panes.
  226. m_paneManager.OnSetPreviewMode(bPreview);
  227. CMDIFrameWnd::OnSetPreviewMode(bPreview, pState);
  228. }