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

对话框与窗口

开发平台:

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 "MDIPanes.h"
  22. #include "MainFrm.h"
  23. #include "ChildFrm.h"
  24. #ifdef _DEBUG
  25. #define new DEBUG_NEW
  26. #undef THIS_FILE
  27. static char THIS_FILE[] = __FILE__;
  28. #endif
  29. /////////////////////////////////////////////////////////////////////////////
  30. // CMainFrame
  31. IMPLEMENT_DYNAMIC(CMainFrame, CMDIFrameWnd)
  32. BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWnd)
  33. //{{AFX_MSG_MAP(CMainFrame)
  34. ON_WM_CREATE()
  35. ON_COMMAND(ID_THEME_DEFAULT, OnThemeDefault)
  36. ON_UPDATE_COMMAND_UI(ID_THEME_DEFAULT, OnUpdateThemeDefault)
  37. ON_COMMAND(ID_THEME_OFFICEXP, OnThemeOfficexp)
  38. ON_UPDATE_COMMAND_UI(ID_THEME_OFFICEXP, OnUpdateThemeOfficexp)
  39. //}}AFX_MSG_MAP
  40. ON_WM_CLOSE()
  41. ON_COMMAND(XTP_ID_CUSTOMIZE, OnCustomize)
  42. END_MESSAGE_MAP()
  43. static UINT indicators[] =
  44. {
  45. ID_SEPARATOR,           // status line indicator
  46. ID_INDICATOR_CAPS,
  47. ID_INDICATOR_NUM,
  48. ID_INDICATOR_SCRL,
  49. };
  50. /////////////////////////////////////////////////////////////////////////////
  51. // CMainFrame construction/destruction
  52. CMainFrame::CMainFrame()
  53. {
  54. // TODO: add member initialization code here
  55. }
  56. CMainFrame::~CMainFrame()
  57. {
  58. }
  59. int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
  60. {
  61. if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1)
  62. return -1;
  63. if (!m_wndStatusBar.Create(this) ||
  64. !m_wndStatusBar.SetIndicators(indicators,
  65.   sizeof(indicators)/sizeof(UINT)))
  66. {
  67. TRACE0("Failed to create status barn");
  68. return -1;      // fail to create
  69. }
  70. if (!InitCommandBars())
  71. return -1;
  72. XTPPaintManager()->SetTheme(xtpThemeOfficeXP);
  73. CXTPCommandBars* pCommandBars = GetCommandBars();
  74. pCommandBars->SetMenu(_T("Menu Bar"), IDR_MDIPANTYPE);
  75. CXTPToolBar* pCommandBar = (CXTPToolBar*)pCommandBars->Add(_T("Standard"), xtpBarTop);
  76. if (!pCommandBar ||
  77. !pCommandBar->LoadToolBar(IDR_MAINFRAME))
  78. {
  79. TRACE0("Failed to create toolbarn");
  80. return -1;
  81. }
  82. // Load the previous state for command bars.
  83. LoadCommandBars(_T("CommandBars"));
  84. //CXTPDockingPanePaintManager::SetTheme(xtpPaneThemeOffice);
  85. return 0;
  86. }
  87. BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
  88. {
  89. if( !CMDIFrameWnd::PreCreateWindow(cs) )
  90. return FALSE;
  91. cs.lpszClass = _T("XTPMainFrame");
  92. CXTPDrawHelpers::RegisterWndClass(AfxGetInstanceHandle(), cs.lpszClass, 
  93. CS_DBLCLKS, AfxGetApp()->LoadIcon(IDR_MAINFRAME));
  94. return TRUE;
  95. }
  96. /////////////////////////////////////////////////////////////////////////////
  97. // CMainFrame diagnostics
  98. #ifdef _DEBUG
  99. void CMainFrame::AssertValid() const
  100. {
  101. CMDIFrameWnd::AssertValid();
  102. }
  103. void CMainFrame::Dump(CDumpContext& dc) const
  104. {
  105. CMDIFrameWnd::Dump(dc);
  106. }
  107. #endif //_DEBUG
  108. /////////////////////////////////////////////////////////////////////////////
  109. // CMainFrame message handlers
  110. void CMainFrame::RedrawAll()
  111. {
  112. RecalcLayout(FALSE);
  113. GetCommandBars()->RedrawCommandBars();
  114. RedrawWindow();
  115. CWnd* pWndClient = CWnd::FromHandle(m_hWndMDIClient);
  116. CChildFrame* pWndChild = (CChildFrame*)pWndClient->GetWindow(GW_CHILD);
  117. while (pWndChild)
  118. {
  119. pWndChild->RecalcLayout(FALSE);
  120. pWndChild->GetCommandBars()->RedrawCommandBars();
  121. pWndChild->RedrawWindow();
  122. pWndChild->m_paneManager.SetTheme(CChildFrame::m_themeCurrent);
  123. pWndChild = (CChildFrame*)pWndChild->GetWindow(GW_HWNDNEXT);
  124. }
  125. }
  126. void CMainFrame::OnThemeDefault()
  127. {
  128. CXTPPaintManager::SetTheme(xtpThemeOffice2000);
  129. CChildFrame::m_themeCurrent = xtpPaneThemeDefault;
  130. RedrawAll();
  131. }
  132. void CMainFrame::OnUpdateThemeDefault(CCmdUI* pCmdUI)
  133. {
  134. pCmdUI->SetCheck(CChildFrame::m_themeCurrent == xtpPaneThemeDefault);
  135. }
  136. void CMainFrame::OnThemeOfficexp()
  137. {
  138. CXTPPaintManager::SetTheme(xtpThemeOfficeXP);
  139. CChildFrame::m_themeCurrent = xtpPaneThemeOffice;
  140. RedrawAll();
  141. }
  142. void CMainFrame::OnUpdateThemeOfficexp(CCmdUI* pCmdUI)
  143. {
  144. pCmdUI->SetCheck(CChildFrame::m_themeCurrent == xtpPaneThemeOffice);
  145. }
  146. void CMainFrame::OnClose()
  147. {
  148. // Save the current state for command bars.
  149. SaveCommandBars(_T("CommandBars"));
  150. // TODO: Add your message handler code here and/or call default
  151. CMDIFrameWnd::OnClose();
  152. }
  153. void CMainFrame::OnCustomize()
  154. {
  155. // get a pointer to the command bars object.
  156. CXTPCommandBars* pCommandBars = GetCommandBars();
  157. if (pCommandBars == NULL)
  158. return;
  159. // instanciate the customize dialog
  160. CXTPCustomizeSheet dlg(pCommandBars);
  161. // add the options page to the customize dialog.
  162. CXTPCustomizeOptionsPage pageOptions(&dlg);
  163. dlg.AddPage(&pageOptions);
  164. // add the commands page to the customize dialog.
  165. CXTPCustomizeCommandsPage* pPageCommands = dlg.GetCommandsPage();
  166. pPageCommands->AddCategories(IDR_MDIPANTYPE);
  167. // initialize the commands page page.
  168. pPageCommands->InsertAllCommandsCategory();
  169. pPageCommands->InsertBuiltInMenus(IDR_MDIPANTYPE);
  170. pPageCommands->InsertNewMenuCategory();
  171. // display the customize dialog.
  172. dlg.DoModal();
  173. }