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 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 
  7. // BE RE-DISTRIBUTED BY ANY MEANS WHATSOEVER WITHOUT THE EXPRESSED 
  8. // WRITTEN CONSENT OF CODEJOCK SOFTWARE.
  9. //
  10. // THIS SOURCE CODE CAN ONLY BE USED UNDER THE TERMS AND CONDITIONS 
  11. // OUTLINED IN THE XTREME TOOLKIT LICENSE AGREEMENT.  CODEJOCK SOFTWARE 
  12. // GRANTS TO YOU (ONE SOFTWARE DEVELOPER) THE LIMITED RIGHT TO USE 
  13. // THIS SOFTWARE ON A SINGLE COMPUTER.
  14. //
  15. // CONTACT INFORMATION:
  16. // support@codejock.com
  17. // http://www.codejock.com
  18. //
  19. //////////////////////////////////////////////////////////////////////
  20. #include "stdafx.h"
  21. #include "TabbedView.h"
  22. #include "MainFrm.h"
  23. #include "TabbedViewView.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_VIEW_THEME_OFFICEXP, OnViewThemeOfficeXP)
  36. ON_UPDATE_COMMAND_UI(ID_VIEW_THEME_OFFICEXP, OnUpdateViewThemeOfficeXP)
  37. //}}AFX_MSG_MAP
  38. ON_WM_CLOSE()
  39. ON_COMMAND(XTP_ID_CUSTOMIZE, OnCustomize)
  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. // initialize themes.
  53. m_iTheme = m_regMgr.GetProfileInt(
  54. _T("Settings"), _T("Theme"), xtThemeOfficeXP);
  55. }
  56. CMainFrame::~CMainFrame()
  57. {
  58. m_regMgr.WriteProfileInt(
  59. _T("Settings"), _T("Theme"), m_iTheme);
  60. }
  61. int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
  62. {
  63. if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1)
  64. return -1;
  65. if (!m_wndStatusBar.Create(this) ||
  66. !m_wndStatusBar.SetIndicators(indicators,
  67. sizeof(indicators)/sizeof(UINT)))
  68. {
  69. TRACE0("Failed to create status barn");
  70. return -1;      // fail to create
  71. }
  72. if (!InitCommandBars())
  73. return -1;
  74. CXTPCommandBars* pCommandBars = GetCommandBars();
  75. pCommandBars->SetMenu(_T("Menu Bar"), IDR_MAINFRAME);
  76. CXTPToolBar* pCommandBar = (CXTPToolBar*)pCommandBars->Add(_T("Standard"), xtpBarTop);
  77. if (!pCommandBar ||
  78. !pCommandBar->LoadToolBar(IDR_MAINFRAME))
  79. {
  80. TRACE0("Failed to create toolbarn");
  81. return -1;
  82. }
  83. // Load the previous state for command bars.
  84. LoadCommandBars(_T("CommandBars"));
  85. SetTheme(m_iTheme);
  86. return 0;
  87. }
  88. BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
  89. {
  90. if( !CMDIFrameWnd::PreCreateWindow(cs) )
  91. return FALSE;
  92. cs.lpszClass = _T("XTPMainFrame");
  93. CXTPDrawHelpers::RegisterWndClass(AfxGetInstanceHandle(), cs.lpszClass, 
  94. CS_DBLCLKS, AfxGetApp()->LoadIcon(IDR_MAINFRAME));
  95. return TRUE;
  96. }
  97. /////////////////////////////////////////////////////////////////////////////
  98. // CMainFrame diagnostics
  99. #ifdef _DEBUG
  100. void CMainFrame::AssertValid() const
  101. {
  102. CMDIFrameWnd::AssertValid();
  103. }
  104. void CMainFrame::Dump(CDumpContext& dc) const
  105. {
  106. CMDIFrameWnd::Dump(dc);
  107. }
  108. #endif //_DEBUG
  109. /////////////////////////////////////////////////////////////////////////////
  110. // CMainFrame message handlers
  111. void CMainFrame::SetTheme(int iTheme)
  112. {
  113. m_iTheme = iTheme;
  114. XTThemeManager()->SetTheme((XTThemeStyle)m_iTheme);
  115. XTPPaintManager()->SetTheme((XTPPaintTheme)m_iTheme);
  116. CMDIChildWnd* pActiveChild = (CMDIChildWnd*)MDIGetActive();
  117. if (pActiveChild != NULL)
  118. {
  119. // Get the first top-level window in the list.
  120. CMDIChildWnd* pChildFrame = (CMDIChildWnd*)pActiveChild->GetWindow(GW_HWNDLAST);
  121. while (pChildFrame != NULL)
  122. {
  123. CTabbedViewView* pActiveView = (CTabbedViewView*)pChildFrame->GetActiveView();
  124. if (pActiveView != NULL)
  125. {
  126. pActiveView->UpdateTabBorders();
  127. }
  128. pChildFrame = (CMDIChildWnd*)pChildFrame->GetWindow(GW_HWNDPREV);
  129. }
  130. }
  131. RedrawWindow( NULL, NULL,
  132. RDW_INVALIDATE | RDW_UPDATENOW | RDW_ERASE | RDW_ALLCHILDREN );
  133. }
  134. void CMainFrame::OnViewThemeOfficeXP() 
  135. {
  136. SetTheme((m_iTheme == xtThemeOfficeXP)? xtThemeDefault: xtThemeOfficeXP);
  137. }
  138. void CMainFrame::OnUpdateViewThemeOfficeXP(CCmdUI* pCmdUI) 
  139. {
  140. pCmdUI->SetCheck(m_iTheme == xtThemeOfficeXP);
  141. }
  142. void CMainFrame::OnCustomize()
  143. {
  144.     // Get a pointer to the Command Bar object.
  145.     CXTPCommandBars* pCommandBars = GetCommandBars();
  146.     if(pCommandBars != NULL)
  147.     {
  148.         // Instanciate the customize dialog object.
  149.         CXTPCustomizeSheet dlg(pCommandBars);
  150.         // Add the options page to the customize dialog.
  151.         CXTPCustomizeOptionsPage pageOptions(&dlg);
  152.         dlg.AddPage(&pageOptions);
  153.         // Add the commands page to the customize dialog.
  154.         CXTPCustomizeCommandsPage* pCommands = dlg.GetCommandsPage();
  155.         pCommands->AddCategories(IDR_MDITABTYPE);
  156.         // Use the command bar manager to initialize the 
  157.         // customize dialog.
  158.         pCommands->InsertAllCommandsCategory();
  159.         pCommands->InsertBuiltInMenus(IDR_MDITABTYPE);
  160.         pCommands->InsertNewMenuCategory();
  161.         // Dispaly the dialog.
  162.         dlg.DoModal();
  163.     }
  164. }
  165. void CMainFrame::OnClose() 
  166. {
  167.     // Save the current state for toolbars and menus.
  168.     SaveCommandBars(_T("CommandBars"));
  169.     CMainFrameBase::OnClose();
  170. }