00001
00002
00003
00004 #ifndef __NSFlexConstraintList_h__
00005 #define __NSFlexConstraintList_h__
00006
00007 class CNSFlexConstraint
00008 {
00009
00010 public:
00011
00012 CNSFlexConstraint(UINT nControlID,
00013 const CNSFlexHorizontalConstraint& HorizontalConstraint,
00014 const CNSFlexVerticalConstraint& VerticalConstraint);
00015
00016 ~CNSFlexConstraint();
00017
00018 void SetBasePosition(int nBaseLeft, int nBaseTop, int nBaseRight,
00019 int nBaseBottom);
00020
00021 BOOL Init(const CWnd* pContainerWnd, int nClientWidth, int nClientHeight);
00022
00023 UINT GetControlID() const;
00024
00025 int GetBaseLeft() const;
00026 int GetBaseTop() const;
00027 int GetBaseRight() const;
00028 int GetBaseBottom() const;
00029
00030 float GetLeftLocator() const;
00031 float GetTopLocator() const;
00032 float GetRightLocator() const;
00033 float GetBottomLocator() const;
00034
00035 private:
00036
00037 UINT m_nControlID;
00038
00039 int m_nBaseLeft;
00040 int m_nBaseTop;
00041 int m_nBaseRight;
00042 int m_nBaseBottom;
00043
00044 CNSFlexHorizontalConstraint* m_pHorizontalConstraint;
00045 CNSFlexVerticalConstraint* m_pVerticalConstraint;
00046
00047 };
00048
00049 inline UINT CNSFlexConstraint::GetControlID() const
00050 {
00051 return m_nControlID;
00052 }
00053
00054 inline int CNSFlexConstraint::GetBaseLeft() const
00055 {
00056 return m_nBaseLeft;
00057 }
00058
00059 inline int CNSFlexConstraint::GetBaseTop() const
00060 {
00061 return m_nBaseTop;
00062 }
00063
00064 inline int CNSFlexConstraint::GetBaseRight() const
00065 {
00066 return m_nBaseRight;
00067 }
00068
00069 inline int CNSFlexConstraint::GetBaseBottom() const
00070 {
00071 return m_nBaseBottom;
00072 }
00073
00074 inline float CNSFlexConstraint::GetLeftLocator() const
00075 {
00076 return m_pHorizontalConstraint->GetLeft();
00077 }
00078
00079 inline float CNSFlexConstraint::GetTopLocator() const
00080 {
00081 return m_pVerticalConstraint->GetTop();
00082 }
00083
00084 inline float CNSFlexConstraint::GetRightLocator() const
00085 {
00086 return m_pHorizontalConstraint->GetRight();
00087 }
00088
00089 inline float CNSFlexConstraint::GetBottomLocator() const
00090 {
00091 return m_pVerticalConstraint->GetBottom();
00092 }
00093
00094
00095 class CNSFlexConstraintList
00096 {
00097
00098 public:
00099
00100 CNSFlexConstraintList(CWnd* pContainerWnd);
00101
00102 virtual ~CNSFlexConstraintList();
00103
00104 void AddConstraint(UINT nControlID,
00105 const CNSFlexHorizontalConstraint& HorizontalConstraint,
00106 const CNSFlexVerticalConstraint& VerticalConstraint);
00107
00108 #ifdef _DEBUG
00109
00110 BOOL AssertAllFlexControlsExist();
00111
00112 #endif
00113
00114 void PositionControls(int nClientWidth, int nClientHeight);
00115
00116 void SetClientBaseSize(int nClientBaseWidth, int nClientBaseHeight);
00117
00118 private:
00119
00120 void InitConstraints();
00121
00122 CWnd* m_pContainerWnd;
00123
00124 int m_nClientBaseWidth;
00125 int m_nClientBaseHeight;
00126
00127 CPtrList m_FlexConstraints;
00128
00129 BOOL m_bConstraintsInitialized;
00130
00131 };
00132
00133 #endif
00134