2019-04-19 17:19:57 +08:00
# ifndef UI_CORE_BOX_H_
# define UI_CORE_BOX_H_
# pragma once
namespace ui
{
class Box ;
class UILIB_API Layout
{
public :
Layout ( ) ;
Layout & operator = ( const Layout & r ) = delete ;
virtual ~ Layout ( ) { }
/**
* @ brief <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ return <EFBFBD> <EFBFBD>
*/
void SetOwner ( Box * pOwner ) ;
/**
* @ brief <EFBFBD> <EFBFBD> <EFBFBD> ø <EFBFBD> <EFBFBD> <EFBFBD> ״ ̬ <EFBFBD> µ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ϣ
* @ param [ in ] pControl <EFBFBD> ؼ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ param [ in ] rcContainer Ҫ <EFBFBD> <EFBFBD> <EFBFBD> õ <EFBFBD> λ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ϣ
* @ return <EFBFBD> <EFBFBD> <EFBFBD> ؿ ؼ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> յ <EFBFBD> λ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ϣ
*/
static CSize SetFloatPos ( Control * pControl , UiRect rcContainer ) ;
/**
* @ brief <EFBFBD> <EFBFBD> <EFBFBD> ò <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ param [ in ] strName Ҫ <EFBFBD> <EFBFBD> <EFBFBD> õ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ param [ in ] strValue Ҫ <EFBFBD> <EFBFBD> <EFBFBD> õ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ֵ
* @ return true <EFBFBD> <EFBFBD> <EFBFBD> ó ɹ <EFBFBD> <EFBFBD> <EFBFBD> false <EFBFBD> <EFBFBD> <EFBFBD> Բ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
*/
virtual bool SetAttribute ( const std : : wstring & strName , const std : : wstring & strValue ) ;
/**
* @ brief <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ڲ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> п ؼ <EFBFBD> <EFBFBD> <EFBFBD> λ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ϣ
* @ param [ in ] items <EFBFBD> ؼ <EFBFBD> <EFBFBD> б <EFBFBD>
* @ param [ in ] rc <EFBFBD> <EFBFBD> ǰ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> λ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ϣ
* @ return <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> к <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> պ <EFBFBD> <EFBFBD> ӵ Ŀ <EFBFBD> <EFBFBD> Ⱥ ߶ <EFBFBD> <EFBFBD> <EFBFBD> Ϣ
*/
virtual CSize ArrangeChild ( const std : : vector < Control * > & items , UiRect rc ) ;
/**
* @ brief <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ڲ <EFBFBD> <EFBFBD> ӿ ؼ <EFBFBD> <EFBFBD> <EFBFBD> С <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> С
* @ param [ in ] items <EFBFBD> ؼ <EFBFBD> <EFBFBD> б <EFBFBD>
* @ param [ in ] szAvailable <EFBFBD> ӿ ؼ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ return <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> к <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> պ <EFBFBD> <EFBFBD> ӵ Ŀ <EFBFBD> <EFBFBD> Ⱥ ߶ <EFBFBD> <EFBFBD> <EFBFBD> Ϣ
*/
virtual CSize AjustSizeByChild ( const std : : vector < Control * > & items , CSize szAvailable ) ;
/**
* @ brief <EFBFBD> <EFBFBD> ȡ <EFBFBD> ڱ ߾ <EFBFBD>
* @ return <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ڱ ߾ <EFBFBD> <EFBFBD> ı ߵ Ĵ <EFBFBD> С
*/
virtual UiRect GetPadding ( ) const ;
/**
* @ brief <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ڱ ߾ ࣬ <EFBFBD> ൱ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ÿ ͻ <EFBFBD> <EFBFBD> <EFBFBD>
* @ param [ in ] rcPadding <EFBFBD> ڱ ߾ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ param [ in ] bNeedDpiScale <EFBFBD> Ƿ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> DPI <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ӧ <EFBFBD> <EFBFBD> Ĭ <EFBFBD> <EFBFBD> Ϊ true
* @ return <EFBFBD> <EFBFBD>
*/
virtual void SetPadding ( UiRect rcPadding , bool bNeedDpiScale = true ) ;
/**
* @ brief <EFBFBD> <EFBFBD> ȡ <EFBFBD> ӿ ؼ <EFBFBD> ֮ <EFBFBD> <EFBFBD> <EFBFBD> Ķ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ߾ <EFBFBD>
* @ return <EFBFBD> <EFBFBD> <EFBFBD> ض <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ֵ
*/
virtual int GetChildMargin ( ) const ;
/**
* @ brief <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ӿ ؼ <EFBFBD> ֮ <EFBFBD> <EFBFBD> <EFBFBD> Ķ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ߾ <EFBFBD>
* @ param [ in ] iMargin Ҫ <EFBFBD> <EFBFBD> <EFBFBD> õ ı ߾ <EFBFBD> <EFBFBD> <EFBFBD> ֵ
* @ return <EFBFBD> <EFBFBD>
*/
virtual void SetChildMargin ( int iMargin ) ;
/**
* @ brief <EFBFBD> <EFBFBD> ȡ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ڱ ߾ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ŀ <EFBFBD> <EFBFBD> ÷ <EFBFBD> Χ
* @ return <EFBFBD> <EFBFBD> <EFBFBD> ؿ <EFBFBD> <EFBFBD> ÷ <EFBFBD> Χ λ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ϣ
*/
UiRect GetInternalPos ( ) const ;
protected :
UiRect m_rcPadding ;
int m_iChildMargin ;
Box * m_pOwner ;
} ;
/////////////////////////////////////////////////////////////////////////////////////
//
class ScrollBar ;
class UILIB_API Box : public Control
{
public :
Box ( Layout * pLayout = new Layout ( ) ) ;
Box ( const Box & r ) ;
Box & operator = ( const Box & r ) = delete ;
virtual ~ Box ( ) ;
public :
/// <20> <> д<EFBFBD> <D0B4> <EFBFBD> <EFBFBD> <EFBFBD> ӿڣ<D3BF> <DAA3> ṩ<EFBFBD> <E1B9A9> <EFBFBD> Ի<EFBFBD> <D4BB> <EFBFBD> <EFBFBD> ܡ<EFBFBD> <DCA1> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ˵<EFBFBD> <CBB5> <EFBFBD> <EFBFBD> <EFBFBD> 鿴 Control <20> ؼ<EFBFBD> */
virtual void SetWindow ( Window * pManager , Box * pParent , bool bInit = true ) override ;
virtual void SetAttribute ( const std : : wstring & strName , const std : : wstring & strValue ) override ;
virtual void SetPos ( UiRect rc ) override ;
virtual void HandleMessageTemplate ( EventArgs & msg ) override ;
virtual void PaintChild ( IRenderContext * pRender , const UiRect & rcPaint ) override ;
virtual void SetVisible_ ( bool bVisible ) override ;
virtual void SetInternVisible ( bool bVisible = true ) override ;
virtual void SetEnabled ( bool bEnabled ) override ;
virtual CSize EstimateSize ( CSize szAvailable ) override ;
virtual Control * FindControl ( FINDCONTROLPROC Proc , LPVOID pData , UINT uFlags , CPoint scrollPos = CPoint ( ) ) override ;
virtual void InvokeLoadImageCache ( ) override ;
virtual void UnLoadImageCache ( ) override ;
virtual void ClearImageCache ( ) override ;
2019-07-17 15:29:33 +08:00
virtual UINT GetControlFlags ( ) const override ;
2019-04-19 17:19:57 +08:00
2019-07-17 15:29:33 +08:00
/// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> з<EFBFBD> <D0B7> <EFBFBD>
2019-04-19 17:19:57 +08:00
/**
* @ brief <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ָ <EFBFBD> <EFBFBD> <EFBFBD> ӿ ؼ <EFBFBD>
* @ param [ in ] pstrSubControlName <EFBFBD> ӿ ؼ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ return <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ӿ ؼ <EFBFBD> ָ <EFBFBD> <EFBFBD>
*/
Control * FindSubControl ( const std : : wstring & pstrSubControlName ) ;
/**
* @ brief <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> һ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ѡ <EFBFBD> ؼ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> list <EFBFBD> <EFBFBD> combo <EFBFBD> <EFBFBD>
* @ param [ in ] iIndex ָ <EFBFBD> <EFBFBD> Ҫ <EFBFBD> <EFBFBD> ʼ <EFBFBD> <EFBFBD> <EFBFBD> ҵ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ param [ in ] bForward true Ϊ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ң <EFBFBD> false Ϊ <EFBFBD> ݼ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ return <EFBFBD> <EFBFBD> һ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ѡ <EFBFBD> ؼ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> - 1 Ϊ û <EFBFBD> п <EFBFBD> ѡ <EFBFBD> ؼ <EFBFBD>
*/
virtual int FindSelectable ( int iIndex , bool bForward = true ) const ;
/**
* @ brief <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ָ <EFBFBD> <EFBFBD> <EFBFBD> ؼ <EFBFBD>
* @ param [ in ] iIndex <EFBFBD> ؼ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ return <EFBFBD> <EFBFBD> <EFBFBD> ؿ ؼ <EFBFBD> ָ <EFBFBD> <EFBFBD>
*/
virtual Control * GetItemAt ( std : : size_t iIndex ) const ;
/**
* @ brief <EFBFBD> <EFBFBD> <EFBFBD> ݿ ؼ <EFBFBD> ָ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ȡ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ param [ in ] pControl <EFBFBD> ؼ <EFBFBD> ָ <EFBFBD> <EFBFBD>
* @ return <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> pControl <EFBFBD> <EFBFBD> ָ <EFBFBD> <EFBFBD> <EFBFBD> Ŀ ؼ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
*/
virtual int GetItemIndex ( Control * pControl ) const ;
/**
* @ brief <EFBFBD> <EFBFBD> <EFBFBD> ÿ ؼ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ڲ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> п ؼ <EFBFBD> λ <EFBFBD> ã <EFBFBD>
* @ param [ in ] pControl <EFBFBD> ؼ <EFBFBD> ָ <EFBFBD> <EFBFBD>
* @ param [ in ] iIndex Ҫ <EFBFBD> <EFBFBD> <EFBFBD> õ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ֵ
* @ return <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> true <EFBFBD> <EFBFBD> <EFBFBD> ó ɹ <EFBFBD> <EFBFBD> <EFBFBD> false <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ʧ <EFBFBD> <EFBFBD>
*/
virtual bool SetItemIndex ( Control * pControl , std : : size_t iIndex ) ;
/**
* @ brief <EFBFBD> <EFBFBD> ȡ <EFBFBD> ӿ ؼ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ return <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ӿ ؼ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
*/
virtual int GetCount ( ) const ;
/**
* @ brief <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> һ <EFBFBD> <EFBFBD> <EFBFBD> ؼ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ param [ in ] pControl <EFBFBD> ؼ <EFBFBD> ָ <EFBFBD> <EFBFBD>
* @ return <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> true <EFBFBD> <EFBFBD> <EFBFBD> ӳ ɹ <EFBFBD> <EFBFBD> <EFBFBD> false Ϊ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ʧ <EFBFBD> <EFBFBD>
*/
virtual bool Add ( Control * pControl ) ;
/**
* @ brief <EFBFBD> <EFBFBD> ָ <EFBFBD> <EFBFBD> λ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> һ <EFBFBD> <EFBFBD> <EFBFBD> ؼ <EFBFBD>
* @ param [ in ] pControl <EFBFBD> ؼ <EFBFBD> ָ <EFBFBD> <EFBFBD>
* @ param [ in ] iIndex <EFBFBD> ڸ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ֮ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ؼ <EFBFBD>
* @ return <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> true Ϊ <EFBFBD> <EFBFBD> <EFBFBD> ӳ ɹ <EFBFBD> <EFBFBD> <EFBFBD> false Ϊ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ʧ <EFBFBD> <EFBFBD>
*/
virtual bool AddAt ( Control * pControl , std : : size_t iIndex ) ;
/**
* @ brief <EFBFBD> <EFBFBD> <EFBFBD> ݿ ؼ <EFBFBD> ָ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ƴ <EFBFBD> һ <EFBFBD> <EFBFBD> <EFBFBD> ؼ <EFBFBD>
* @ param [ in ] pControl <EFBFBD> ؼ <EFBFBD> <EFBFBD> <EFBFBD> ָ <EFBFBD> <EFBFBD>
* @ return <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> true Ϊ <EFBFBD> Ƴ <EFBFBD> <EFBFBD> ɹ <EFBFBD> <EFBFBD> <EFBFBD> false Ϊ <EFBFBD> Ƴ <EFBFBD> ʧ <EFBFBD> ܣ <EFBFBD> <EFBFBD> ؼ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ܲ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ڣ <EFBFBD>
*/
virtual bool Remove ( Control * pControl ) ;
/**
* @ brief <EFBFBD> <EFBFBD> <EFBFBD> ݿ ؼ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ƴ <EFBFBD> һ <EFBFBD> <EFBFBD> <EFBFBD> ؼ <EFBFBD>
* @ param [ in ] iIndex Ҫ <EFBFBD> Ƴ <EFBFBD> <EFBFBD> Ŀ ؼ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ return <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> true Ϊ <EFBFBD> Ƴ <EFBFBD> <EFBFBD> ɹ <EFBFBD> <EFBFBD> <EFBFBD> false Ϊ <EFBFBD> Ƴ <EFBFBD> ʧ <EFBFBD> ܣ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ֵ ̫ С <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ӿ ؼ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
*/
virtual bool RemoveAt ( std : : size_t iIndex ) ;
/**
* @ brief <EFBFBD> Ƴ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ӿ ؼ <EFBFBD>
* @ return <EFBFBD> <EFBFBD>
*/
virtual void RemoveAll ( ) ;
/**
* @ brief <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ӿ ؼ <EFBFBD> λ <EFBFBD> <EFBFBD>
* @ param [ in ] pChild1 <EFBFBD> ӿ ؼ <EFBFBD> 1 ָ <EFBFBD> <EFBFBD>
* @ param [ in ] pChild2 <EFBFBD> ӿ ؼ <EFBFBD> 2 ָ <EFBFBD> <EFBFBD>
* @ return <EFBFBD> <EFBFBD>
*/
void SwapChild ( Control * pChild1 , Control * pChild2 ) ;
/**
* @ brief <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> һ <EFBFBD> <EFBFBD> <EFBFBD> ӿ ؼ <EFBFBD> λ <EFBFBD> <EFBFBD>
* @ param [ in ] pChild <EFBFBD> ؼ <EFBFBD> ָ <EFBFBD> <EFBFBD>
* @ param [ in ] iIndex Ҫ <EFBFBD> <EFBFBD> <EFBFBD> õ <EFBFBD> λ <EFBFBD> <EFBFBD>
* @ return <EFBFBD> <EFBFBD>
*/
void ResetChildIndex ( Control * pChild , std : : size_t iIndex ) ;
/**
* @ brief <EFBFBD> ж <EFBFBD> <EFBFBD> Ƿ <EFBFBD> <EFBFBD> Զ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ return true Ϊ <EFBFBD> Զ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ٣ <EFBFBD> false Ϊ <EFBFBD> <EFBFBD> <EFBFBD> Զ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
*/
virtual bool IsAutoDestroy ( ) const ;
/**
* @ brief <EFBFBD> <EFBFBD> <EFBFBD> ÿ ؼ <EFBFBD> <EFBFBD> Ƿ <EFBFBD> <EFBFBD> Զ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ param [ in ] bAuto true Ϊ <EFBFBD> Զ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ٣ <EFBFBD> false Ϊ <EFBFBD> <EFBFBD> <EFBFBD> Զ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ return <EFBFBD> <EFBFBD>
*/
virtual void SetAutoDestroy ( bool bAuto ) ;
/**
* @ brief <EFBFBD> ж ϴ <EFBFBD> <EFBFBD> ڹ ر պ <EFBFBD> <EFBFBD> Ƿ <EFBFBD> <EFBFBD> Զ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ return true Ϊ <EFBFBD> Զ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ٣ <EFBFBD> false Ϊ <EFBFBD> <EFBFBD> <EFBFBD> Զ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
*/
virtual bool IsDelayedDestroy ( ) const ;
/**
* @ brief <EFBFBD> <EFBFBD> <EFBFBD> ô <EFBFBD> <EFBFBD> ڹ ر պ <EFBFBD> <EFBFBD> Ƿ <EFBFBD> <EFBFBD> Զ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ param [ in ] bDelayed true Ϊ <EFBFBD> Զ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ٣ <EFBFBD> false Ϊ <EFBFBD> <EFBFBD> <EFBFBD> Զ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ return <EFBFBD> <EFBFBD>
*/
virtual void SetDelayedDestroy ( bool bDelayed ) ;
/**
* @ brief <EFBFBD> <EFBFBD> ȡ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ƿ <EFBFBD> <EFBFBD> <EFBFBD> Ӧ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ return true Ϊ <EFBFBD> <EFBFBD> Ӧ <EFBFBD> <EFBFBD> false Ϊ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ӧ
*/
virtual bool IsMouseChildEnabled ( ) const ;
/**
* @ brief <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ӧ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ param [ in ] bEnable <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ϊ true Ϊ <EFBFBD> <EFBFBD> Ӧ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ϊ false Ϊ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ӧ <EFBFBD> <EFBFBD> Ĭ <EFBFBD> <EFBFBD> Ϊ true
* @ return <EFBFBD> <EFBFBD>
*/
virtual void SetMouseChildEnabled ( bool bEnable = true ) ;
/**
* @ brief <EFBFBD> <EFBFBD> ȡ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ֶ <EFBFBD> <EFBFBD> <EFBFBD> ָ <EFBFBD> <EFBFBD>
* @ return <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> IJ <EFBFBD> <EFBFBD> ֶ <EFBFBD> <EFBFBD> <EFBFBD> ָ <EFBFBD> <EFBFBD>
*/
virtual Layout * GetLayout ( ) const ;
/**
* @ brief <EFBFBD> <EFBFBD> <EFBFBD> ¹ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ֶ <EFBFBD> <EFBFBD> <EFBFBD>
* @ param [ in ] pLayout <EFBFBD> <EFBFBD> <EFBFBD> ֶ <EFBFBD> <EFBFBD> <EFBFBD> ָ <EFBFBD> <EFBFBD>
* @ return <EFBFBD> <EFBFBD>
*/
virtual void RetSetLayout ( Layout * pLayout ) ;
/**
* @ brief <EFBFBD> <EFBFBD> ȡ <EFBFBD> ڱ ߾ <EFBFBD> <EFBFBD> <EFBFBD> λ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ϣ
* @ return <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ڱ ߾ <EFBFBD> <EFBFBD> <EFBFBD> λ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ϣ
*/
virtual UiRect GetPaddingPos ( ) const ;
/**
* @ brief <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ¼ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ param [ in ] eventType <EFBFBD> ¼ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ return callback ָ <EFBFBD> <EFBFBD> <EFBFBD> ص <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
*/
void AttachBubbledEvent ( EventType eventType , const EventCallback & callback ) { OnBubbledEvent [ eventType ] + = callback ; }
private :
friend WindowBuilder ;
/**
* @ brief <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> XML <EFBFBD> б <EFBFBD> д <EFBFBD> <EFBFBD> Event <EFBFBD> <EFBFBD> BubbleEvent <EFBFBD> ¼ <EFBFBD> <EFBFBD> Ĵ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ param [ in ] eventType <EFBFBD> ¼ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ return callback ָ <EFBFBD> <EFBFBD> <EFBFBD> ص <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
*/
void AttachXmlBubbledEvent ( EventType eventType , const EventCallback & callback ) { OnXmlBubbledEvent [ eventType ] + = callback ; }
EventMap OnXmlBubbledEvent ;
protected :
std : : unique_ptr < Layout > m_pLayout ;
bool m_bAutoDestroy ;
bool m_bDelayedDestroy ;
bool m_bMouseChildEnabled ;
std : : vector < Control * > m_items ;
EventMap OnBubbledEvent ;
} ;
/// <20> <> <EFBFBD> д<EFBFBD> ֱ<EFBFBD> <D6B1> ˮƽ <CBAE> <C6BD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ʹ <EFBFBD> <CAB9> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ɸ<EFBFBD> <C9B8> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
class UILIB_API ScrollableBox : public Box
{
public :
ScrollableBox ( Layout * pLayout ) ;
ScrollableBox ( const ScrollableBox & r ) ;
ScrollableBox & operator = ( const ScrollableBox & r ) = delete ;
virtual void SetAttribute ( const std : : wstring & pstrName , const std : : wstring & pstrValue ) override ;
virtual void SetPos ( UiRect rc ) override ;
virtual void HandleMessage ( EventArgs & event ) override ;
virtual bool MouseEnter ( EventArgs & msg ) override ;
virtual bool MouseLeave ( EventArgs & msg ) override ;
virtual void PaintChild ( IRenderContext * pRender , const UiRect & rcPaint ) override ;
virtual void SetMouseEnabled ( bool bEnable = true ) override ;
virtual void SetWindow ( Window * pManager , Box * pParent , bool bInit ) override ;
virtual Control * FindControl ( FINDCONTROLPROC Proc , LPVOID pData , UINT uFlags , CPoint scrollPos = CPoint ( ) ) override ;
virtual void ClearImageCache ( ) override ;
/**
* @ brief <EFBFBD> <EFBFBD> ȡ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> λ <EFBFBD> <EFBFBD>
* @ return <EFBFBD> <EFBFBD> <EFBFBD> ع <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> λ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ϣ
*/
virtual CSize GetScrollPos ( ) const ;
/**
* @ brief <EFBFBD> <EFBFBD> ȡ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ķ <EFBFBD> Χ
* @ return <EFBFBD> <EFBFBD> <EFBFBD> ع <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ķ <EFBFBD> Χ <EFBFBD> <EFBFBD> Ϣ
*/
virtual CSize GetScrollRange ( ) const ;
/**
* @ brief <EFBFBD> <EFBFBD> <EFBFBD> ù <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> λ <EFBFBD> <EFBFBD>
* @ param [ in ] szPos Ҫ <EFBFBD> <EFBFBD> <EFBFBD> õ <EFBFBD> λ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ return <EFBFBD> <EFBFBD>
*/
virtual void SetScrollPos ( CSize szPos ) ;
/**
* @ brief <EFBFBD> <EFBFBD> <EFBFBD> ù <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Y <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ param [ in ] y Ҫ <EFBFBD> <EFBFBD> <EFBFBD> õ <EFBFBD> Y <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ֵ
* @ return <EFBFBD> <EFBFBD>
*/
virtual void SetScrollPosY ( int y ) ;
/**
* @ brief <EFBFBD> <EFBFBD> <EFBFBD> ù <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> X <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ param [ in ] x Ҫ <EFBFBD> <EFBFBD> <EFBFBD> õ <EFBFBD> X <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ֵ
* @ return <EFBFBD> <EFBFBD>
*/
virtual void SetScrollPosX ( int x ) ;
/**
* @ brief <EFBFBD> <EFBFBD> <EFBFBD> Ϲ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ param [ in ] deltaValue <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 룬 Ĭ <EFBFBD> <EFBFBD> Ϊ DUI_NOSET_VALUE
* @ param [ in ] withAnimation <EFBFBD> Ƿ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ч <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ĭ <EFBFBD> <EFBFBD> Ϊ true
* @ return <EFBFBD> <EFBFBD>
*/
virtual void LineUp ( int detaValue = DUI_NOSET_VALUE , bool withAnimation = true ) ;
/**
* @ brief <EFBFBD> <EFBFBD> <EFBFBD> ¹ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ param [ in ] deltaValue <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 룬 Ĭ <EFBFBD> <EFBFBD> Ϊ DUI_NOSET_VALUE
* @ param [ in ] withAnimation <EFBFBD> Ƿ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ч <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ĭ <EFBFBD> <EFBFBD> Ϊ true
* @ return <EFBFBD> <EFBFBD>
*/
virtual void LineDown ( int detaValue = DUI_NOSET_VALUE , bool withAnimation = true ) ;
/**
* @ brief <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ param [ in ] deltaValue <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 룬 Ĭ <EFBFBD> <EFBFBD> Ϊ DUI_NOSET_VALUE
* @ return <EFBFBD> <EFBFBD>
*/
virtual void LineLeft ( int detaValue = DUI_NOSET_VALUE ) ;
/**
* @ brief <EFBFBD> <EFBFBD> <EFBFBD> ҹ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ param [ in ] deltaValue <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 룬 Ĭ <EFBFBD> <EFBFBD> Ϊ DUI_NOSET_VALUE
* @ return <EFBFBD> <EFBFBD>
*/
virtual void LineRight ( int detaValue = DUI_NOSET_VALUE ) ;
/**
* @ brief <EFBFBD> <EFBFBD> <EFBFBD> Ϲ <EFBFBD> <EFBFBD> <EFBFBD> һ <EFBFBD> <EFBFBD> ҳ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> С <EFBFBD> ľ <EFBFBD> <EFBFBD> <EFBFBD>
* @ return <EFBFBD> <EFBFBD>
*/
virtual void PageUp ( ) ;
/**
* @ brief <EFBFBD> <EFBFBD> <EFBFBD> ¹ <EFBFBD> <EFBFBD> <EFBFBD> һ <EFBFBD> <EFBFBD> ҳ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> С <EFBFBD> ľ <EFBFBD> <EFBFBD> <EFBFBD>
* @ return <EFBFBD> <EFBFBD>
*/
virtual void PageDown ( ) ;
/**
* @ brief <EFBFBD> ص <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ϸ <EFBFBD>
* @ return <EFBFBD> <EFBFBD>
*/
virtual void HomeUp ( ) ;
/**
* @ brief <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> · <EFBFBD> λ <EFBFBD> <EFBFBD>
* @ param [ in ] arrange <EFBFBD> Ƿ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ù <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> λ <EFBFBD> ã <EFBFBD> Ĭ <EFBFBD> <EFBFBD> Ϊ true
* @ param [ in ] withAnimation <EFBFBD> Ƿ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ч <EFBFBD> <EFBFBD> Ĭ <EFBFBD> <EFBFBD> Ϊ true
* @ return <EFBFBD> <EFBFBD>
*/
virtual void EndDown ( bool arrange = true , bool withAnimation = true ) ;
/**
* @ brief <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> һ <EFBFBD> <EFBFBD> ҳ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> С <EFBFBD> ľ <EFBFBD> <EFBFBD> <EFBFBD>
* @ return <EFBFBD> <EFBFBD>
*/
virtual void PageLeft ( ) ;
/**
* @ brief <EFBFBD> <EFBFBD> <EFBFBD> ҹ <EFBFBD> <EFBFBD> <EFBFBD> һ <EFBFBD> <EFBFBD> ҳ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> С <EFBFBD> ľ <EFBFBD> <EFBFBD> <EFBFBD>
* @ return <EFBFBD> <EFBFBD>
*/
virtual void PageRight ( ) ;
/**
* @ brief <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ return <EFBFBD> <EFBFBD>
*/
virtual void HomeLeft ( ) ;
/**
* @ brief <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ҳ <EFBFBD>
* @ return <EFBFBD> <EFBFBD>
*/
virtual void EndRight ( ) ;
/**
* @ brief <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ϲ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ӧ WM_TOUCH <EFBFBD> <EFBFBD> Ϣ <EFBFBD> <EFBFBD>
* @ param [ in ] deltaValue <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ return <EFBFBD> <EFBFBD>
*/
virtual void TouchUp ( int deltaValue ) ;
/**
* @ brief <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ¹ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ӧ WM_TOUCH <EFBFBD> <EFBFBD> Ϣ <EFBFBD> <EFBFBD>
* @ param [ in ] deltaValue <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ return <EFBFBD> <EFBFBD>
*/
virtual void TouchDown ( int deltaValue ) ;
/**
* @ brief <EFBFBD> <EFBFBD> <EFBFBD> ù <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ param [ in ] bEnableVertical <EFBFBD> Ƿ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ô <EFBFBD> ֱ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ĭ <EFBFBD> <EFBFBD> Ϊ true
* @ param [ in ] bEnableHorizontal <EFBFBD> Ƿ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ˮ ƽ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ĭ <EFBFBD> <EFBFBD> Ϊ true
* @ return <EFBFBD> <EFBFBD>
*/
virtual void EnableScrollBar ( bool bEnableVertical = true , bool bEnableHorizontal = false ) ;
/**
* @ brief <EFBFBD> <EFBFBD> ȡ <EFBFBD> <EFBFBD> ֱ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ָ <EFBFBD> <EFBFBD>
* @ return <EFBFBD> <EFBFBD> <EFBFBD> ش <EFBFBD> ֱ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ָ <EFBFBD> <EFBFBD>
*/
virtual ScrollBar * GetVerticalScrollBar ( ) const ;
/**
* @ brief <EFBFBD> <EFBFBD> ȡ ˮ ƽ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ָ <EFBFBD> <EFBFBD>
* @ return <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ˮ ƽ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ָ <EFBFBD> <EFBFBD>
*/
virtual ScrollBar * GetHorizontalScrollBar ( ) const ;
/**
* @ brief <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ param [ in ] <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ return <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
*/
virtual void ProcessVScrollBar ( UiRect rc , int cyRequired ) ;
/**
* @ brief <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ param [ in ] <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ return <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
*/
virtual void ProcessHScrollBar ( UiRect rc , int cxRequired ) ;
/**
* @ brief <EFBFBD> ж ϴ <EFBFBD> ֱ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ƿ <EFBFBD> <EFBFBD> <EFBFBD> Ч
* @ return <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> true <EFBFBD> <EFBFBD> ʾ <EFBFBD> <EFBFBD> Ч <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> false Ϊ <EFBFBD> <EFBFBD> Ч
*/
bool IsVScrollBarValid ( ) const ;
/**
* @ brief <EFBFBD> ж <EFBFBD> ˮ ƽ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ƿ <EFBFBD> <EFBFBD> <EFBFBD> Ч
* @ return <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> true <EFBFBD> <EFBFBD> ʾ <EFBFBD> <EFBFBD> Ч <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> false Ϊ <EFBFBD> <EFBFBD> Ч
*/
bool IsHScrollBarValid ( ) const ;
/**
* @ brief <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ param [ in ] <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ return <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
*/
void ReomveLastItemAnimation ( ) ;
/**
* @ brief <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ param [ in ] <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ return <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
*/
void PlayRenderOffsetYAnimation ( int nRenderY ) ;
/**
* @ brief <EFBFBD> Ƿ <EFBFBD> <EFBFBD> Ѿ <EFBFBD> <EFBFBD> ڵ ײ <EFBFBD>
* @ return <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> true <EFBFBD> <EFBFBD> ʾ <EFBFBD> Ѿ <EFBFBD> <EFBFBD> ڵ ײ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ϊ false
*/
bool IsAtEnd ( ) const ;
/**
* @ brief <EFBFBD> Ƿ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ײ <EFBFBD>
* @ return <EFBFBD> <EFBFBD> true <EFBFBD> <EFBFBD> ʾ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ڵ ײ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ϊ false
*/
bool IsHoldEnd ( ) const ;
/**
* @ brief <EFBFBD> <EFBFBD> <EFBFBD> ù <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ƿ <EFBFBD> ʼ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ײ <EFBFBD> λ <EFBFBD> <EFBFBD>
* @ param [ in ] bHoldEnd <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> true <EFBFBD> <EFBFBD> ʾ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> false Ϊ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ return <EFBFBD> <EFBFBD>
*/
void SetHoldEnd ( bool bHoldEnd ) ;
/**
* @ brief <EFBFBD> <EFBFBD> ȡ <EFBFBD> <EFBFBD> ֱ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ return <EFBFBD> <EFBFBD> <EFBFBD> ع <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
*/
int GetVerScrollUnitPixels ( ) const ;
/**
* @ brief <EFBFBD> <EFBFBD> <EFBFBD> ô <EFBFBD> ֱ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ param [ in ] nUnitPixels Ҫ <EFBFBD> <EFBFBD> <EFBFBD> õ IJ <EFBFBD> <EFBFBD> <EFBFBD>
* @ return <EFBFBD> <EFBFBD>
*/
void SetVerScrollUnitPixels ( int nUnitPixels ) ;
/**
* @ brief <EFBFBD> <EFBFBD> ȡ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ return <EFBFBD> <EFBFBD> <EFBFBD> ع <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
*/
int GetHorScrollUnitPixels ( ) const ;
/**
* @ brief <EFBFBD> <EFBFBD> <EFBFBD> ú <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ param [ in ] nUnitPixels Ҫ <EFBFBD> <EFBFBD> <EFBFBD> õ IJ <EFBFBD> <EFBFBD> <EFBFBD>
* @ return <EFBFBD> <EFBFBD>
*/
void SetHorScrollUnitPixels ( int nUnitPixels ) ;
/**
* @ brief <EFBFBD> <EFBFBD> ȡ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ĺ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ƿ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ӿ ؼ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ return <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> true <EFBFBD> <EFBFBD> ʾ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ڹ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ϣ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ϊ false
*/
bool GetScrollBarFloat ( ) const ;
/**
* @ brief <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ĺ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ƿ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ӿ ؼ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ param [ in ] bScrollBarFloat true <EFBFBD> <EFBFBD> ʾ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ڹ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ϣ <EFBFBD> false <EFBFBD> <EFBFBD> ʾ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ڿ ؼ <EFBFBD> <EFBFBD> <EFBFBD>
* @ return <EFBFBD> <EFBFBD>
*/
void SetScrollBarFloat ( bool bScrollBarFloat ) ;
/**
* @ brief <EFBFBD> <EFBFBD> ȡ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ߾ <EFBFBD>
* @ return <EFBFBD> <EFBFBD> <EFBFBD> ر ߾ <EFBFBD> <EFBFBD> <EFBFBD> Ϣ
*/
UiRect GetScrollBarPadding ( ) const ;
/**
* @ brief <EFBFBD> <EFBFBD> <EFBFBD> ù <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ߾ ࣬ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ù <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ռ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ param [ in ] rcScrollBarPadding Ҫ <EFBFBD> <EFBFBD> <EFBFBD> õ ı ߾ <EFBFBD>
* @ return <EFBFBD> <EFBFBD>
*/
void SetScrollBarPadding ( UiRect rcScrollBarPadding ) ;
/**
* @ brief <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ param [ in ] <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ return <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
*/
bool GetDefaultDisplayScrollbar ( ) const ;
/**
* @ brief <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ param [ in ] <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ return <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
*/
void SetDefaultDisplayScrollbar ( bool bDefaultDisplay ) ;
/**
* @ brief <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> λ <EFBFBD> ñ 仯 <EFBFBD> ¼ <EFBFBD>
* @ param [ in ] callback <EFBFBD> б 仯 <EFBFBD> <EFBFBD> ͨ ֪ <EFBFBD> Ļ ص <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ return <EFBFBD> <EFBFBD>
*/
void AttachScrollChange ( const EventCallback & callback ) { OnEvent [ kEventScrollChange ] + = callback ; }
protected :
/**
* @ brief <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ij ߴ <EFBFBD>
* @ param [ in ] rc <EFBFBD> <EFBFBD> ǰ λ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ϣ
* @ return <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ߴ <EFBFBD> <EFBFBD> <EFBFBD> С
*/
virtual CSize CalcRequiredSize ( const UiRect & rc ) ;
/**
* @ brief <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ͼ Ƭ <EFBFBD> <EFBFBD> <EFBFBD> 棬 <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ScrollableBox <EFBFBD> ڲ <EFBFBD> ʹ <EFBFBD> <EFBFBD>
* @ param [ in ] bFromTopLeft <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ return <EFBFBD> <EFBFBD>
*/
void LoadImageCache ( bool bFromTopLeft ) ;
private :
/**
* @ brief <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ param [ in ] <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* @ return <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
*/
void SetPosInternally ( UiRect rc ) ;
protected :
std : : unique_ptr < ScrollBar > m_pVerticalScrollBar ;
std : : unique_ptr < ScrollBar > m_pHorizontalScrollBar ;
int m_nVerScrollUnitPixels ;
int m_nHerScrollUnitPixels ;
bool m_bScrollProcess ; // <20> <> ֹSetPosѭ<73> <D1AD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
bool m_bHoldEnd ;
bool m_bScrollBarFloat ;
bool m_bDefaultDisplayScrollbar ;
UiRect m_rcScrollBarPadding ;
CPoint m_ptLastTouchPos ;
AnimationPlayer m_scrollAnimation ;
AnimationPlayer m_renderOffsetYAnimation ;
} ;
} // namespace ui
# endif // UI_CORE_BOX_H_