UIContainer.h 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. #ifndef __UICONTAINER_H__
  2. #define __UICONTAINER_H__
  3. #pragma once
  4. namespace DuiLib {
  5. /////////////////////////////////////////////////////////////////////////////////////
  6. //
  7. class IContainerUI
  8. {
  9. public:
  10. virtual CControlUI* GetItemAt(int iIndex) const = 0;
  11. virtual int GetItemIndex(CControlUI* pControl) const = 0;
  12. virtual bool SetItemIndex(CControlUI* pControl, int iNewIndex) = 0;
  13. virtual bool SetMultiItemIndex(CControlUI* pStartControl, int iCount, int iNewStartIndex) = 0;
  14. virtual int GetCount() const = 0;
  15. virtual bool Add(CControlUI* pControl) = 0;
  16. virtual bool AddAt(CControlUI* pControl, int iIndex) = 0;
  17. virtual bool Remove(CControlUI* pControl, bool bDoNotDestroy=false) = 0;
  18. virtual bool RemoveAt(int iIndex, bool bDoNotDestroy=false) = 0;
  19. virtual void RemoveAll() = 0;
  20. };
  21. /////////////////////////////////////////////////////////////////////////////////////
  22. //
  23. class CScrollBarUI;
  24. class DUILIB_API CContainerUI : public CControlUI, public IContainerUI
  25. {
  26. public:
  27. CContainerUI();
  28. virtual ~CContainerUI();
  29. public:
  30. LPCTSTR GetClass() const;
  31. LPVOID GetInterface(LPCTSTR pstrName);
  32. CControlUI* GetItemAt(int iIndex) const;
  33. int GetItemIndex(CControlUI* pControl) const;
  34. bool SetItemIndex(CControlUI* pControl, int iNewIndex);
  35. bool SetMultiItemIndex(CControlUI* pStartControl, int iCount, int iNewStartIndex);
  36. int GetCount() const;
  37. bool Add(CControlUI* pControl);
  38. bool AddAt(CControlUI* pControl, int iIndex);
  39. bool Remove(CControlUI* pControl, bool bDoNotDestroy=false);
  40. bool RemoveAt(int iIndex, bool bDoNotDestroy=false);
  41. void RemoveAll();
  42. void DoEvent(TEventUI& event);
  43. void SetVisible(bool bVisible = true);
  44. void SetInternVisible(bool bVisible = true);
  45. void SetMouseEnabled(bool bEnable = true);
  46. virtual RECT GetInset() const;
  47. virtual void SetInset(RECT rcInset); // 设置内边距,相当于设置客户区
  48. virtual int GetChildPadding() const;
  49. virtual void SetChildPadding(int iPadding);
  50. virtual UINT GetChildAlign() const;
  51. virtual void SetChildAlign(UINT iAlign);
  52. virtual UINT GetChildVAlign() const;
  53. virtual void SetChildVAlign(UINT iVAlign);
  54. virtual bool IsAutoDestroy() const;
  55. virtual void SetAutoDestroy(bool bAuto);
  56. virtual bool IsDelayedDestroy() const;
  57. virtual void SetDelayedDestroy(bool bDelayed);
  58. virtual bool IsMouseChildEnabled() const;
  59. virtual void SetMouseChildEnabled(bool bEnable = true);
  60. virtual int FindSelectable(int iIndex, bool bForward = true) const;
  61. RECT GetClientPos() const;
  62. void SetPos(RECT rc, bool bNeedInvalidate = true);
  63. void Move(SIZE szOffset, bool bNeedInvalidate = true);
  64. bool DoPaint(HDC hDC, const RECT& rcPaint, CControlUI* pStopControl);
  65. void SetAttribute(LPCTSTR pstrName, LPCTSTR pstrValue);
  66. void SetManager(CPaintManagerUI* pManager, CControlUI* pParent, bool bInit = true);
  67. CControlUI* FindControl(FINDCONTROLPROC Proc, LPVOID pData, UINT uFlags);
  68. bool SetSubControlText(LPCTSTR pstrSubControlName,LPCTSTR pstrText);
  69. bool SetSubControlFixedHeight(LPCTSTR pstrSubControlName,int cy);
  70. bool SetSubControlFixedWdith(LPCTSTR pstrSubControlName,int cx);
  71. bool SetSubControlUserData(LPCTSTR pstrSubControlName,LPCTSTR pstrText);
  72. CDuiString GetSubControlText(LPCTSTR pstrSubControlName);
  73. int GetSubControlFixedHeight(LPCTSTR pstrSubControlName);
  74. int GetSubControlFixedWdith(LPCTSTR pstrSubControlName);
  75. const CDuiString GetSubControlUserData(LPCTSTR pstrSubControlName);
  76. CControlUI* FindSubControl(LPCTSTR pstrSubControlName);
  77. virtual SIZE GetScrollPos() const;
  78. virtual SIZE GetScrollRange() const;
  79. virtual void SetScrollPos(SIZE szPos);
  80. virtual void LineUp();
  81. virtual void LineDown();
  82. virtual void PageUp();
  83. virtual void PageDown();
  84. virtual void HomeUp();
  85. virtual void EndDown();
  86. virtual void LineLeft();
  87. virtual void LineRight();
  88. virtual void PageLeft();
  89. virtual void PageRight();
  90. virtual void HomeLeft();
  91. virtual void EndRight();
  92. virtual void EnableScrollBar(bool bEnableVertical = true, bool bEnableHorizontal = false);
  93. virtual CScrollBarUI* GetVerticalScrollBar() const;
  94. virtual CScrollBarUI* GetHorizontalScrollBar() const;
  95. protected:
  96. virtual void SetFloatPos(int iIndex);
  97. virtual void ProcessScrollBar(RECT rc, int cxRequired, int cyRequired);
  98. protected:
  99. CDuiPtrArray m_items;
  100. RECT m_rcInset;
  101. int m_iChildPadding;
  102. UINT m_iChildAlign;
  103. UINT m_iChildVAlign;
  104. bool m_bAutoDestroy;
  105. bool m_bDelayedDestroy;
  106. bool m_bMouseChildEnabled;
  107. bool m_bScrollProcess; // 防止SetPos循环调用
  108. CScrollBarUI* m_pVerticalScrollBar;
  109. CScrollBarUI* m_pHorizontalScrollBar;
  110. };
  111. } // namespace DuiLib
  112. #endif // __UICONTAINER_H__