SIZECBAR.H
上传用户:nbkytg
上传日期:2021-02-14
资源大小:126k
文件大小:5k
源码类别:

工具条

开发平台:

Visual C++

  1. /////////////////////////////////////////////////////////////////////////
  2. // Copyright (C) 1998 by Cristi Posea
  3. // All rights reserved
  4. //
  5. // Distribute freely, except: don't remove my name from the source or
  6. // documentation (don't take credit for my work), mark your changes
  7. // (don't get me blamed for your possible bugs), don't alter or remove
  8. // this notice.
  9. // No warrantee of any kind, express or implied, is included with this
  10. // software; use at your own risk, responsibility for damages (if any) to
  11. // anyone resulting from the use of this software rests entirely with the
  12. // user.
  13. //
  14. // Send bug reports, bug fixes, enhancements, requests, flames, etc.,
  15. // and I'll try to keep a version up to date.  I can be reached at:
  16. //    cristi@gds.ro
  17. /////////////////////////////////////////////////////////////////////////
  18. //
  19. // Acknowledgements:
  20. //  o   Thanks to Harlan R. Seymour (harlan@hcube.com) for motivating me
  21. //      to update this code. Also he prompted me to a bug durring 
  22. //      the developement phase.
  23. //  o   Thanks to Zafir Anjum (zafir@codeguru.com) for publishing this
  24. //      code on his cool site (www.codeguru.com).
  25. //  o   Some ideeas for the gripper came from the CToolBarEx flat toolbar
  26. //      by Joerg Koenig (Joerg.Koenig@rhein-neckar.de). Also he inspired
  27. //      me on writting this notice:) . Thanks, Joerg!
  28. //  o   Thanks to Jakawan Ratiwanich (jack@alpha.fsec.ucf.edu) and to
  29. //      Udo Schaefer(Udo.Schaefer@vcase.de) for the dwStyle bug fix under
  30. //      VC++ 6.0.
  31. //  o   Thanks to Microsoft developers for the MFC source code. After
  32. //      all, most of this class code came from there.
  33. //
  34. /////////////////////////////////////////////////////////////////////////
  35. //
  36. // Usage:
  37. // o    Derive your class from CSizingControlBar. Then create your child
  38. //      controls/windows on it.
  39. // o    Include your class header in Mainfrm.cpp and add a member 
  40. //      variable to CMainFrame. In CMainFrame::OnCreate(), create the
  41. //      control bar, enable it to dock, and so on... like a toolbar or
  42. //      any control bar.
  43. // o    More details at
  44. //      http://www.codeguru.com/docking/docking_window.shtml or search
  45. //      http://www.codeguru.com for my name if the article has moved.
  46. //
  47. /////////////////////////////////////////////////////////////////////////
  48. #if !defined(SIZECBAR_H_INCLUDED)
  49. #define SIZECBAR_H_INCLUDED
  50. #if _MSC_VER >= 1000
  51. #pragma once
  52. #endif // _MSC_VER >= 1000
  53. // sizecbar1.h : header file
  54. //
  55. /////////////////////////////////////////////////////////////////////////
  56. // CSizingControlBar control bar
  57. #include < afxpriv.h > 
  58. #include < afxres.h >
  59. class CSizingControlBar : public CControlBar
  60. {
  61. public:
  62.     CSizingControlBar();
  63. // Attributes
  64. public:
  65.     CSize m_sizeHorz;
  66.     CSize m_sizeVert;
  67.     CSize m_sizeFloat;
  68.     BOOL IsHorzDocked() const;
  69.     BOOL IsVertDocked() const;
  70. // Operations
  71. public:
  72. // Overrides
  73. public:
  74.     // ClassWizard generated virtual function overrides
  75.     //{{AFX_VIRTUAL(CSizingControlBar)
  76. public:
  77.     virtual BOOL Create(LPCTSTR lpszWindowName, CWnd* pParentWnd, CSize sizeDefault, BOOL bHasGripper, UINT nID, DWORD dwStyle = WS_CHILD | WS_VISIBLE | CBRS_TOP);
  78.     virtual CSize CalcFixedLayout(BOOL bStretch, BOOL bHorz);
  79.     virtual CSize CalcDynamicLayout(int nLength, DWORD dwMode);
  80. //}}AFX_VIRTUAL
  81. // Implementation
  82. public:
  83. virtual void ShowContrl(BOOL m_show=TRUE);
  84.     virtual ~CSizingControlBar();
  85.     
  86. protected:
  87.     // implementation helpers
  88.     void StartTracking();
  89.     void StopTracking(BOOL bAccept);
  90. void OnTrackUpdateSize(CPoint& point);
  91.     void OnTrackInvertTracker();
  92. void SetStatusText(UINT nID=AFX_IDW_STATUS_BAR);
  93. virtual CSize CalcMaxSize();
  94. virtual BOOL QueryDragFullWindows() const;
  95. protected:
  96. // used for resizing
  97.     CSize m_sizeMin;
  98.     CSize   m_sizeMax;
  99. CPoint m_ptOld;
  100.     CRect   m_rectBorder;
  101.     BOOL    m_bTracking;
  102. BOOL m_bDragShowContent;
  103. CSize m_sizeOld;
  104.     BOOL    m_bInRecalcNC;
  105.     UINT    m_nDockBarID;
  106.     int     m_cxEdge;
  107.     BOOL    m_bHasGripper;
  108.     int     m_cyGripper;
  109.     CRect   m_rectGripper;
  110. CRect m_rectUndock;
  111. CRect m_rectClose;
  112. // Generated message map functions
  113. protected:
  114.     //{{AFX_MSG(CSizingControlBar)
  115.     afx_msg void OnPaint();
  116.     afx_msg void OnNcPaint();
  117.     afx_msg void OnWindowPosChanged(WINDOWPOS FAR* lpwndpos);
  118.     afx_msg void OnNcCalcSize(BOOL bCalcValidRects, NCCALCSIZE_PARAMS FAR* lpncsp);
  119.     afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
  120.     afx_msg void OnMouseMove(UINT nFlags, CPoint point);
  121.     afx_msg void OnNcLButtonDown(UINT nHitTest, CPoint point);
  122.     afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
  123.     afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);
  124. afx_msg void OnRButtonDown(UINT nFlags, CPoint point);
  125.     afx_msg void OnCaptureChanged(CWnd *pWnd);
  126.     afx_msg UINT OnNcHitTest(CPoint point);
  127.     afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);
  128. afx_msg void OnNcLButtonUp(UINT nHitTest, CPoint point);
  129. afx_msg void OnNcMouseMove(UINT nHitTest, CPoint point);
  130. //}}AFX_MSG
  131. afx_msg BOOL OnTipNotify(UINT id, NMHDR * pNMHDR, LRESULT * pResult );
  132.     DECLARE_MESSAGE_MAP()
  133. };
  134. /////////////////////////////////////////////////////////////////////////
  135. //{{AFX_INSERT_LOCATION}}
  136. // Microsoft Developer Studio will insert additional declarations immediately before the previous line.
  137. #endif // !defined(SIZECBAR_H_INCLUDED)