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

对话框与窗口

开发平台:

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 "ExcelTab.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. /////////////////////////////////////////////////////////////////////////////
  29. // CMainFrame
  30. IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)
  31. BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
  32. //{{AFX_MSG_MAP(CMainFrame)
  33. ON_WM_CREATE()
  34. ON_COMMAND(ID_VIEW_THEME_OFFICEXP, OnViewThemeOfficeXP)
  35. ON_UPDATE_COMMAND_UI(ID_VIEW_THEME_OFFICEXP, OnUpdateViewThemeOfficeXP)
  36. //}}AFX_MSG_MAP
  37. ON_WM_CLOSE()
  38. ON_COMMAND(XTP_ID_CUSTOMIZE, OnCustomize)
  39. ON_XTP_CREATECONTROL()
  40. END_MESSAGE_MAP()
  41. static UINT indicators[] =
  42. {
  43. ID_SEPARATOR,           // status line indicator
  44. ID_INDICATOR_CAPS,
  45. ID_INDICATOR_NUM,
  46. ID_INDICATOR_SCRL,
  47. };
  48. /////////////////////////////////////////////////////////////////////////////
  49. // CMainFrame construction/destruction
  50. CMainFrame::CMainFrame()
  51. {
  52. // TODO: add member initialization code here
  53. // initialize themes.
  54. m_iTheme = m_regMgr.GetProfileInt(
  55. _T("Settings"), _T("Theme"), xtThemeOfficeXP);
  56. }
  57. CMainFrame::~CMainFrame()
  58. {
  59. m_regMgr.WriteProfileInt(
  60. _T("Settings"), _T("Theme"), m_iTheme);
  61. }
  62. int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
  63. {
  64. if (CMainFrameBase::OnCreate(lpCreateStruct) == -1)
  65. return -1;
  66. if (!m_wndStatusBar.Create(this) ||
  67. !m_wndStatusBar.SetIndicators(indicators,
  68.   sizeof(indicators)/sizeof(UINT)))
  69. {
  70. TRACE0("Failed to create status barn");
  71. return -1;      // fail to create
  72. }
  73. if (!InitCommandBars())
  74. return -1;
  75. CXTPCommandBars* pCommandBars = GetCommandBars();
  76. if(pCommandBars == NULL)
  77. {
  78. TRACE0("Failed to create command bars object.n");
  79. return -1;      // fail to create
  80. }
  81. pCommandBars->SetMenu(_T("Menu Bar"), IDR_MAINFRAME);
  82. CXTPToolBar* pCommandBar = (CXTPToolBar*)pCommandBars->Add(_T("Standard"), xtpBarTop);
  83. if (!pCommandBar ||
  84. !pCommandBar->LoadToolBar(IDR_MAINFRAME))
  85. {
  86. TRACE0("Failed to create toolbarn");
  87. return -1;
  88. }
  89. // Load the previous state for command bars.
  90. LoadCommandBars(_T("CommandBars"));
  91. SetTheme(m_iTheme);
  92. return 0;
  93. }
  94. BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
  95. {
  96. if( !CMainFrameBase::PreCreateWindow(cs) )
  97. return FALSE;
  98. cs.lpszClass = _T("XTPMainFrame");
  99. CXTPDrawHelpers::RegisterWndClass(AfxGetInstanceHandle(), cs.lpszClass, 
  100. CS_DBLCLKS, AfxGetApp()->LoadIcon(IDR_MAINFRAME));
  101. cs.style &= ~FWS_ADDTOTITLE;
  102. return TRUE;
  103. }
  104. /////////////////////////////////////////////////////////////////////////////
  105. // CMainFrame diagnostics
  106. #ifdef _DEBUG
  107. void CMainFrame::AssertValid() const
  108. {
  109. CMainFrameBase::AssertValid();
  110. }
  111. void CMainFrame::Dump(CDumpContext& dc) const
  112. {
  113. CMainFrameBase::Dump(dc);
  114. }
  115. #endif //_DEBUG
  116. /////////////////////////////////////////////////////////////////////////////
  117. // CMainFrame message handlers
  118. void CMainFrame::OnClose()
  119. {
  120. // Save the current state for command bars.
  121. SaveCommandBars(_T("CommandBars"));
  122. CMainFrameBase::OnClose();
  123. }
  124. void CMainFrame::OnCustomize()
  125. {
  126. // get a pointer to the command bars object.
  127. CXTPCommandBars* pCommandBars = GetCommandBars();
  128. if (pCommandBars == NULL)
  129. return;
  130. // instanciate the customize dialog
  131. CXTPCustomizeSheet dlg(pCommandBars);
  132. // add the options page to the customize dialog.
  133. CXTPCustomizeOptionsPage pageOptions(&dlg);
  134. dlg.AddPage(&pageOptions);
  135. // add the commands page to the customize dialog.
  136. CXTPCustomizeCommandsPage* pPageCommands = dlg.GetCommandsPage();
  137. pPageCommands->AddCategories(IDR_MAINFRAME);
  138. // initialize the commands page page.
  139. pPageCommands->InsertAllCommandsCategory();
  140. pPageCommands->InsertBuiltInMenus(IDR_MAINFRAME);
  141. pPageCommands->InsertNewMenuCategory();
  142. // display the customize dialog.
  143. dlg.DoModal();
  144. }
  145. int CMainFrame::OnCreateControl(LPCREATECONTROLSTRUCT lpCreateControl)
  146. {
  147. if (lpCreateControl->nID == ID_EXCELTAB_PROPERTIES)
  148. {
  149. lpCreateControl->buttonStyle = xtpButtonIconAndCaption;
  150. return TRUE;
  151. }
  152. return FALSE;
  153. }
  154. void CMainFrame::SetTheme(int iTheme)
  155. {
  156. m_iTheme = iTheme;
  157. XTThemeManager()->SetTheme((XTThemeStyle)m_iTheme);
  158. XTPPaintManager()->SetTheme((XTPPaintTheme)m_iTheme);
  159. RedrawWindow( NULL, NULL,
  160. RDW_INVALIDATE | RDW_UPDATENOW | RDW_ERASE | RDW_ALLCHILDREN );
  161. RecalcLayout();
  162. }
  163. void CMainFrame::OnViewThemeOfficeXP() 
  164. {
  165. SetTheme((m_iTheme == xtThemeOfficeXP)? xtThemeDefault: xtThemeOfficeXP);
  166. }
  167. void CMainFrame::OnUpdateViewThemeOfficeXP(CCmdUI* pCmdUI) 
  168. {
  169. pCmdUI->SetCheck(m_iTheme == xtThemeOfficeXP);
  170. }