// XTPCommandBarsFrameHook.h: interface for the CXTPCommandBarsFrameHook class. // // This file is a part of the XTREME RIBBON MFC class library. // (c)1998-2012 Codejock Software, All Rights Reserved. // // THIS SOURCE FILE IS THE PROPERTY OF CODEJOCK SOFTWARE AND IS NOT TO BE // RE-DISTRIBUTED BY ANY MEANS WHATSOEVER WITHOUT THE EXPRESSED WRITTEN // CONSENT OF CODEJOCK SOFTWARE. // // THIS SOURCE CODE CAN ONLY BE USED UNDER THE TERMS AND CONDITIONS OUTLINED // IN THE XTREME TOOLKIT PRO LICENSE AGREEMENT. CODEJOCK SOFTWARE GRANTS TO // YOU (ONE SOFTWARE DEVELOPER) THE LIMITED RIGHT TO USE THIS SOFTWARE ON A // SINGLE COMPUTER. // // CONTACT INFORMATION: // support@codejock.com // http://www.codejock.com // ///////////////////////////////////////////////////////////////////////////// //{{AFX_CODEJOCK_PRIVATE #if !defined(__XTPCOMMANDBARSFRAMEHOOK_H__) #define __XTPCOMMANDBARSFRAMEHOOK_H__ //}}AFX_CODEJOCK_PRIVATE #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 class CXTPRibbonBar; class CXTPResourceTheme; class CXTPControls; class CXTPFramePaintManager; typedef DWORD XTP_NOTIFY_CODE; class CXTPNotifySink; //=========================================================================== // Summary: // CXTPCommandBarsFrameHook is CXTPHookManagerHookAble derived class is helper // for Office 2007 window skinning //=========================================================================== class _XTP_EXT_CLASS CXTPCommandBarsFrameHook : public CXTPHookManagerHookAble { class CControlCaptionButton; public: //----------------------------------------------------------------------- // Summary: // Constructs a CXTPCommandBarsFrameHook object //----------------------------------------------------------------------- CXTPCommandBarsFrameHook(); //----------------------------------------------------------------------- // Summary: // Destroys a CXTPCommandBarsFrameHook object, handles cleanup and deallocation //----------------------------------------------------------------------- ~CXTPCommandBarsFrameHook(); public: //----------------------------------------------------------------------- // Summary: // Call this method to enable Office 2007 frame skinning // Parameters: // pCommandBars - Parent commandbars object //----------------------------------------------------------------------- void EnableOffice2007Frame(CXTPCommandBars* pCommandBars); //----------------------------------------------------------------------- // Summary: // Call this method to enable Office 2007 frame skinning // Parameters: // pSite - Window to skin // pPaintManager - Paint manager used to skin window //----------------------------------------------------------------------- void EnableOffice2007Frame(CWnd* pSite, CXTPPaintManager* pPaintManager); void EnableOffice2007Frame(CWnd* pSite, CXTPCommandBars* pCommandBars); //----------------------------------------------------------------------- // Summary: // Call this method to disable Office 2007 frame skinning //----------------------------------------------------------------------- void DisableOffice2007Frame(); public: //----------------------------------------------------------------------- // Summary: // Returns Skinned window //----------------------------------------------------------------------- CWnd* GetSite() const; //----------------------------------------------------------------------- // Summary: // Returns Paint Manager used to skin window //----------------------------------------------------------------------- CXTPPaintManager* GetPaintManager() const; //----------------------------------------------------------------------- // Summary: Call this method to retrieve the paint manager of the frame. // Returns: A pointer to a CXTPPaintManager object. //----------------------------------------------------------------------- CXTPFramePaintManager* GetFramePaintManager() const; //----------------------------------------------------------------------- // Summary: // Determines if caption of skinned window is visible //----------------------------------------------------------------------- BOOL IsCaptionVisible() const; //----------------------------------------------------------------------- // Summary: // Determines if Skinned window is active //----------------------------------------------------------------------- BOOL IsFrameActive() const; //------------------------------------------------------------------------- // Summary: // Recalculates borders and region of frame //------------------------------------------------------------------------- void RecalcFrameLayout(); //------------------------------------------------------------------------- // Summary: // Recalculates borders and region of frame with small delay //------------------------------------------------------------------------- void DelayRecalcFrameLayout(); //------------------------------------------------------------------------- // Summary: // Redraw ribbon bar if found // See Also: RedrawFrame //------------------------------------------------------------------------- void RedrawRibbonBar(); //------------------------------------------------------------------------- // Summary: // Redraws frame of skinned window // See Also: RedrawRibbonBar //------------------------------------------------------------------------- void RedrawFrame(); //----------------------------------------------------------------------- // Summary: // Determines if frame has skinned scrollbar to draw rounded rects. // Parameters: // pnStatusHeight - Height of status bar to return. // Returns: TRUE if frame has skinned status bar. // See Also: IsMDIMaximized //----------------------------------------------------------------------- BOOL IsFrameHasStatusBar(int* pnStatusHeight = NULL) const; //----------------------------------------------------------------------- // Summary: // Determines if frame is maximized child window. // Returns: TRUE if frame is maximized child window. //----------------------------------------------------------------------- BOOL IsMDIMaximized() const; //----------------------------------------------------------------------- // Summary: // Returns collection of caption buttons. // Returns: Collection of caption buttons. //----------------------------------------------------------------------- CXTPControls* GetCaptionButtons() const; //----------------------------------------------------------------------- // Summary: // Calculates height of caption // Returns: // Height of caption in pixels // See Also: GetFrameBorder //----------------------------------------------------------------------- int GetCaptionHeight() const; //----------------------------------------------------------------------- // Summary: // Calculates size of frame borders // Returns: Size of frame borders in pixels // See Also: GetCaptionHeight //----------------------------------------------------------------------- int GetFrameBorder() const; //----------------------------------------------------------------------- // Summary: // Determines if Vista AERO theme is enabled // Returns: // TRUE if Vista AERO theme is enabled //----------------------------------------------------------------------- BOOL IsDwmEnabled() const; //----------------------------------------------------------------------- // Summary: Returns style of site window // Input: bExStyle - TRUE to return ExStyle of window // Returns: Style of Extended Style of site window. //----------------------------------------------------------------------- DWORD GetSiteStyle(BOOL bExStyle = FALSE) const; //----------------------------------------------------------------------- // Summary: // This method is called to draw the ribbon frame if EnableFrameTheme was not called. // Parameters: // pDC - Pointer to a valid device context // pRibbonBar - Ribbon Bar to draw //----------------------------------------------------------------------- void DrawRibbonFramePart(CDC* pDC); void UpdateDwmClientArea(); protected: //----------------------------------------------------------------------- // Summary: // This member function is called by WindowProc, or is called during message reflection. // Parameters: // hWnd - Window handle that the message belongs to. // nMessage - Specifies the message to be sent. // wParam - Specifies additional message-dependent information. // lParam - Specifies additional message-dependent information. // lResult - The return value of WindowProc. Depends on the message; may be NULL. // Returns: // TRUE if message was processed. //----------------------------------------------------------------------- virtual int OnHookMessage(HWND hWnd, UINT nMessage, WPARAM& wParam, LPARAM& lParam, LRESULT& lResult); protected: //{{AFX_CODEJOCK_PRIVATE void TrackCaptionButton(CXTPControl* pSelected); void UpdateFrameRegion(); void UpdateFrameRegion(CSize szFrameRegion, BOOL bUpdate = FALSE); void RepositionCaptionButtons(); void AddCaptionButton(int nID, int nHit); void ScreenToFrame(LPPOINT lpPoint); CXTPControl* HitTestCaptionButton(CPoint point); void RefreshFrameStyle(); void SetWinHook(); BOOL GetAutoHideBar() const; void OnResourceImagesChanged(XTP_NOTIFY_CODE Event, WPARAM wParam, LPARAM lParam); //}}AFX_CODEJOCK_PRIVATE public: static UINT m_nMsgQueryFrameHook; // Helper message to determine if Hook was attached. BOOL m_bLockNCPaint; // TRUE to disable repaint of non client area static BOOL m_bAllowDwm; protected: HWND m_hwndSite; // Skinned window handle CXTPRibbonBar* m_pRibbonBar; // Child Ribbonbar object CXTPCommandBars* m_pCommandBars; // Attached commandbars object CXTPPaintManager* m_pPaintManager; // PaintManager used to draw frame BOOL m_bActive; // TRUE if frame is active CSize m_szFrameRegion; // Previous size of window BOOL m_bDelayReclalcLayout; // TRUE to recalculate layout after small delay CXTPControls* m_pCaptionButtons; // Caption buttons CXTPControl* m_pSelected; // Selected caption button BOOL m_bButtonPressed; // Pressed caption button BOOL m_bThemeFrameEnabled; // TRUE if skinning is enabled BOOL m_nSkipNCPaint; // TRUE to skip frame drawing BOOL m_bInUpdateFrame; // TRUE if UpdateFrame method is executed int m_nFrameBorder; // Size of frame borders BOOL m_bDwmEnabled; // TRUE if Vista AERO theme is enabled BOOL m_bToolBarComposition; private: UINT m_nMsgUpdateSkinState; UINT m_nMsgQuerySkinState; CXTPNotifySink* m_pSink; private: class CWinEventHook; friend class CXTPRibbonBar; friend class CControlCaptionButton; friend class CXTPCommandBars; }; // Obsolete name #define CXTPOffice2007FrameHook CXTPCommandBarsFrameHook AFX_INLINE CWnd* CXTPCommandBarsFrameHook::GetSite() const { return CWnd::FromHandle(m_hwndSite); } AFX_INLINE BOOL CXTPCommandBarsFrameHook::IsFrameActive() const { return m_bActive; } AFX_INLINE CXTPControls* CXTPCommandBarsFrameHook::GetCaptionButtons() const { return m_pCaptionButtons; } AFX_INLINE int CXTPCommandBarsFrameHook::GetFrameBorder() const { return m_nFrameBorder; } AFX_INLINE BOOL CXTPCommandBarsFrameHook::IsDwmEnabled() const { return m_bDwmEnabled; } #endif // !defined(__XTPCOMMANDBARSFRAMEHOOK_H__)