sizecbar.h
上传用户:popouu88
上传日期:2013-02-11
资源大小:2894k
文件大小:7k
源码类别:

IP电话/视频会议

开发平台:

Visual C++

  1. #if !defined(__SIZECBAR_H__)
  2. #define __SIZECBAR_H__
  3. #include <afxpriv.h>    // for CDockContext
  4. #include <afxtempl.h>   // for CTypedPtrArray
  5. #if _MSC_VER >= 1000
  6. #pragma once
  7. #endif // _MSC_VER >= 1000
  8. #if defined(_SCB_MINIFRAME_CAPTION) && !defined(_SCB_REPLACE_MINIFRAME)
  9.     #error "_SCB_MINIFRAME_CAPTION requires _SCB_REPLACE_MINIFRAME"
  10. #endif
  11. /////////////////////////////////////////////////////////////////////////
  12. // CSCBDockBar dummy class for access to protected members
  13. class CSCBDockBar : public CDockBar
  14. {
  15.     friend class CSizingControlBar;
  16. };
  17. /////////////////////////////////////////////////////////////////////////
  18. // CSizingControlBar control bar styles
  19. #define SCBS_EDGELEFT       0x00000001
  20. #define SCBS_EDGERIGHT      0x00000002
  21. #define SCBS_EDGETOP        0x00000004
  22. #define SCBS_EDGEBOTTOM     0x00000008
  23. #define SCBS_EDGEALL        0x0000000F
  24. #define SCBS_SHOWEDGES      0x00000010
  25. #define SCBS_SIZECHILD      0x00000020
  26. /////////////////////////////////////////////////////////////////////////
  27. // CSizingControlBar control bar
  28. #ifndef baseCSizingControlBar
  29. #define baseCSizingControlBar CControlBar
  30. #endif
  31. class CSizingControlBar;
  32. typedef CTypedPtrArray <CPtrArray, CSizingControlBar*> CSCBArray;
  33. class CSizingControlBar : public baseCSizingControlBar
  34. {
  35.     DECLARE_DYNAMIC(CSizingControlBar);
  36. // Construction
  37. public:
  38.     CSizingControlBar();
  39.     virtual BOOL Create(LPCTSTR lpszWindowName, CWnd* pParentWnd,
  40.         CSize sizeDefault, BOOL bHasGripper,
  41.         UINT nID, DWORD dwStyle = WS_CHILD | WS_VISIBLE | CBRS_TOP);
  42.     virtual BOOL Create(LPCTSTR lpszWindowName, CWnd* pParentWnd,
  43.         UINT nID, DWORD dwStyle = WS_CHILD | WS_VISIBLE | CBRS_TOP);
  44. // Attributes
  45. public:
  46.     const BOOL IsFloating() const;
  47.     const BOOL IsHorzDocked() const;
  48.     const BOOL IsVertDocked() const;
  49.     const BOOL IsSideTracking() const;
  50.     const BOOL GetSCBStyle() const {return m_dwSCBStyle;}
  51. // Operations
  52. public:
  53. #if defined(_SCB_REPLACE_MINIFRAME) && !defined(_SCB_MINIFRAME_CAPTION)
  54.     void EnableDocking(DWORD dwDockStyle);
  55. #endif
  56.     virtual void LoadState(LPCTSTR lpszProfileName);
  57.     virtual void SaveState(LPCTSTR lpszProfileName);
  58.     static void GlobalLoadState(CFrameWnd* pFrame, LPCTSTR lpszProfileName);
  59.     static void GlobalSaveState(CFrameWnd* pFrame, LPCTSTR lpszProfileName);
  60.     void SetSCBStyle(DWORD dwSCBStyle)
  61.         {m_dwSCBStyle = (dwSCBStyle & ~SCBS_EDGEALL);}
  62. // Overridables
  63.     virtual void OnUpdateCmdUI(CFrameWnd* pTarget, BOOL bDisableIfNoHndler);
  64. // Overrides
  65. public:
  66.     // ClassWizard generated virtual function overrides
  67.     //{{AFX_VIRTUAL(CSizingControlBar)
  68.     virtual CSize CalcFixedLayout(BOOL bStretch, BOOL bHorz);
  69.     virtual CSize CalcDynamicLayout(int nLength, DWORD dwMode);
  70.     //}}AFX_VIRTUAL
  71. // Implementation
  72. public:
  73.     virtual ~CSizingControlBar();
  74.     
  75. protected:
  76.     // implementation helpers
  77.     UINT GetEdgeHTCode(int nEdge);
  78.     BOOL GetEdgeRect(CRect rcWnd, UINT nHitTest, CRect& rcEdge);
  79.     virtual void StartTracking(UINT nHitTest, CPoint point);
  80.     virtual void StopTracking();
  81.     virtual void OnTrackUpdateSize(CPoint& point);
  82.     virtual void OnTrackInvertTracker();
  83.     virtual void NcPaintGripper(CDC* pDC, CRect rcClient);
  84.     virtual void NcCalcClient(LPRECT pRc, UINT nDockBarID);
  85.     virtual void AlignControlBars();
  86.     void GetRowInfo(int& nFirst, int& nLast, int& nThis);
  87.     void GetRowSizingBars(CSCBArray& arrSCBars);
  88.     void GetRowSizingBars(CSCBArray& arrSCBars, int& nThis);
  89.     BOOL NegotiateSpace(int nLengthTotal, BOOL bHorz);
  90. protected:
  91.     DWORD   m_dwSCBStyle;
  92.     UINT    m_htEdge;
  93.     CSize   m_szHorz;
  94.     CSize   m_szVert;
  95.     CSize   m_szFloat;
  96.     CSize   m_szMinHorz;
  97.     CSize   m_szMinVert;
  98.     CSize   m_szMinFloat;
  99.     int     m_nTrackPosMin;
  100.     int     m_nTrackPosMax;
  101.     int     m_nTrackPosOld;
  102.     int     m_nTrackEdgeOfs;
  103.     BOOL    m_bTracking;
  104.     BOOL    m_bKeepSize;
  105.     BOOL    m_bParentSizing;
  106.     BOOL    m_bDragShowContent;
  107.     UINT    m_nDockBarID;
  108.     int     m_cxEdge;
  109. // Generated message map functions
  110. protected:
  111.     //{{AFX_MSG(CSizingControlBar)
  112.     afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
  113.     afx_msg void OnNcPaint();
  114.     afx_msg void OnNcCalcSize(BOOL bCalcValidRects, NCCALCSIZE_PARAMS FAR* lpncsp);
  115.     afx_msg UINT OnNcHitTest(CPoint point);
  116.     afx_msg void OnCaptureChanged(CWnd *pWnd);
  117.     afx_msg void OnSettingChange(UINT uFlags, LPCTSTR lpszSection);
  118.     afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
  119.     afx_msg void OnMouseMove(UINT nFlags, CPoint point);
  120.     afx_msg void OnNcLButtonDown(UINT nHitTest, CPoint point);
  121.     afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
  122.     afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);
  123.     afx_msg void OnRButtonDown(UINT nFlags, CPoint point);
  124.     afx_msg void OnWindowPosChanging(WINDOWPOS FAR* lpwndpos);
  125.     afx_msg void OnPaint();
  126.     afx_msg void OnClose();
  127.     afx_msg void OnSize(UINT nType, int cx, int cy);
  128. //}}AFX_MSG
  129.     afx_msg LRESULT OnSetText(WPARAM wParam, LPARAM lParam);
  130.     DECLARE_MESSAGE_MAP()
  131. #ifdef _SCB_REPLACE_MINIFRAME
  132.     friend class CSCBMiniDockFrameWnd;
  133. #endif //_SCB_REPLACE_MINIFRAME
  134. };
  135. #ifdef _SCB_REPLACE_MINIFRAME
  136. #ifndef _SCB_MINIFRAME_CAPTION
  137. /////////////////////////////////////////////////////////////////////////
  138. // CSCBDockContext dockcontext
  139. class CSCBDockContext : public CDockContext
  140. {
  141. public:
  142. // Construction
  143.     CSCBDockContext(CControlBar* pBar) : CDockContext(pBar) {}
  144. // Drag Operations
  145.     virtual void StartDrag(CPoint pt);
  146. };
  147. #endif //_SCB_MINIFRAME_CAPTION
  148. /////////////////////////////////////////////////////////////////////////
  149. // CSCBMiniDockFrameWnd miniframe
  150. #ifndef baseCSCBMiniDockFrameWnd
  151. #define baseCSCBMiniDockFrameWnd CMiniDockFrameWnd
  152. #endif
  153. class CSCBMiniDockFrameWnd : public baseCSCBMiniDockFrameWnd
  154. {
  155.     DECLARE_DYNCREATE(CSCBMiniDockFrameWnd)
  156. // Overrides
  157.     // ClassWizard generated virtual function overrides
  158.     //{{AFX_VIRTUAL(CSCBMiniDockFrameWnd)
  159.     public:
  160.     virtual BOOL Create(CWnd* pParent, DWORD dwBarStyle);
  161.     //}}AFX_VIRTUAL
  162. // Implementation
  163. public:
  164.     CSizingControlBar* GetSizingControlBar();
  165.     //{{AFX_MSG(CSCBMiniDockFrameWnd)
  166.     afx_msg void OnNcLButtonDown(UINT nHitTest, CPoint point);
  167.     afx_msg void OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI);
  168.     afx_msg void OnWindowPosChanging(WINDOWPOS FAR* lpwndpos);
  169.     afx_msg void OnSize(UINT nType, int cx, int cy);
  170.     //}}AFX_MSG
  171.     DECLARE_MESSAGE_MAP()
  172. };
  173. #endif //_SCB_REPLACE_MINIFRAME
  174. #endif // !defined(__SIZECBAR_H__)