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 "CustomizeDlg.h"
  22. #include "CustomizePageTools.h"
  23. #include "ControlTools.h"
  24. #include "MainFrm.h"
  25. #ifdef _DEBUG
  26. #define new DEBUG_NEW
  27. #undef THIS_FILE
  28. static char THIS_FILE[] = __FILE__;
  29. #endif
  30. /////////////////////////////////////////////////////////////////////////////
  31. // CMainFrame
  32. IMPLEMENT_DYNAMIC(CMainFrame, CMDIFrameWnd)
  33. BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWnd)
  34. //{{AFX_MSG_MAP(CMainFrame)
  35. ON_WM_CREATE()
  36. ON_WM_CLOSE()
  37. ON_WM_GETMINMAXINFO()
  38. //}}AFX_MSG_MAP
  39. ON_COMMAND(XTP_ID_CUSTOMIZE, OnCustomize)
  40. ON_XTP_CREATECONTROL()
  41. ON_XTP_EXECUTE(ID_TOOLS_TOOLITEM, OnToolsItem)
  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. static const TCHAR _lpszProfile[]        = _T("CommandBarsProfile3");
  51. /////////////////////////////////////////////////////////////////////////////
  52. // CMainFrame construction/destruction
  53. CMainFrame::CMainFrame()
  54. {
  55. // TODO: add member initialization code here
  56. }
  57. CMainFrame::~CMainFrame()
  58. {
  59. }
  60. int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
  61. {
  62. if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1)
  63. return -1;
  64. // Create Status bar.
  65. // Important: All control bars including the Status Bar
  66. // must be created before CommandBars....
  67. if (!m_wndStatusBar.Create(this) ||
  68. !m_wndStatusBar.SetIndicators(indicators,
  69. sizeof(indicators)/sizeof(UINT)))
  70. {
  71. TRACE0("Failed to create status barn");
  72. return -1;      // fail to create
  73. }
  74. // Initialize the command bars
  75. if (!InitCommandBars())
  76. return -1;
  77. // Get a pointer to the command bars object.
  78. CXTPCommandBars* pCommandBars = GetCommandBars();
  79. if(pCommandBars == NULL)
  80. {
  81. TRACE0("Failed to create command bars object.n");
  82. return -1;      // fail to create
  83. }
  84. // Add the menu bar
  85. CXTPMenuBar* pMenuBar = pCommandBars->SetMenu(
  86. _T("Menu Bar"), IDR_MAINFRAME);
  87. if(pMenuBar == NULL)
  88. {
  89. TRACE0("Failed to create menu bar.n");
  90. return -1;      // fail to create
  91. }
  92. pMenuBar->SetFlags(xtpFlagAddMDISysPopup);
  93. pMenuBar->AddMDIMenu(IDR_CUSTOMTYPE);
  94. // Create ToolBar
  95. CXTPToolBar* pToolBar = (CXTPToolBar*)
  96. pCommandBars->Add(_T("Standard"), xtpBarTop);
  97. if (!pToolBar || !pToolBar->LoadToolBar(IDR_MAINFRAME))
  98. {
  99. TRACE0("Failed to create toolbarn");
  100. return -1;
  101. }
  102. // Set Office 2003 Theme
  103. CXTPPaintManager::SetTheme(xtpThemeOffice2003);
  104. CXTPOffice2003Theme::LoadModernToolbarIcons(IDR_MAINFRAME);
  105. pCommandBars->GetShortcutManager()->SetAccelerators(IDR_MAINFRAME);
  106. pCommandBars->GetContextMenus()->Add(IDR_CONTEXT_MENU);
  107. LoadCommandBars(_lpszProfile);
  108. if (!CCustomizePageTools::LoadTools(_lpszProfile))
  109. {
  110. CToolRec toolNotepad(_T("Notepad"), _T("notepad.exe"));
  111. CToolRec toolPaint(_T("Paint"), _T("mspaint.exe"));
  112. CToolRec toolExplorer(_T("Explorer"), _T("explorer.exe"));
  113. CCustomizePageTools::m_lstTools.AddTail(toolNotepad);
  114. CCustomizePageTools::m_lstTools.AddTail(toolPaint);
  115. CCustomizePageTools::m_lstTools.AddTail(toolExplorer);
  116. CCustomizePageTools::UpdateIcons();
  117. }
  118. return 0;
  119. }
  120. BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
  121. {
  122. if( !CMDIFrameWnd::PreCreateWindow(cs) )
  123. return FALSE;
  124. cs.lpszClass = _T("XTPMainFrame");
  125. CXTPDrawHelpers::RegisterWndClass(AfxGetInstanceHandle(), cs.lpszClass, 
  126. CS_DBLCLKS, AfxGetApp()->LoadIcon(IDR_MAINFRAME));
  127. return TRUE;
  128. }
  129. /////////////////////////////////////////////////////////////////////////////
  130. // CMainFrame diagnostics
  131. #ifdef _DEBUG
  132. void CMainFrame::AssertValid() const
  133. {
  134. CMDIFrameWnd::AssertValid();
  135. }
  136. void CMainFrame::Dump(CDumpContext& dc) const
  137. {
  138. CMDIFrameWnd::Dump(dc);
  139. }
  140. #endif //_DEBUG
  141. /////////////////////////////////////////////////////////////////////////////
  142. // CMainFrame message handlers
  143. void CMainFrame::OnCustomize()
  144. {
  145. CXTPCustomizeSheet cs(GetCommandBars());
  146. CXTPCustomizeKeyboardPage pageKeyboard(&cs);
  147. cs.AddPage(&pageKeyboard);
  148. pageKeyboard.AddCategories(IDR_CUSTOMTYPE);
  149. CXTPCustomizeMenusPage pageMenus(&cs);
  150. cs.AddPage(&pageMenus);
  151. CCustomizePageTools pageTools;
  152. cs.AddPage(&pageTools);
  153. CXTPCustomizeOptionsPage pageOptions(&cs);
  154. cs.AddPage(&pageOptions);
  155. CXTPCustomizeCommandsPage* pCommands = cs.GetCommandsPage();
  156. pCommands->AddCategories(IDR_CUSTOMTYPE);
  157. pCommands->InsertAllCommandsCategory();
  158. pCommands->InsertBuiltInMenus(IDR_CUSTOMTYPE);
  159. pCommands->InsertNewMenuCategory();
  160. cs.DoModal();
  161. }
  162. void CMainFrame::OnClose()
  163. {
  164. SaveCommandBars(_lpszProfile);
  165. CCustomizePageTools::SaveTools(_lpszProfile);
  166. CMDIFrameWnd::OnClose();
  167. }
  168. int CMainFrame::OnCreateControl(LPCREATECONTROLSTRUCT lpCreateControl)
  169. {
  170. if (lpCreateControl->nID == ID_TOOLS_TOOLS)
  171. {
  172. lpCreateControl->pControl = new CControlTools();
  173. return TRUE;
  174. }
  175. return FALSE;
  176. }
  177. void CMainFrame::OnToolsItem(NMHDR* pNMHDR, LRESULT* pResult)
  178. {
  179. CXTPControl* pControl = ((NMXTPCONTROL*)pNMHDR)->pControl;
  180. CToolRec* pTool = (CToolRec*)pControl->GetTag();
  181. if (!pTool)
  182. return;
  183. CString strArg = pTool->m_strArg;
  184. CString strDir = pTool->m_strDir;
  185. // launch the process.
  186. ::ShellExecute( NULL, _T( "open" ), pTool->m_strCmd, strArg, strDir, SW_SHOW);
  187. *pResult = 1;
  188. }
  189. void CMainFrame::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI)
  190. {
  191. lpMMI->ptMinTrackSize.x = 400;
  192. lpMMI->ptMinTrackSize.y = 400;
  193. CMDIFrameWnd::OnGetMinMaxInfo(lpMMI);
  194. }