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

对话框与窗口

开发平台:

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(__XTPDIALOGBASE_H__)
  22. #define __XTPDIALOGBASE_H__
  23. //}}AFX_CODEJOCK_PRIVATE
  24. #if _MSC_VER >= 1000
  25. #pragma once
  26. #endif // _MSC_VER >= 1000
  27. //===========================================================================
  28. // Summary:
  29. //     CXTPDialogBase is a TBase derived class. It represents the parent
  30. //     class for a  CXTPDialog class .
  31. //===========================================================================
  32. template <class TBase>
  33. class CXTPDialogBase : public TBase
  34. {
  35. public:
  36. //-----------------------------------------------------------------------
  37. // Summary:
  38. //     Constructs a CXTPDialog object
  39. // Parameters:
  40. //     nIDTemplate - Contains the ID number of a dialog-template resource
  41. //     lpszTemplateName - Contains a null-terminated string that is
  42. //                        the name of a dialog-template resource
  43. //     pParentWnd  - Points to the parent of the DialogBase control
  44. //-----------------------------------------------------------------------
  45. CXTPDialogBase()
  46. {
  47. m_pCommandBars = 0;
  48. }
  49. CXTPDialogBase(UINT nIDTemplate, CWnd* pParentWnd = NULL)
  50. : TBase(nIDTemplate, pParentWnd)
  51. {
  52. m_pCommandBars = 0;
  53. }
  54. //<combine CXTPDialogBase::CXTPDialogBase>
  55. CXTPDialogBase(LPCTSTR lpszTemplateName, CWnd* pParentWnd = NULL)
  56. : TBase(lpszTemplateName, pParentWnd)
  57. {
  58. m_pCommandBars = 0;
  59. } //<combine CXTPDialogBase::CXTPDialogBase>
  60. //-----------------------------------------------------------------------
  61. // Summary:
  62. //     Destroys a CXTPDialogBase object, handles cleanup and deallocation
  63. //-----------------------------------------------------------------------
  64. ~CXTPDialogBase()
  65. {
  66. if (m_pCommandBars)
  67. {
  68. m_pCommandBars->InternalRelease();
  69. }
  70. }
  71. //-----------------------------------------------------------------------
  72. // Summary:
  73. //     Creates command bars.
  74. // Parameters:
  75. //     pCommandBarsClass - Custom runtime class of CommandBars. It can be used if you want to override
  76. //                         some methods of CXTPCommandBars class.
  77. // Returns:
  78. //     Nonzero if successful; otherwise 0.
  79. //-----------------------------------------------------------------------
  80. BOOL InitCommandBars(CRuntimeClass* pCommandBarsClass = RUNTIME_CLASS(CXTPCommandBars))
  81. {
  82. ASSERT(pCommandBarsClass->IsDerivedFrom(RUNTIME_CLASS(CXTPCommandBars)));
  83. m_pCommandBars =  (CXTPCommandBars*) pCommandBarsClass->CreateObject();
  84. ASSERT(m_pCommandBars);
  85. m_pCommandBars->SetSite(this);
  86. m_pCommandBars->EnableDocking();
  87. return TRUE;
  88. }
  89. //-----------------------------------------------------------------------
  90. // Summary:
  91. //     This member function will re-dock a toolbar specified by 'pBarToDock'
  92. //     to the right of a newly docked toolbar specified by 'pBarOnLeft'.
  93. // Parameters:
  94. //     pBarToDock - A CXTPToolBar pointer to the toolbar to be docked.
  95. //     pBarOnLeft - A CXTPToolBar pointer to the already docked toolbar.
  96. //-----------------------------------------------------------------------
  97. void DockRightOf(CXTPToolBar* pBarToDock, CXTPToolBar* pBarOnLeft)
  98. {
  99. RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, AFX_IDW_PANE_FIRST);
  100. CXTPWindowRect rcBar(pBarOnLeft);
  101. if (IsVerticalPosition(pBarOnLeft->GetPosition())) rcBar.OffsetRect(0, rcBar.Height());
  102. else rcBar.OffsetRect(rcBar.Width(), 0);
  103. GetCommandBars()->DockCommandBar(pBarToDock, rcBar, pBarOnLeft->GetDockBar());
  104. }
  105. //-----------------------------------------------------------------------
  106. // Summary:
  107. //     Call this function to save the state information to the registry
  108. //     or .INI file.
  109. // Parameters:
  110. //     lpszProfileName - Points to a null-terminated string that specifies
  111. //                       the name of a section in the initialization file
  112. //                       or a key in the Windows registry where state
  113. //                       information is stored.
  114. //-----------------------------------------------------------------------
  115. void SaveCommandBars(LPCTSTR lpszProfileName)
  116. {
  117. if (m_pCommandBars)
  118. {
  119. m_pCommandBars->SaveOptions(lpszProfileName);
  120. m_pCommandBars->SaveBarState(lpszProfileName);
  121. m_pCommandBars->GetShortcutManager()->SaveShortcuts(lpszProfileName);
  122. }
  123. }
  124. //-----------------------------------------------------------------------
  125. // Summary:
  126. //     Call this function to retrieve state information from the registry
  127. //     or .INI file.
  128. // Parameters:
  129. //     lpszProfileName - Points to a null-terminated string that specifies
  130. //                       the name of a section in the initialization file
  131. //                       or a key in the Windows registry where state
  132. //                       information is stored.
  133. //     bSilent         - TRUE to disable user notifications when command bars are restore to their original state.
  134. //-----------------------------------------------------------------------
  135. void LoadCommandBars(LPCTSTR lpszProfileName, BOOL bSilent = FALSE)
  136. {
  137. if (m_pCommandBars)
  138. {
  139. m_pCommandBars->LoadOptions(lpszProfileName);
  140. m_pCommandBars->LoadBarState(lpszProfileName, bSilent);
  141. m_pCommandBars->GetShortcutManager()->LoadShortcuts(lpszProfileName);
  142. }
  143. }
  144. //----------------------------------------------------------------------
  145. // Summary:
  146. //     Call this member to retrieve a pointer to the CommandBars object.
  147. // Returns:
  148. //     Retrieves Command Bars object.
  149. //----------------------------------------------------------------------
  150. CXTPCommandBars* GetCommandBars() const { return m_pCommandBars; }
  151. //{{AFX_CODEJOCK_PRIVATE
  152. protected:
  153. virtual BOOL PreTranslateMessage(MSG* pMsg)
  154. {
  155. if ((pMsg->message >= WM_KEYFIRST && pMsg->message <= WM_KEYLAST)
  156. && (pMsg->wParam != VK_RETURN && pMsg->wParam != VK_TAB && pMsg->wParam != VK_ESCAPE))
  157. {
  158. CWnd* pWnd = CWnd::GetFocus();
  159. if (pWnd && pWnd->IsKindOf(RUNTIME_CLASS(CXTPEdit)))
  160. return FALSE;
  161. }
  162. if (m_pCommandBars && m_pCommandBars->PreTranslateFrameMessage(pMsg))
  163. return TRUE;
  164. if (TBase::PreTranslateMessage(pMsg))
  165. return TRUE;
  166. return FALSE;
  167. }
  168. virtual BOOL OnWndMsg(UINT message, WPARAM wParam, LPARAM lParam, LRESULT* pResult)
  169. {
  170. if (m_pCommandBars && m_pCommandBars->OnFrameWndMsg(message, wParam, lParam, pResult))
  171. return TRUE;
  172. return TBase::OnWndMsg(message, wParam, lParam, pResult);
  173. }
  174. //}}AFX_CODEJOCK_PRIVATE
  175. private:
  176. CXTPCommandBars* m_pCommandBars;
  177. };
  178. //===========================================================================
  179. // Summary:
  180. //     CXTPDialog is a CXTPDialogBase derived class. Use this class in your dialog base application.
  181. //===========================================================================
  182. class CXTPDialog : public CXTPDialogBase<CDialog>
  183. {
  184. public:
  185. //-----------------------------------------------------------------------
  186. // Summary:
  187. //     Constructs a CXTPDialog object
  188. // Parameters:
  189. //     nIDTemplate - Contains the ID number of a dialog-template resource
  190. //     lpszTemplateName - Contains a null-terminated string that is
  191. //                        the name of a dialog-template resource
  192. //     pParentWnd  - Points to the parent of the Dialog control
  193. //-----------------------------------------------------------------------
  194. CXTPDialog()
  195. {
  196. }
  197. CXTPDialog(UINT nIDTemplate, CWnd* pParentWnd = NULL)
  198. : CXTPDialogBase<CDialog>(nIDTemplate, pParentWnd)
  199. {
  200. } //<combine CXTPDialog::CXTPDialog>
  201. CXTPDialog(LPCTSTR lpszTemplateName, CWnd* pParentWnd = NULL)
  202. : CXTPDialogBase<CDialog>(lpszTemplateName, pParentWnd)
  203. {
  204. } //<combine CXTPDialog::CXTPDialog>
  205. //-----------------------------------------------------------------------
  206. // Summary:
  207. //     Constructs a CXTPDialog object
  208. //-----------------------------------------------------------------------
  209. //{{AFX_CODEJOCK_PRIVATE
  210. // deprecated
  211. void SetMenuBar(CXTPMenuBar* /*pMenuBar*/)
  212. {
  213. XT_ERROR_MSG(
  214. "WARNING: CXTPDialog::SetMenuBar(...) has been deprecated, usen"
  215. "CXTPCommandBars::SetMenu(...) instead, for example:nn"
  216. "VERIFY(InitCommandBars());nn"
  217. "CXTPCommandBars* pCommandBars = GetCommandBars();n"
  218. "pCommandBars->SetMenu(_T("Menu Bar"), IDR_MENU);");
  219. }
  220. //}}AFX_CODEJOCK_PRIVATE
  221. };
  222. #endif // #if !defined(__XTPDIALOGBASE_H__)