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

对话框与窗口

开发平台:

Visual C++

  1. // XTPFrameWnd.h : interface for the CXTPFrameWnd and CXTPMDIFrameWnd classes.
  2. //
  3. // This file is a part of the XTREME COMMANDBARS 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. //{{AFX_CODEJOCK_PRIVATE
  21. #if !defined(__XTPFRAMEWND_H__)
  22. #define __XTPFRAMEWND_H__
  23. //}}AFX_CODEJOCK_PRIVATE
  24. #if _MSC_VER >= 1000
  25. #pragma once
  26. #endif // _MSC_VER >= 1000
  27. #include "Resource.h"
  28. #include "XTPCommandBars.h"
  29. #include "XTPPaintManager.h"
  30. #include "XTPControlComboBox.h"
  31. #include "XTPShortcutManager.h"
  32. //===========================================================================
  33. // Summary:
  34. //     CXTPCommandBarsSiteBase is a stand alone class. It represents site for Command Bars object
  35. //===========================================================================
  36. template <class TBase>
  37. class CXTPCommandBarsSiteBase : public TBase
  38. {
  39. public:
  40. //-----------------------------------------------------------------------
  41. // Summary:
  42. //     Constructs a CXTPCommandBarsSiteBase object
  43. //-----------------------------------------------------------------------
  44. CXTPCommandBarsSiteBase()
  45. {
  46. m_pCommandBars = 0;
  47. }
  48. //-----------------------------------------------------------------------
  49. // Summary:
  50. //     Destroys a CXTPCommandBarsSiteBase object, handles cleanup and deallocation
  51. //-----------------------------------------------------------------------
  52. ~CXTPCommandBarsSiteBase()
  53. {
  54. if (m_pCommandBars)
  55. {
  56. m_pCommandBars->InternalRelease();
  57. }
  58. }
  59. //-----------------------------------------------------------------------
  60. // Summary:
  61. //     Creates command bars.
  62. // Parameters:
  63. //     pCommandBarsClass - Custom runtime class of CommandBars. It can be used if you want to override
  64. //                         some methods of CXTPCommandBars class.
  65. // Returns:
  66. //     Nonzero if successful; otherwise 0.
  67. //-----------------------------------------------------------------------
  68. BOOL InitCommandBars(CRuntimeClass* pCommandBarsClass = RUNTIME_CLASS(CXTPCommandBars))
  69. {
  70. ASSERT(pCommandBarsClass->IsDerivedFrom(RUNTIME_CLASS(CXTPCommandBars)));
  71. m_pCommandBars =  (CXTPCommandBars*) pCommandBarsClass->CreateObject();
  72. ASSERT(m_pCommandBars);
  73. if (!m_pCommandBars)
  74. return FALSE;
  75. m_pCommandBars->SetSite(this);
  76. m_pCommandBars->EnableDocking();
  77. return TRUE;
  78. }
  79. //-----------------------------------------------------------------------
  80. // Summary:
  81. //     This member function will re-dock a toolbar specified by 'pBarToDock'
  82. //     to the right of a newly docked toolbar specified by 'pBarOnLeft'.
  83. // Parameters:
  84. //     pBarToDock - A CXTPToolBar pointer to the toolbar to be docked.
  85. //     pBarOnLeft - A CXTPToolBar pointer to the already docked toolbar.
  86. //-----------------------------------------------------------------------
  87. void DockRightOf(CXTPToolBar* pBarToDock, CXTPToolBar* pBarOnLeft)
  88. {
  89. RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, AFX_IDW_PANE_FIRST);
  90. CXTPWindowRect rcBar(pBarOnLeft);
  91. if (IsVerticalPosition(pBarOnLeft->GetPosition())) rcBar.OffsetRect(0, rcBar.Height());
  92. else rcBar.OffsetRect(rcBar.Width(), 0);
  93. GetCommandBars()->DockCommandBar(pBarToDock, rcBar, pBarOnLeft->GetDockBar());
  94. }
  95. //-----------------------------------------------------------------------
  96. // Summary:
  97. //     Call this function to save the state information to the registry
  98. //     or .INI file.
  99. // Parameters:
  100. //     lpszProfileName - Points to a null-terminated string that specifies
  101. //                       the name of a section in the initialization file
  102. //                       or a key in the Windows registry where state
  103. //                       information is stored.
  104. //-----------------------------------------------------------------------
  105. void SaveCommandBars(LPCTSTR lpszProfileName)
  106. {
  107. if (m_pCommandBars)
  108. {
  109. m_pCommandBars->SaveOptions(lpszProfileName);
  110. m_pCommandBars->SaveBarState(lpszProfileName);
  111. m_pCommandBars->GetShortcutManager()->SaveShortcuts(lpszProfileName);
  112. }
  113. }
  114. //-----------------------------------------------------------------------
  115. // Summary:
  116. //     Call this function to retrieve state information from the registry
  117. //     or .INI file.
  118. // Parameters:
  119. //     lpszProfileName - Points to a null-terminated string that specifies
  120. //                       the name of a section in the initialization file
  121. //                       or a key in the Windows registry where state
  122. //                       information is stored.
  123. //     bSilent         - TRUE to disable user notifications when command bars are restore to their original state.
  124. //-----------------------------------------------------------------------
  125. void LoadCommandBars(LPCTSTR lpszProfileName, BOOL bSilent = FALSE)
  126. {
  127. if (m_pCommandBars)
  128. {
  129. m_pCommandBars->LoadOptions(lpszProfileName);
  130. m_pCommandBars->LoadBarState(lpszProfileName, bSilent);
  131. m_pCommandBars->GetShortcutManager()->LoadShortcuts(lpszProfileName);
  132. }
  133. }
  134. //----------------------------------------------------------------------
  135. // Summary:
  136. //     Call this member to retrieve a pointer to the CommandBars object.
  137. // Returns:
  138. //     Retrieves Command Bars object.
  139. //----------------------------------------------------------------------
  140. CXTPCommandBars* GetCommandBars() const { return m_pCommandBars; }
  141. //{{AFX_CODEJOCK_PRIVATE
  142. //----------------------------------------------------------------------
  143. // Summary: Deprecated.
  144. //----------------------------------------------------------------------
  145. CXTPShortcutManager* XTPShortcutManager()
  146. {
  147. return ((m_pCommandBars == NULL) ? NULL : m_pCommandBars->GetShortcutManager());
  148. }
  149. //}}AFX_CODEJOCK_PRIVATE
  150. //{{AFX_CODEJOCK_PRIVATE
  151. protected:
  152. virtual BOOL PreTranslateMessage(MSG* pMsg)
  153. {
  154. if ((pMsg->message >= WM_KEYFIRST && pMsg->message <= WM_KEYLAST)
  155. && (pMsg->wParam != VK_RETURN && pMsg->wParam != VK_TAB && pMsg->wParam != VK_ESCAPE))
  156. {
  157. CWnd* pWnd = CWnd::GetFocus();
  158. if (pWnd && pWnd->IsKindOf(RUNTIME_CLASS(CXTPEdit)))
  159. return FALSE;
  160. }
  161. if (TBase::PreTranslateMessage(pMsg))
  162. return TRUE;
  163. if (m_pCommandBars && m_pCommandBars->PreTranslateFrameMessage(pMsg))
  164. return TRUE;
  165. return FALSE;
  166. }
  167. virtual BOOL OnWndMsg(UINT message, WPARAM wParam, LPARAM lParam, LRESULT* pResult)
  168. {
  169. if (m_pCommandBars && m_pCommandBars->OnFrameWndMsg(message, wParam, lParam, pResult))
  170. return TRUE;
  171. return TBase::OnWndMsg(message, wParam, lParam, pResult);
  172. }
  173. //}}AFX_CODEJOCK_PRIVATE
  174. private:
  175. CXTPCommandBars* m_pCommandBars;
  176. };
  177. //===========================================================================
  178. // Summary:
  179. //     CXTPFrameWndBase is a stand alone class. It represents the parent
  180. //     class for a CXTPMDIFrameWnd and CXTPFrameWnd classes .
  181. //===========================================================================
  182. template <class TBase>
  183. class CXTPFrameWndBase : public CXTPCommandBarsSiteBase<TBase>
  184. {
  185. public:
  186. //-----------------------------------------------------------------------
  187. // Summary:
  188. //     Constructs a CXTPFrameWndBase object
  189. //-----------------------------------------------------------------------
  190. CXTPFrameWndBase()
  191. {
  192. }
  193. //-----------------------------------------------------------------------
  194. // Summary:
  195. //     Destroys a CXTPFrameWndBase object, handles cleanup and deallocation
  196. //-----------------------------------------------------------------------
  197. ~CXTPFrameWndBase()
  198. {
  199. }
  200. //{{AFX_CODEJOCK_PRIVATE
  201. public:
  202. BOOL LoadFrame(UINT nIDResource, DWORD dwDefaultStyle = WS_OVERLAPPEDWINDOW | FWS_ADDTOTITLE,
  203. CWnd* pParentWnd = NULL, CCreateContext* pContext = NULL)
  204. {
  205. BOOL bResult = CXTPCommandBarsSiteBase<TBase>::LoadFrame(nIDResource, dwDefaultStyle, pParentWnd, pContext);
  206. if (!bResult)
  207. return FALSE;
  208. if (GetCommandBars() && GetCommandBars()->GetShortcutManager()->GetOriginalAccelerator())
  209. {
  210. m_hAccelTable = NULL;
  211. }
  212. return TRUE;
  213. }
  214. void OnSetPreviewMode(BOOL bPreview, CPrintPreviewState* pState)
  215. {
  216. if (GetCommandBars())
  217. {
  218. GetCommandBars()->OnSetPreviewMode(bPreview);
  219. }
  220. CXTPCommandBarsSiteBase<TBase>::OnSetPreviewMode(bPreview, pState);
  221. }
  222. //}}AFX_CODEJOCK_PRIVATE
  223. };
  224. //===========================================================================
  225. // Summary:
  226. //     CXTPMDIFrameWnd is a CXTPFrameWndBase derived class.
  227. //===========================================================================
  228. class _XTP_EXT_CLASS CXTPMDIFrameWnd : public CXTPFrameWndBase<CMDIFrameWnd>
  229. {
  230. public:
  231. DECLARE_DYNAMIC(CXTPMDIFrameWnd)
  232. //-----------------------------------------------------------------------
  233. // Summary:
  234. //     Constructs a CXTPMDIFrameWnd object
  235. //-----------------------------------------------------------------------
  236. CXTPMDIFrameWnd();
  237. //{{AFX_CODEJOCK_PRIVATE
  238. virtual BOOL OnCmdMsg(UINT nID, int nCode, void* pExtra,
  239. AFX_CMDHANDLERINFO* pHandlerInfo)
  240. {
  241. if (nID >= XTP_ID_WORKSPACE_MOVEPREVIOUS && nID <= XTP_ID_WORKSPACE_NEWVERTICAL)
  242. {
  243. CWnd* pWnd = CWnd::FromHandlePermanent(m_hWndMDIClient);
  244. if (pWnd && pWnd->OnCmdMsg(nID, nCode, pExtra, pHandlerInfo))
  245. return TRUE;
  246. }
  247. // then pump through normal frame
  248. return CMDIFrameWnd::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo);
  249. }
  250. //}}AFX_CODEJOCK_PRIVATE
  251. };
  252. //===========================================================================
  253. // Summary:
  254. //     CXTPFrameWnd is a CXTPFrameWndBase derived class.
  255. //===========================================================================
  256. class _XTP_EXT_CLASS CXTPFrameWnd : public CXTPFrameWndBase<CFrameWnd>
  257. {
  258. public:
  259. DECLARE_DYNAMIC(CXTPFrameWnd)
  260. //-----------------------------------------------------------------------
  261. // Summary:
  262. //     Constructs a CXTPFrameWnd object
  263. //-----------------------------------------------------------------------
  264. CXTPFrameWnd();
  265. };
  266. #endif // #if !defined(__XTPFRAMEWND_H__)