XTPMarkupScrollViewer.h
上传用户:szled88
上传日期:2015-04-09
资源大小:43957k
文件大小:7k
源码类别:
对话框与窗口
开发平台:
Visual C++
- // XTPMarkupScrollViewer.h: interface for the CXTPMarkupScrollViewer class.
- //
- // This file is a part of the XTREME TOOLKIT PRO MFC class library.
- // (c)1998-2008 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
- //
- /////////////////////////////////////////////////////////////////////////////
- #if !defined(__XTPMARKUPSCROLLVIEWER_H__)
- #define __XTPMARKUPSCROLLVIEWER_H__
- #if _MSC_VER > 1000
- #pragma once
- #endif // _MSC_VER > 1000
- #include "XTPMarkupControl.h"
- class CXTPMarkupBrush;
- class CXTPMarkupBuilder;
- class CXTPMarkupScrollBarGripper;
- enum XTPMarkupScrollBarVisibility
- {
- xtpMarkupScrollBarDisabled,
- xtpMarkupScrollBarAuto,
- xtpMarkupScrollBarVisible
- };
- class _XTP_EXT_CLASS CXTPMarkupScrollBar : public CXTPMarkupControl
- {
- DECLARE_MARKUPCLASS(CXTPMarkupScrollBar);
- protected:
- //===========================================================================
- // Summary:
- // The SCROLLBARPOSINFO structure contains scroll bar information.
- //===========================================================================
- struct SCROLLBARPOSINFO
- {
- int posMin; // Minimum position
- int posMax; // Maximum position
- int page; // Page size
- int pos; // Position of thumb
- int pxTop; // Top bounding rectangle
- int pxBottom;// Bottom bounding rectangle
- int pxLeft; // Left bounding rectangle
- int pxRight; // Right bounding rectangle
- int cpxThumb;// Size of thumb button
- int pxUpArrow; // Position of Up arrow
- int pxDownArrow; // Position of Down arrow
- int pxStart; // Previous position of thumb button
- int pxThumbBottom; // Thumb bottom bounding rectangle
- int pxThumbTop; // Thumb top bounding rectangle
- int pxPopup; // In-place scroll position
- int cpx; // position in pixels
- int pxMin; // Minimum position in pixels
- RECT rc; // Bounding rectangle
- int ht; // Hit test
- BOOL fVert; // TRUE if vertical
- };
- //===========================================================================
- // Summary:
- // The SCROLLBARTRACKINFO structure contains tracking information.
- //===========================================================================
- struct SCROLLBARTRACKINFO
- {
- BOOL fHitOld; // Previous hittest
- RECT rcTrack; // Bounding rectangle of available thumb position
- UINT cmdSB; // Scroll command
- UINT_PTR hTimerSB; // Timer identifier
- int dpxThumb; // Delta of thumb button
- int pxOld; // Previous position in pixels
- int posOld; // Previous position
- int posNew; // new position
- HWND hWndTrack; // Parent tracking window
- BOOL bTrackThumb; // TRUE if thumb is tracking
- SCROLLBARPOSINFO* pSBInfo; // SCROLLBARPOSINFO pointer
- };
- protected:
- CXTPMarkupScrollBar();
- public:
- void SetOrientation(XTPMarkupOrientation orientation);
- void SetScrollInfo(SCROLLINFO* pScrollInfo);
- void GetScrollInfo(SCROLLINFO* pScrollInfo);
- protected:
- CSize MeasureOverride(CXTPMarkupDrawingContext* pDC, CSize szAvailableSize);
- CSize ArrangeOverride(CSize szFinalSize);
- void OnRender(CXTPMarkupDrawingContext* pDC);
- void CalcScrollBarInfo(LPRECT lprc, SCROLLBARPOSINFO* pSBInfo, SCROLLINFO* pSI);
- void OnMouseLeave(CXTPMarkupMouseEventArgs* e);
- void OnMouseEnter(CXTPMarkupMouseEventArgs* e);
- void OnMouseMove(CXTPMarkupMouseEventArgs* e);
- void OnMouseLeftButtonUp(CXTPMarkupMouseButtonEventArgs* e);
- void OnMouseLeftButtonDown(CXTPMarkupMouseButtonEventArgs* e);
- BOOL IsEnabled() const;
- private:
- void PerformTrackInit(HWND hWnd, CPoint point, SCROLLBARPOSINFO* pSBInfo, BOOL bDirect);
- void CalcTrackDragRect(SCROLLBARTRACKINFO* pSBTrack) const;
- void DoScroll(int cmd, int pos);
- int HitTestScrollBar(POINT pt) const;
- void EndScroll(BOOL fCancel);
- void RedrawScrollBar();
- void MoveThumb(int px);
- void TrackThumb(UINT message, CPoint pt);
- void TrackBox(UINT message, CPoint point);
- void ContScroll();
- int SBPosFromPx(CXTPMarkupScrollBar::SCROLLBARPOSINFO* pSBInfo, int px);
- void ScreenToClient(HWND hWnd, LPPOINT lpPoint);
- protected:
- XTPMarkupOrientation m_orientation;
- SCROLLBARPOSINFO m_spi; // ScrollBar position.
- SCROLLBARTRACKINFO* m_pSBTrack; // ScrollBar tracking
- SCROLLINFO m_si;
- };
- class _XTP_EXT_CLASS CXTPMarkupScrollViewer : public CXTPMarkupContentControl
- {
- DECLARE_MARKUPCLASS(CXTPMarkupScrollViewer);
- protected:
- CXTPMarkupScrollViewer();
- ~CXTPMarkupScrollViewer();
- public:
- int GetVisualChildrenCount() const;
- CXTPMarkupVisual* GetVisualChild(int nIndex) const;
- void Scroll(int nBar, int cmd, int pos);
- void SetScrollPos(int nBar, int pos);
- int GetScrollPos(int nBar);
- int GetScrollLimit(int nBar);
- XTPMarkupScrollBarVisibility GetVerticalScrollBarVisibility() const;
- XTPMarkupScrollBarVisibility GetHorizontalScrollBarVisibility() const;
- protected:
- CSize ArrangeOverride(CSize szFinalSize);
- CSize MeasureOverride(CXTPMarkupDrawingContext* pDC, CSize szAvailableSize);
- void OnMouseWheel(CXTPMarkupMouseWheelEventArgs* e);
- protected:
- void CreateScrollBar(int nBar);
- protected:
- CXTPMarkupScrollBar* m_pVerticalScrollBar;
- CXTPMarkupScrollBar* m_pHorizontalScrollBar;
- CXTPMarkupScrollBarGripper* m_pScrollBarGripper;
- int m_xOffset;
- int m_yOffset;
- public:
- static CXTPMarkupDependencyProperty* m_pVerticalScrollBarVisibilityProperty;
- static CXTPMarkupDependencyProperty* m_pHorizontalScrollBarVisibilityProperty;
- };
- AFX_INLINE void CXTPMarkupScrollBar::SetOrientation(XTPMarkupOrientation orientation) {
- m_orientation = orientation;
- }
- AFX_INLINE XTPMarkupScrollBarVisibility CXTPMarkupScrollViewer::GetVerticalScrollBarVisibility() const {
- CXTPMarkupEnum* pValue = MARKUP_STATICCAST(CXTPMarkupEnum, GetValue(m_pVerticalScrollBarVisibilityProperty));
- return pValue ? (XTPMarkupScrollBarVisibility)(int)(*pValue) : xtpMarkupScrollBarVisible;
- }
- AFX_INLINE XTPMarkupScrollBarVisibility CXTPMarkupScrollViewer::GetHorizontalScrollBarVisibility() const {
- CXTPMarkupEnum* pValue = MARKUP_STATICCAST(CXTPMarkupEnum, GetValue(m_pHorizontalScrollBarVisibilityProperty));
- return pValue ? (XTPMarkupScrollBarVisibility)(int)(*pValue) : xtpMarkupScrollBarDisabled;
- }
- #endif // !defined(__XTPMARKUPSCROLLVIEWER_H__)