111 CBoxLayout(
bool isHorizental =
true,
bool isLastFilling =
true)
112 : m_isHorizental(isHorizental), m_isLastFilling(isLastFilling)
123 m_isLastFilling = isLastFilling;
132 m_isHorizental = isHorizental;
145 m_params->Add(
TParam(hloc, vloc, layout));
170 return m_Calc(_size, NULL);
181 virtual void Decide(
int x,
int y, WPARAM wParam, LPARAM lParam)
186 if ( ! m_Calc(minSize, &poss) )
190 size_t itemNum = m_params->GetSize();
191 loop ( item, itemNum )
193 TParam& pa = m_params->At(item);
199 CSizeEx areaSize = poss[item].size;
201 if ( m_isHorizental )
211 if ( m_isLastFilling && item == (itemNum - 1) )
213 areaSize.At(m_isHorizental) += ll;
217 bool isHos = (hos == 0);
218 if ( position.At(isHos) < 0 )
222 int ww = position.At(isHos);
223 if ( m_isHorizental == isHos )
225 ww += poss[item].pos;
241 class CSizeEx :
public SIZE
246 CSizeEx(
int x,
int y) { cx = x; cy = y; }
247 CSizeEx(SIZE initSize) { cx = initSize.cx; cy = initSize.cy; }
248 LONG& At(
bool isHorizen) {
return isHorizen ? cx : cy; }
249 const LONG& At(
bool isHorizen)
const {
return isHorizen ? cx : cy; }
264 loop ( item, m_params->GetSize() )
266 const TParam& pa = m_params->At(item);
267 if ( ! pa.pLayout->GetMinimumSize(r.size) )
273 r.pos += gapSize.At(m_isHorizental);
279 r.pos += r.size.At(m_isHorizental);
280 hh = max(hh, r.size.At(! m_isHorizental));
284 sz.At(m_isHorizental) += r.pos;
285 sz.At(! m_isHorizental) += hh;
290 static ELocation GetLocation(TParam& p,
bool isHorizen)
292 return isHorizen ? p.horizontalLocate : p.verticalLocate;
297 bool m_isLastFilling;
#define loop(VAR, CNT)
loop構文.
void GetMargnSize(SIZE &_size) const
[取得] マージンサイズ取得.
void HorizontalItemDecide(ILayout *pLayout, INT_PTR x, INT_PTR xx, INT_PTR width, ELocation loc, WPARAM wParam, LPARAM lParam)
[設定] 水平方向アイテム決定.
SIZE m_gapSize
各アイテム間のギャップ(縦、横)
SIZE m_layoutSize
レイアウト全体サイズ(縦、横)
void VerticalItemDecide(ILayout *pLayout, INT_PTR y, INT_PTR yy, INT_PTR height, ELocation loc, WPARAM wParam, LPARAM lParam)
[設定] 垂直方向アイテム決定.
virtual bool GetMinimumSize(SIZE &_size) const
[取得] 最小サイズ取得.
virtual ILayout * Clone(void) const
[作成] クローン作成.
virtual void Decide(int x, int y, WPARAM wParam, LPARAM lParam)
[処理] 決定.
CBoxLayout(bool isHorizental=true, bool isLastFilling=true)
コンストラクタ
void SetLastFilling(bool isLastFilling)
[設定] 調整モード設定
CBoxLayout & Add(const ILayout &layout, ELocation hloc=DEFAULT, ELocation vloc=DEFAULT)
[設定] アイテム追加.
void SetHorizentalMode(bool isHorizental)
[設定] 並び向き設定
INDEX Add(const TYP &t)
[追加] 要素一つ追加.
ILayout::Ptr pLayout
レイアウトアイテム
virtual bool GetSize(SIZE &_size) const =0
[取得] サイズ取得.