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

对话框与窗口

开发平台:

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 "ToolBoxDemo.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. //}}AFX_MSG_MAP
  35. ON_WM_CLOSE()
  36. ON_COMMAND(XTP_ID_CUSTOMIZE, OnCustomize)
  37. ON_MESSAGE(XTWM_OUTBAR_NOTIFY, OnToolBoxNotify)
  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. /////////////////////////////////////////////////////////////////////////////
  47. // CMainFrame construction/destruction
  48. CMainFrame::CMainFrame()
  49. {
  50. // initialize themes.
  51. m_iTheme = m_regMgr.GetProfileInt(
  52. _T("Settings"), _T("Theme"), xtThemeOfficeXP);
  53. }
  54. CMainFrame::~CMainFrame()
  55. {
  56. m_regMgr.WriteProfileInt(
  57. _T("Settings"), _T("Theme"), m_iTheme);
  58. }
  59. int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
  60. {
  61. if (CFrameWnd::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. CXTPCommandBars* pCommandBars = GetCommandBars();
  73. pCommandBars->SetMenu(_T("Menu Bar"), IDR_MAINFRAME);
  74. CXTPToolBar* pCommandBar = (CXTPToolBar*)pCommandBars->Add(_T("Standard"), xtpBarTop);
  75. if (!pCommandBar ||
  76. !pCommandBar->LoadToolBar(IDR_MAINFRAME))
  77. {
  78. TRACE0("Failed to create toolbarn");
  79. return -1;
  80. }
  81. // Load the previous state for command bars.
  82. LoadCommandBars(_T("CommandBars"));
  83. SetTheme(m_iTheme);
  84. return 0;
  85. }
  86. void CMainFrame::InitToolBoxBar()
  87. {
  88. // create the image list used by the outloook bar.
  89. if ( !m_ilToolBox.Create( IDB_TOOLBOX, 16, 1, RGB( 0x00,0xff,0x00 ) ) )
  90. {
  91. TRACE0( "Failed to create image list.n" );
  92. return;
  93. }
  94. // create the outlook bar control used by the docking window.
  95. if ( !m_wndToolBox.Create( WS_CHILD|WS_VISIBLE,
  96. CRect( 0,0,200,200 ), &m_wndSplitter, m_wndSplitter.IdFromRowCol(0, 0), OBS_XT_DEFAULT ) )
  97. {
  98. TRACE0( "Failed to create outlook bar control.n" );
  99. return;
  100. }
  101. // set the image lists for the outlook bar.
  102. m_wndToolBox.SetImageList( &m_ilToolBox, OBS_XT_LARGEICON );
  103. m_wndToolBox.SetImageList( &m_ilToolBox, OBS_XT_SMALLICON );
  104. // Add the first folder to the outlook bar.
  105. int iFolder = m_wndToolBox.AddFolder(_T("Dialog Editor"), 0);
  106. // Add items to the folder, syntax is folder, index, text, image, and item data.
  107. m_wndToolBox.InsertItem( iFolder, 1,  _T( "Pointer" ),              0,  NULL );
  108. m_wndToolBox.InsertItem( iFolder, 2,  _T( "Button" ),               1,  NULL );
  109. m_wndToolBox.InsertItem( iFolder, 3,  _T( "Check Box" ),                2,  NULL );
  110. m_wndToolBox.InsertItem( iFolder, 4,  _T( "Edit Control" ),         3,  NULL );
  111. m_wndToolBox.InsertItem( iFolder, 5,  _T( "Combo Box" ),                4,  NULL );
  112. m_wndToolBox.InsertItem( iFolder, 6,  _T( "List Box" ),             5,  NULL );
  113. m_wndToolBox.InsertItem( iFolder, 7,  _T( "Group Box" ),                6,  NULL );
  114. m_wndToolBox.InsertItem( iFolder, 8,  _T( "Radio Button" ),         7,  NULL );
  115. m_wndToolBox.InsertItem( iFolder, 9,  _T( "Static Text" ),          8,  NULL );
  116. m_wndToolBox.InsertItem( iFolder, 10, _T( "Picture Control" ),      9,  NULL );
  117. m_wndToolBox.InsertItem( iFolder, 11, _T( "Horizontal Scroll Bar" ),    10, NULL );
  118. m_wndToolBox.InsertItem( iFolder, 12, _T( "Vertical Scroll Bar" ),  11, NULL );
  119. m_wndToolBox.InsertItem( iFolder, 13, _T( "Slider Control" ),       12, NULL );
  120. m_wndToolBox.InsertItem( iFolder, 14, _T( "Spin Control" ),         13, NULL );
  121. m_wndToolBox.InsertItem( iFolder, 15, _T( "Progress Control" ),     14, NULL );
  122. m_wndToolBox.InsertItem( iFolder, 16, _T( "Hot Key" ),              15, NULL );
  123. m_wndToolBox.InsertItem( iFolder, 17, _T( "List Control" ),         16, NULL );
  124. m_wndToolBox.InsertItem( iFolder, 18, _T( "Tree Control" ),         17, NULL );
  125. m_wndToolBox.InsertItem( iFolder, 19, _T( "Tab Control" ),          18, NULL );
  126. m_wndToolBox.InsertItem( iFolder, 20, _T( "Animation Control" ),        19, NULL );
  127. m_wndToolBox.InsertItem( iFolder, 21, _T( "Rich Edit 2.0 Control" ),    20, NULL );
  128. m_wndToolBox.InsertItem( iFolder, 22, _T( "Date Time Picker" ),     21, NULL );
  129. m_wndToolBox.InsertItem( iFolder, 23, _T( "Month Calendar Control" ),22, NULL );
  130. m_wndToolBox.InsertItem( iFolder, 24, _T( "IP Address Control" ),   23, NULL );
  131. m_wndToolBox.InsertItem( iFolder, 25, _T( "Extended Combo Box" ),   24, NULL );
  132. m_wndToolBox.InsertItem( iFolder, 26, _T( "Custom Control" ),       25, NULL );
  133. // Disable items
  134. m_wndToolBox.EnableItem( iFolder, 2, false );
  135. m_wndToolBox.EnableItem( iFolder, 3, false );
  136. m_wndToolBox.EnableItem( iFolder, 7, false );
  137. // add the second folder
  138. iFolder = m_wndToolBox.AddFolder(_T("Clipboard Ring"), 0);
  139. m_wndToolBox.InsertItem( iFolder, 1,  _T( "Pointer" ), 0,  NULL );
  140. // add the second folder
  141. iFolder = m_wndToolBox.AddFolder(_T("General"), 0);
  142. m_wndToolBox.InsertItem( iFolder, 1,  _T( "Pointer" ), 0,  NULL );
  143. // change the owner to CMainFrame.
  144. m_wndToolBox.SetOwner( this );
  145. m_wndToolBox.SetSelItem(0,0);
  146. }
  147. BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
  148. {
  149. if( !CFrameWnd::PreCreateWindow(cs) )
  150. return FALSE;
  151. cs.lpszClass = _T("XTPMainFrame");
  152. CXTPDrawHelpers::RegisterWndClass(AfxGetInstanceHandle(), cs.lpszClass, 
  153. CS_DBLCLKS, AfxGetApp()->LoadIcon(IDR_MAINFRAME));
  154. cs.style |= WS_CLIPSIBLINGS|WS_CLIPCHILDREN;
  155. return TRUE;
  156. }
  157. /////////////////////////////////////////////////////////////////////////////
  158. // CMainFrame diagnostics
  159. #ifdef _DEBUG
  160. void CMainFrame::AssertValid() const
  161. {
  162. CFrameWnd::AssertValid();
  163. }
  164. void CMainFrame::Dump(CDumpContext& dc) const
  165. {
  166. CFrameWnd::Dump(dc);
  167. }
  168. #endif //_DEBUG
  169. /////////////////////////////////////////////////////////////////////////////
  170. // CMainFrame message handlers
  171. LRESULT CMainFrame::OnToolBoxNotify(WPARAM wParam, LPARAM lParam)
  172. {
  173. int nBarAction = (int)wParam;
  174. // Cast the lParam to a XT_OUTBAR_INFO* struct pointer.
  175. XT_OUTBAR_INFO* pOBInfo = (XT_OUTBAR_INFO*)lParam;
  176. ASSERT(pOBInfo);
  177. switch (nBarAction)
  178. {
  179. case OBN_XT_ITEMCLICK:
  180. case OBN_XT_FOLDERCHANGE:
  181. {
  182. CView* pView = GetActiveView();
  183. if (pView != NULL)
  184. {
  185. pView->Invalidate(); // update display.
  186. }
  187. }
  188. break;
  189. case OBN_XT_ONLABELENDEDIT:
  190. case OBN_XT_ONGROUPENDEDIT:
  191. case OBN_XT_DRAGITEM:
  192. case OBN_XT_ITEMHOVER:
  193. break;
  194. case OBN_XT_DELETEITEM:
  195. if (m_wndToolBox.IsWindowVisible() && AfxMessageBox(_T("Are you sure you want to remove this folder shortcut?"),
  196. MB_ICONWARNING|MB_YESNO) == IDNO)
  197. {
  198. // The user selected No, return FALSE to abort the action.
  199. return FALSE;
  200. }
  201. break;
  202. case OBN_XT_DELETEFOLDER:
  203. if (m_wndToolBox.IsWindowVisible() && AfxMessageBox(_T("Are you sure you want to remove the specified folder?"),
  204. MB_ICONWARNING|MB_YESNO) == IDNO)
  205. {
  206. // The user selected No, return FALSE to abort the action.
  207. return FALSE;
  208. }
  209. break;
  210. }
  211. return TRUE;
  212. }
  213. void CMainFrame::SetTheme(int iTheme)
  214. {
  215. m_iTheme = iTheme;
  216. XTThemeManager()->SetTheme((XTThemeStyle)m_iTheme);
  217. XTPPaintManager()->SetTheme((XTPPaintTheme)m_iTheme);
  218. RedrawWindow( NULL, NULL,
  219. RDW_INVALIDATE | RDW_UPDATENOW | RDW_ERASE | RDW_ALLCHILDREN );
  220. RecalcLayout();
  221. }
  222. void CMainFrame::OnClose()
  223. {
  224. // Save the current state for command bars.
  225. SaveCommandBars(_T("CommandBars"));
  226. CFrameWnd::OnClose();
  227. }
  228. void CMainFrame::OnCustomize()
  229. {
  230. // get a pointer to the command bars object.
  231. CXTPCommandBars* pCommandBars = GetCommandBars();
  232. if (pCommandBars == NULL)
  233. return;
  234. // instantiate the customize dialog
  235. CXTPCustomizeSheet dlg(pCommandBars);
  236. // add the options page to the customize dialog.
  237. CXTPCustomizeOptionsPage pageOptions(&dlg);
  238. dlg.AddPage(&pageOptions);
  239. // add the commands page to the customize dialog.
  240. CXTPCustomizeCommandsPage* pPageCommands = dlg.GetCommandsPage();
  241. pPageCommands->AddCategories(IDR_MAINFRAME);
  242. // initialize the commands page page.
  243. pPageCommands->InsertAllCommandsCategory();
  244. pPageCommands->InsertBuiltInMenus(IDR_MAINFRAME);
  245. pPageCommands->InsertNewMenuCategory();
  246. // display the customize dialog.
  247. dlg.DoModal();
  248. }
  249. BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT /*lpcs*/, CCreateContext* pContext) 
  250. {
  251. if (!m_wndSplitter.CreateStatic(this, 1, 2))
  252. return FALSE;
  253. InitToolBoxBar();
  254. m_wndSplitter.CreateView(0, 1, pContext->m_pNewViewClass, CSize(100, 100), pContext);
  255. m_wndSplitter.SetColumnInfo(0, 200, 0);
  256. return TRUE;
  257. }