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

对话框与窗口

开发平台:

Visual C++

  1. // XTPOffice2007FrameHook.h: interface for the CXTPOffice2007FrameHook class.
  2. //
  3. // This file is a part of the XTREME RIBBON 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(__XTPOFFICE2007FRAMEHOOK_H__)
  22. #define __XTPOFFICE2007FRAMEHOOK_H__
  23. //}}AFX_CODEJOCK_PRIVATE
  24. #if _MSC_VER > 1000
  25. #pragma once
  26. #endif // _MSC_VER > 1000
  27. #include "Common/XTPHookManager.h"
  28. class CXTPRibbonBar;
  29. class CXTPOffice2007Theme;
  30. class CXTPControls;
  31. //===========================================================================
  32. // Summary:
  33. //     CXTPOffice2007FrameHook is CXTPHookManagerHookAble derived class is helper
  34. //     for Office 2007 window skinning
  35. //===========================================================================
  36. class _XTP_EXT_CLASS CXTPOffice2007FrameHook : public CXTPHookManagerHookAble
  37. {
  38. class CControlCaptionButton;
  39. public:
  40. //-----------------------------------------------------------------------
  41. // Summary:
  42. //     Constructs a CXTPOffice2007FrameHook object
  43. //-----------------------------------------------------------------------
  44. CXTPOffice2007FrameHook();
  45. //-----------------------------------------------------------------------
  46. // Summary:
  47. //     Destroys a CXTPOffice2007FrameHook object, handles cleanup and deallocation
  48. //-----------------------------------------------------------------------
  49. ~CXTPOffice2007FrameHook();
  50. public:
  51. //-----------------------------------------------------------------------
  52. // Summary:
  53. //     Call this method to enable Office 2007 frame skinning
  54. // Parameters:
  55. //     pCommandBars - Parent commandbars object
  56. //-----------------------------------------------------------------------
  57. void EnableOffice2007Frame(CXTPCommandBars* pCommandBars);
  58. //-----------------------------------------------------------------------
  59. // Summary:
  60. //     Call this method to enable Office 2007 frame skinning
  61. // Parameters:
  62. //     pSite - Window to skin
  63. //     pPaintManager - Paint manager used to skin window
  64. //-----------------------------------------------------------------------
  65. void EnableOffice2007Frame(CWnd* pSite, CXTPPaintManager* pPaintManager);
  66. public:
  67. //-----------------------------------------------------------------------
  68. // Summary:
  69. //     Returns Skinned window
  70. //-----------------------------------------------------------------------
  71. CWnd* GetSite() const;
  72. //-----------------------------------------------------------------------
  73. // Summary:
  74. //     Returns Paint Manager used to skin window
  75. //-----------------------------------------------------------------------
  76. CXTPOffice2007Theme* GetPaintManager() const;
  77. //-----------------------------------------------------------------------
  78. // Summary:
  79. //     Determines if caption of skinned window is visible
  80. //-----------------------------------------------------------------------
  81. BOOL IsCaptionVisible() const;
  82. //-----------------------------------------------------------------------
  83. // Summary:
  84. //     Determines if Skinned window is active
  85. //-----------------------------------------------------------------------
  86. BOOL IsFrameActive() const;
  87. //-------------------------------------------------------------------------
  88. // Summary:
  89. //      Recalculates borders and region of frame
  90. //-------------------------------------------------------------------------
  91. void RecalcFrameLayout();
  92. //-------------------------------------------------------------------------
  93. // Summary:
  94. //      Recalculates borders and region of frame with small delay
  95. //-------------------------------------------------------------------------
  96. void DelayRecalcFrameLayout();
  97. //-------------------------------------------------------------------------
  98. // Summary:
  99. //      Redraw ribbon bar if found
  100. // See Also: RedrawFrame
  101. //-------------------------------------------------------------------------
  102. void RedrawRibbonBar();
  103. //-------------------------------------------------------------------------
  104. // Summary:
  105. //     Redraws frame of skinned window
  106. // See Also: RedrawRibbonBar
  107. //-------------------------------------------------------------------------
  108. void RedrawFrame();
  109. //-----------------------------------------------------------------------
  110. // Summary:
  111. //     Determines if frame has skinned scrollbar to draw rounded rects
  112. // Parameters:
  113. //      pnStatusHeight - Height of status bar to return
  114. // Returns: TRUE if frame has skinned status bar
  115. // See Also: IsMDIMaximized
  116. //-----------------------------------------------------------------------
  117. BOOL IsFrameHasStatusBar(int* pnStatusHeight = NULL) const;
  118. //-----------------------------------------------------------------------
  119. // Summary:
  120. //     Determines if frame is maximized child window
  121. //-----------------------------------------------------------------------
  122. BOOL IsMDIMaximized() const;
  123. //-----------------------------------------------------------------------
  124. // Summary:
  125. //     Returns collection of caption buttons
  126. //-----------------------------------------------------------------------
  127. CXTPControls* GetCaptionButtons() const;
  128. //-----------------------------------------------------------------------
  129. // Summary:
  130. //     Calculates height of caption
  131. // Returns:
  132. //     Height of caption in pixels
  133. // See Also: GetFrameBorder
  134. //-----------------------------------------------------------------------
  135. int GetCaptionHeight() const;
  136. //-----------------------------------------------------------------------
  137. // Summary:
  138. //     Calculates size of frame borders
  139. // Returns: Size of frame borders  in pixels
  140. // See Also: GetCaptionHeight
  141. //-----------------------------------------------------------------------
  142. int GetFrameBorder() const;
  143. //-----------------------------------------------------------------------
  144. // Summary:
  145. //     Determines if Vista AERO theme is enabled
  146. // Returns:
  147. //     TRUE if Vista AERO theme is enabled
  148. //-----------------------------------------------------------------------
  149. BOOL IsDwmEnabled() const;
  150. DWORD GetSiteStyle(BOOL bExStyle = FALSE) const;
  151. protected:
  152. //-----------------------------------------------------------------------
  153. // Summary:
  154. //     This member function is called by WindowProc, or is called during message reflection.
  155. // Parameters:
  156. //     hWnd - Window handle that the message belongs to.
  157. //     nMessage - Specifies the message to be sent.
  158. //     wParam - Specifies additional message-dependent information.
  159. //     lParam - Specifies additional message-dependent information.
  160. //     lResult - The return value of WindowProc. Depends on the message; may be NULL.
  161. // Returns:
  162. //     TRUE if message was processed.
  163. //-----------------------------------------------------------------------
  164. virtual int OnHookMessage(HWND hWnd, UINT nMessage, WPARAM& wParam, LPARAM& lParam, LRESULT& lResult);
  165. protected:
  166. //{{AFX_CODEJOCK_PRIVATE
  167. void TrackCaptionButton(CXTPControl* pSelected);
  168. void UpdateFrameRegion();
  169. void UpdateFrameRegion(CSize szFrameRegion, BOOL bUpdate = FALSE);
  170. void RepositionCaptionButtons();
  171. void AddCaptionButton(int nID, int nHit);
  172. void ScreenToFrame(LPPOINT lpPoint);
  173. CXTPControl* HitTestCaptionButton(CPoint point);
  174. void RefreshFrameStyle();
  175. void SetWinHook();
  176. BOOL GetAutoHideBar() const;
  177. //}}AFX_CODEJOCK_PRIVATE
  178. public:
  179. static UINT m_nMsgQueryFrameHook;
  180. protected:
  181. HWND m_hwndSite;                    // Skinned window handle
  182. CXTPRibbonBar* m_pRibbonBar;        // Child Ribbonbar object
  183. CXTPCommandBars* m_pCommandBars;    // Attached commandbars object
  184. CXTPPaintManager* m_pPaintManager;  // PaintManager used to draw frame
  185. BOOL m_bActive;                     // TRUE if frame is active
  186. CSize m_szFrameRegion;              // Previous size of window
  187. BOOL m_bDelayReclalcLayout;         // TRUE to recalculate layout after small delay
  188. CXTPControls* m_pCaptionButtons;    // Caption buttons
  189. CXTPControl* m_pSelected;           // Selected caption button
  190. BOOL m_bButtonPressed;              // Pressed caption button
  191. BOOL m_bOffice2007FrameEnabled;     // TRUE if skinning is enabled
  192. BOOL m_nSkipNCPaint;                // TRUE to skip frame drawing
  193. BOOL m_bInUpdateFrame;              // TRUE if UpdateFrame method is executed
  194. int m_nFrameBorder;                 // Size of frame borders
  195. BOOL m_bDwmEnabled;                 // TRUE if Vista AERO theme is enabled
  196. BOOL m_bLockNCPaint;                // TRUE to disable repaint of non client area
  197. private:
  198. UINT m_nMsgUpdateSkinState;
  199. UINT m_nMsgQuerySkinState;
  200. private:
  201. class CWinEventHook;
  202. friend class CXTPRibbonBar;
  203. friend class CControlCaptionButton;
  204. };
  205. AFX_INLINE CWnd* CXTPOffice2007FrameHook::GetSite() const {
  206. return CWnd::FromHandle(m_hwndSite);
  207. }
  208. AFX_INLINE BOOL CXTPOffice2007FrameHook::IsFrameActive() const {
  209. return m_bActive;
  210. }
  211. AFX_INLINE CXTPControls* CXTPOffice2007FrameHook::GetCaptionButtons() const {
  212. return m_pCaptionButtons;
  213. }
  214. AFX_INLINE int CXTPOffice2007FrameHook::GetFrameBorder() const {
  215. return m_nFrameBorder;
  216. }
  217. AFX_INLINE BOOL CXTPOffice2007FrameHook::IsDwmEnabled() const {
  218. return m_bDwmEnabled;
  219. }
  220. #endif // !defined(__XTPOFFICE2007FRAMEHOOK_H__)