ExtMiniDockFrameWnd.h
上传用户:sesekoo
上传日期:2020-07-18
资源大小:21543k
文件大小:5k
源码类别:

界面编程

开发平台:

Visual C++

  1. // This is part of the Professional User Interface Suite library.
  2. // Copyright (C) 2001-2009 FOSS Software, Inc.
  3. // All rights reserved.
  4. //
  5. // http://www.prof-uis.com
  6. // mailto:support@prof-uis.com
  7. //
  8. // This source code can be used, modified and redistributed
  9. // under the terms of the license agreement that is included
  10. // in the Professional User Interface Suite package.
  11. //
  12. // Warranties and Disclaimers:
  13. // THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND
  14. // INCLUDING, BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY,
  15. // FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
  16. // IN NO EVENT WILL FOSS SOFTWARE INC. BE LIABLE FOR ANY DIRECT,
  17. // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES,
  18. // INCLUDING DAMAGES FOR LOSS OF PROFITS, LOSS OR INACCURACY OF DATA,
  19. // INCURRED BY ANY PERSON FROM SUCH PERSON'S USAGE OF THIS SOFTWARE
  20. // EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
  21. #if( !defined __EXTMINIDOCKFRAMEWND_H)
  22. #define __EXTMINIDOCKFRAMEWND_H
  23. #if (!defined __AFXPRIV_H__)
  24. #include <AfxPriv.h>
  25. #endif
  26. #if (!defined __EXT_MOUSECAPTURESINK_H)
  27. #include <../Src/ExtMouseCaptureSink.h>
  28. #endif
  29. #if _MSC_VER >= 1000
  30. #pragma once
  31. #endif // _MSC_VER >= 1000
  32. class CExtBarNcAreaButton;
  33. class CExtControlBar;
  34. /////////////////////////////////////////////////////////////////////////
  35. // CExtMiniDockFrameWnd window
  36. class __PROF_UIS_API CExtMiniDockFrameWnd
  37. : public CMiniDockFrameWnd
  38. , public CExtMouseCaptureSink
  39. , public CExtPmBridge
  40. {
  41. bool m_bMovingLargeBar:1;
  42. // Overrides
  43.     // ClassWizard generated virtual function overrides
  44.     //{{AFX_VIRTUAL(CExtMiniDockFrameWnd)
  45.     public:
  46. virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
  47.     virtual BOOL Create(CWnd* pParent, DWORD dwBarStyle);
  48.     //}}AFX_VIRTUAL
  49. protected:
  50. virtual LRESULT WindowProc( UINT message, WPARAM wParam, LPARAM lParam );
  51. public:
  52. virtual CExtControlBar * FindSingleVisbleFlatingBar();
  53. virtual void RenderNC( CDC & dc );
  54. BOOL PreTranslateMessage( MSG* pMsg );
  55. bool m_bHelperNcActive:1;
  56. CToolTipCtrl m_wndToolTip;
  57. // Implementation
  58. public:
  59.     DECLARE_DYNCREATE( CExtMiniDockFrameWnd );
  60. DECLARE_CExtPmBridge_MEMBERS( CExtMiniDockFrameWnd );
  61. CExtMiniDockFrameWnd();
  62. virtual ~CExtMiniDockFrameWnd();
  63. virtual void PmBridge_OnPaintManagerChanged(
  64. CExtPaintManager * pGlobalPM
  65. );
  66.     
  67. CControlBar * GetControlBar();
  68. const CControlBar * GetControlBar() const;
  69. CExtControlBar * GetControlBarExt();
  70. const CExtControlBar * GetControlBarExt() const;
  71. protected:
  72. virtual __EXT_MFC_INT_PTR OnToolHitTest(
  73. CPoint point,
  74. TOOLINFO * pTI
  75. ) const;
  76. public:
  77. virtual void CalcWindowRect(
  78. LPRECT lpClientRect,
  79. UINT nAdjustType = CWnd::adjustBorder
  80. );
  81. virtual void OnQueryNcMetrics(
  82. INT & nResizingFrameDX,
  83. INT & nResizingFrameDY,
  84. INT & nCaptionDY
  85. );
  86.     //{{AFX_MSG(CExtMiniDockFrameWnd)
  87. afx_msg void OnNcMouseMove( UINT nHitTest, CPoint point );
  88. afx_msg void OnTimer( __EXT_MFC_UINT_PTR nIDEvent );
  89. afx_msg void OnClose();
  90. afx_msg void OnNcPaint();
  91. afx_msg BOOL OnNcActivate(BOOL bActive);
  92.     afx_msg void OnNcLButtonDown(UINT nHitTest, CPoint point);
  93.     afx_msg void OnNcLButtonUp(UINT nHitTest, CPoint point);
  94. afx_msg void OnNcRButtonDown(UINT nHitTest, CPoint point);
  95.     afx_msg void OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI);
  96.     afx_msg void OnWindowPosChanging(WINDOWPOS FAR* lpwndpos);
  97. afx_msg void OnWindowPosChanged(WINDOWPOS FAR* lpwndpos);
  98.     afx_msg void OnSize(UINT nType, int cx, int cy);
  99. afx_msg void OnMouseMove(UINT nFlags, CPoint point);
  100. afx_msg void OnCaptureChanged(CWnd *pWnd);
  101. afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
  102. afx_msg void OnRButtonDown(UINT nFlags, CPoint point);
  103. afx_msg BOOL OnEraseBkgnd(CDC* pDC);
  104. afx_msg UINT OnNcHitTest(CPoint point);
  105. afx_msg void OnNcLButtonDblClk(UINT nHitTest, CPoint point);
  106. afx_msg void OnCancelMode();
  107. afx_msg void OnPaint();
  108. afx_msg void OnNcCalcSize(BOOL bCalcValidRects, NCCALCSIZE_PARAMS FAR* lpncsp);
  109. //}}AFX_MSG
  110. afx_msg void OnSysColorChange();
  111. afx_msg void OnSettingChange(UINT uFlags, __EXT_MFC_SAFE_LPCTSTR lpszSection);
  112. afx_msg LRESULT OnDisplayChange( WPARAM wParam, LPARAM lParam );
  113. afx_msg LRESULT OnThemeChanged( WPARAM wParam, LPARAM lParam );
  114.     DECLARE_MESSAGE_MAP()
  115. private:
  116. static bool g_bOnWndPosChgProcessing;
  117. public:
  118. static bool g_bAutoMakeTopmostOnMouseEvent;
  119. protected:
  120. CSize m_LastSize;
  121. CRect m_rcBtnHideBar;
  122. bool m_bBtnHideBar;
  123. CRect m_rcFrameCaption;
  124. CPoint m_ptLastResizing, m_ptResizingShift;
  125. void _AnalyzeButtonsHover(
  126. bool bAllowShowAdvacedTip = false
  127. );
  128. void _AnalyzeButtonsHover(
  129. CPoint point,
  130. bool bAllowShowAdvacedTip = false
  131. );
  132. private:
  133. static bool g_bInResizingUpdateState;
  134. UINT m_nResizingMode;
  135. CRect m_rcWndResizingStart;
  136. bool _ResizingIsInProgress()
  137. {
  138. return (m_nResizingMode == HTNOWHERE) ? false : true;
  139. }
  140. void _ResizingStart(
  141. UINT nHitTest,
  142. const CPoint & point
  143. );
  144. void _ResizingEnd();
  145. void _ResizingUpdateState(
  146. const CPoint & point
  147. );
  148. friend class CExtBarNcAreaButton;
  149. bool _GetSingleVisibleCaptionText( CExtSafeString & sCaption );
  150. public:
  151. virtual void RecalcLayout(BOOL bNotify = TRUE);
  152. static bool g_bMiniDockFrameWndClassRegistered;
  153. static bool RegisterMiniDockFrameWndClass();
  154. }; // class CExtMiniDockFrameWnd
  155. #define __EXT_MINIDOCKFRAMEWND_CLASS_NAME _T("ProfUIS-MiniDockFrameWnd")
  156. #endif // __EXTMINIDOCKFRAMEWND_H