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 "DesignerSample.h"
  22. #include "MainFrm.h"
  23. #include "CommandBars.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_WM_CLOSE()
  36. //}}AFX_MSG_MAP
  37. ON_COMMAND(XTP_ID_CUSTOMIZE, OnCustomize)
  38. END_MESSAGE_MAP()
  39. static UINT indicators[] =
  40. {
  41. ID_SEPARATOR,           // status line indicator
  42. ID_INDICATOR_CAPS,
  43. ID_INDICATOR_NUM,
  44. ID_INDICATOR_SCRL,
  45. };
  46. static LPCTSTR lpProfile = _T("CommandBars");
  47. /////////////////////////////////////////////////////////////////////////////
  48. // CMainFrame construction/destruction
  49. CMainFrame::CMainFrame()
  50. {
  51. // TODO: add member initialization code here
  52. }
  53. CMainFrame::~CMainFrame()
  54. {
  55. }
  56. int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
  57. {
  58. if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1)
  59. return -1;
  60. if (!m_wndStatusBar.Create(this) ||
  61. !m_wndStatusBar.SetIndicators(indicators,
  62. sizeof(indicators)/sizeof(UINT)))
  63. {
  64. TRACE0("Failed to create status barn");
  65. return -1;      // fail to create
  66. }
  67. if (!InitCommandBars())
  68. {
  69. return -1;      // fail to create
  70. }
  71. return 0;
  72. }
  73. void CMainFrame::GenerateCommandBars()
  74. {
  75. CXTPCommandBars* pCommandBars = GetCommandBars();
  76. pCommandBars->SetMenu(_T("Menu Bar"), 0);
  77. HRSRC hRsrs = FindResource(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDR_COMMANDBARS), _T("RT_RCDATA"));
  78. ASSERT(hRsrs);
  79. if (hRsrs)
  80. {
  81. HGLOBAL hGlobal = LoadResource(AfxGetInstanceHandle(), hRsrs);
  82. if (hGlobal)
  83. {
  84. DWORD dwSize = SizeofResource(AfxGetInstanceHandle(), hRsrs);
  85. LPVOID pData = LockResource(hGlobal);
  86. CMemFile file((BYTE*)pData, dwSize);
  87. CArchive ar(&file, CArchive::load | CArchive::bNoFlushOnDelete);
  88. pCommandBars->LoadDesignerBars(ar);
  89. }
  90. }
  91. }
  92. BOOL CMainFrame::LoadFrame(UINT nIDResource, DWORD dwDefaultStyle, CWnd* pParentWnd, CCreateContext* pContext)
  93. {
  94. if (!CMDIFrameWnd::LoadFrame(nIDResource, dwDefaultStyle, pParentWnd, pContext))
  95. return FALSE;
  96. GenerateCommandBars();
  97. LoadCommandBars(lpProfile);
  98. return TRUE;
  99. }
  100. void CMainFrame::OnClose()
  101. {
  102. SaveCommandBars(lpProfile);
  103. CMDIFrameWnd::OnClose();
  104. }
  105. void CMainFrame::OnCustomize()
  106. {
  107. CXTPCommandBars* pCommandBars = GetCommandBars();
  108. CXTPCustomizeSheet cs(pCommandBars);
  109. CXTPCustomizeKeyboardPage pageKeyboard(&cs);
  110. cs.AddPage(&pageKeyboard);
  111. pageKeyboard.AddCategories(pCommandBars->m_pDesignerControls);
  112. CXTPCustomizeOptionsPage pageOptions(&cs);
  113. cs.AddPage(&pageOptions);
  114. CXTPCustomizeCommandsPage* pCommands = cs.GetCommandsPage();
  115. if (pCommandBars->m_pDesignerControls != NULL)
  116. {
  117. pCommands->AddCategories(pCommandBars->m_pDesignerControls);
  118. }
  119. pCommands->InsertAllCommandsCategory();
  120. pCommands->InsertNewMenuCategory();
  121. cs.DoModal();
  122. }
  123. BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
  124. {
  125. if( !CMDIFrameWnd::PreCreateWindow(cs) )
  126. return FALSE;
  127. cs.lpszClass = _T("XTPMainFrame");
  128. CXTPDrawHelpers::RegisterWndClass(AfxGetInstanceHandle(), cs.lpszClass, 
  129. CS_DBLCLKS, AfxGetApp()->LoadIcon(IDR_MAINFRAME));
  130. return TRUE;
  131. }
  132. /////////////////////////////////////////////////////////////////////////////
  133. // CMainFrame diagnostics
  134. #ifdef _DEBUG
  135. void CMainFrame::AssertValid() const
  136. {
  137. CMDIFrameWnd::AssertValid();
  138. }
  139. void CMainFrame::Dump(CDumpContext& dc) const
  140. {
  141. CMDIFrameWnd::Dump(dc);
  142. }
  143. #endif //_DEBUG
  144. /////////////////////////////////////////////////////////////////////////////
  145. // CMainFrame message handlers