| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238 | ///////////////////////////////////////////////////////////////////////////// CSizingControlBar            Version 2.43//// Created: Jan 24, 1998        Last Modified: August 03, 2000//// See the official site at www.datamekanix.com for documentation and// the latest news.///////////////////////////////////////////////////////////////////////////// Copyright (C) 1998-2000 by Cristi Posea. All rights reserved.//// This code is free for personal and commercial use, providing this // notice remains intact in the source files and all eventual changes are// clearly marked with comments.//// You must obtain the author's consent before you can include this code// in a software library.//// No warrantee of any kind, express or implied, is included with this// software; use at your own risk, responsibility for damages (if any) to// anyone resulting from the use of this software rests entirely with the// user.//// Send bug reports, bug fixes, enhancements, requests, flames, etc. to// cristi@datamekanix.com or post them at the message board at the site./////////////////////////////////////////////////////////////////////////#if !defined(__SIZECBAR_H__)#define __SIZECBAR_H__#include <afxpriv.h>    // for CDockContext//#include <afxtempl.h>   // for CTypedPtrArray#if _MSC_VER >= 1000#pragma once#endif // _MSC_VER >= 1000#if defined(_SCB_MINIFRAME_CAPTION) && !defined(_SCB_REPLACE_MINIFRAME)    #error "_SCB_MINIFRAME_CAPTION requires _SCB_REPLACE_MINIFRAME"#endif/////////////////////////////////////////////////////////////////////////// CSCBDockBar dummy class for access to protected membersclass CSCBDockBar : public CDockBar{    friend class CSizingControlBar;};/////////////////////////////////////////////////////////////////////////// CSizingControlBar control bar styles#define SCBS_EDGELEFT       0x00000001#define SCBS_EDGERIGHT      0x00000002#define SCBS_EDGETOP        0x00000004#define SCBS_EDGEBOTTOM     0x00000008#define SCBS_EDGEALL        0x0000000F#define SCBS_SHOWEDGES      0x00000010#define SCBS_SIZECHILD      0x00000020/////////////////////////////////////////////////////////////////////////// CSizingControlBar control bar#ifndef baseCSizingControlBar#define baseCSizingControlBar CControlBar#endifclass CSizingControlBar;typedef CTypedPtrArray <CPtrArray, CSizingControlBar*> CSCBArray;class CSizingControlBar : public baseCSizingControlBar{    DECLARE_DYNAMIC(CSizingControlBar);// Constructionpublic:    CSizingControlBar();    virtual BOOL Create(LPCTSTR lpszWindowName, CWnd* pParentWnd,        CSize sizeDefault, BOOL bHasGripper,        UINT nID, DWORD dwStyle = WS_CHILD | WS_VISIBLE | CBRS_TOP);    virtual BOOL Create(LPCTSTR lpszWindowName, CWnd* pParentWnd,        UINT nID, DWORD dwStyle = WS_CHILD | WS_VISIBLE | CBRS_TOP);// Attributespublic:    const BOOL IsFloating() const;    const BOOL IsHorzDocked() const;    const BOOL IsVertDocked() const;    const BOOL IsSideTracking() const;    const BOOL GetSCBStyle() const {return m_dwSCBStyle;}// Operationspublic:#if defined(_SCB_REPLACE_MINIFRAME) && !defined(_SCB_MINIFRAME_CAPTION)    void EnableDocking(DWORD dwDockStyle);#endif    virtual void LoadState(LPCTSTR lpszProfileName);    virtual void SaveState(LPCTSTR lpszProfileName);    static void GlobalLoadState(CFrameWnd* pFrame, LPCTSTR lpszProfileName);    static void GlobalSaveState(CFrameWnd* pFrame, LPCTSTR lpszProfileName);    void SetSCBStyle(DWORD dwSCBStyle)        {m_dwSCBStyle = (dwSCBStyle & ~SCBS_EDGEALL);}// Overridables    virtual void OnUpdateCmdUI(CFrameWnd* pTarget, BOOL bDisableIfNoHndler);// Overridespublic:    // ClassWizard generated virtual function overrides    //{{AFX_VIRTUAL(CSizingControlBar)    public:    virtual CSize CalcFixedLayout(BOOL bStretch, BOOL bHorz);    virtual CSize CalcDynamicLayout(int nLength, DWORD dwMode);    //}}AFX_VIRTUAL// Implementationpublic:    virtual ~CSizingControlBar();protected:    // implementation helpers    UINT GetEdgeHTCode(int nEdge);    BOOL GetEdgeRect(CRect rcWnd, UINT nHitTest, CRect& rcEdge);    virtual void StartTracking(UINT nHitTest, CPoint point);    virtual void StopTracking();    virtual void OnTrackUpdateSize(CPoint& point);    virtual void OnTrackInvertTracker();    virtual void NcPaintGripper(CDC* pDC, CRect rcClient);    virtual void NcCalcClient(LPRECT pRc, UINT nDockBarID);    virtual void AlignControlBars();    void GetRowInfo(int& nFirst, int& nLast, int& nThis);    void GetRowSizingBars(CSCBArray& arrSCBars);    void GetRowSizingBars(CSCBArray& arrSCBars, int& nThis);    BOOL NegotiateSpace(int nLengthTotal, BOOL bHorz);protected:    DWORD   m_dwSCBStyle;    UINT    m_htEdge;	CSize   m_szHorz;	CSize   m_szVert;    CSize   m_szFloat;    CSize   m_szMinHorz;    CSize   m_szMinVert;    CSize   m_szMinFloat;    int     m_nTrackPosMin;    int     m_nTrackPosMax;    int     m_nTrackPosOld;    int     m_nTrackEdgeOfs;	static BOOL    m_bTracking;    BOOL    m_bKeepSize;    BOOL    m_bParentSizing;    BOOL    m_bDragShowContent;    UINT    m_nDockBarID;    int     m_cxEdge;// Generated message map functionsprotected:    //{{AFX_MSG(CSizingControlBar)    afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);    afx_msg void OnNcPaint();    afx_msg void OnNcCalcSize(BOOL bCalcValidRects, NCCALCSIZE_PARAMS FAR* lpncsp);    afx_msg LRESULT OnNcHitTest(CPoint point);    afx_msg void OnCaptureChanged(CWnd *pWnd);    afx_msg void OnSettingChange(UINT uFlags, LPCTSTR lpszSection);    afx_msg void OnLButtonUp(UINT nFlags, CPoint point);    afx_msg void OnMouseMove(UINT nFlags, CPoint point);    afx_msg void OnNcLButtonDown(UINT nHitTest, CPoint point);    afx_msg void OnLButtonDown(UINT nFlags, CPoint point);    afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);    afx_msg void OnRButtonDown(UINT nFlags, CPoint point);    afx_msg void OnWindowPosChanging(WINDOWPOS FAR* lpwndpos);    afx_msg void OnPaint();    afx_msg void OnClose();    afx_msg void OnSize(UINT nType, int cx, int cy);    //}}AFX_MSG    afx_msg LRESULT OnSetText(WPARAM wParam, LPARAM lParam);    DECLARE_MESSAGE_MAP()#ifdef _SCB_REPLACE_MINIFRAME    friend class CSCBMiniDockFrameWnd;#endif //_SCB_REPLACE_MINIFRAME};#ifdef _SCB_REPLACE_MINIFRAME#ifndef _SCB_MINIFRAME_CAPTION/////////////////////////////////////////////////////////////////////////// CSCBDockContext dockcontextclass CSCBDockContext : public CDockContext{public:// Construction    CSCBDockContext(CControlBar* pBar) : CDockContext(pBar) {}// Drag Operations    virtual void StartDrag(CPoint pt);};#endif //_SCB_MINIFRAME_CAPTION/////////////////////////////////////////////////////////////////////////// CSCBMiniDockFrameWnd miniframe#ifndef baseCSCBMiniDockFrameWnd#define baseCSCBMiniDockFrameWnd CMiniDockFrameWnd#endifclass CSCBMiniDockFrameWnd : public baseCSCBMiniDockFrameWnd{    DECLARE_DYNCREATE(CSCBMiniDockFrameWnd)// Overrides    // ClassWizard generated virtual function overrides    //{{AFX_VIRTUAL(CSCBMiniDockFrameWnd)    public:    virtual BOOL Create(CWnd* pParent, DWORD dwBarStyle);    //}}AFX_VIRTUAL// Implementationpublic:    CSizingControlBar* GetSizingControlBar();    //{{AFX_MSG(CSCBMiniDockFrameWnd)    afx_msg void OnNcLButtonDown(UINT nHitTest, CPoint point);    afx_msg void OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI);    afx_msg void OnWindowPosChanging(WINDOWPOS FAR* lpwndpos);    afx_msg void OnSize(UINT nType, int cx, int cy);    //}}AFX_MSG    DECLARE_MESSAGE_MAP()};#endif //_SCB_REPLACE_MINIFRAME#endif // !defined(__SIZECBAR_H__)
 |