TNB Library
クラス | 公開型 | 公開メンバ関数 | 限定公開メンバ関数 | 限定公開変数類 | 全メンバ一覧
CBoxLayout クラス

ボックスレイアウトアイテムクラス. [詳解]

#include <TnbBoxLayout.h>

+ CBoxLayout の継承関係図

公開型

enum  ELocation {
  DEFAULT , TOP , CENTER , BOTTOM ,
  ADJUST , LEFT = TOP , RIGHT = BOTTOM
}
 レイアウトアイテム配置方法. [詳解]
 
typedef CPointerHandleT< ILayoutPtr
 ポインタハンドル型宣言 [詳解]
 

公開メンバ関数

CBoxLayoutAdd (const ILayout &layout, ELocation hloc=DEFAULT, ELocation vloc=DEFAULT)
 [設定] アイテム追加. [詳解]
 
 CBoxLayout (bool isHorizental=true, bool isLastFilling=true)
 コンストラクタ [詳解]
 
virtual ILayoutClone (void) const
 [作成] クローン作成. [詳解]
 
virtual void Decide (int x, int y, WPARAM wParam, LPARAM lParam)
 [処理] 決定. [詳解]
 
virtual bool GetMinimumSize (SIZE &_size) const
 [取得] 最小サイズ取得. [詳解]
 
virtual bool GetSize (SIZE &_size) const
 [取得] サイズ取得. [詳解]
 
virtual bool Resize (const SIZE &size)
 [設定] サイズ設定. [詳解]
 
void SetGapSize (const SIZE &size)
 [設定] 各アイテム間のギャップ設定 [詳解]
 
void SetGapSize (int size)
 [設定] 各アイテム間のギャップ設定 [詳解]
 
void SetHorizentalMode (bool isHorizental)
 [設定] 並び向き設定 [詳解]
 
void SetLastFilling (bool isLastFilling)
 [設定] 調整モード設定 [詳解]
 
void SetMargnSize (const RECT &rc)
 [設定] 外周マージン設定 [詳解]
 
void SetMargnSize (int mg)
 [設定] 外周マージン設定 [詳解]
 

限定公開メンバ関数

void AddChinkSize (SIZE &_size, size_t cx, size_t cy) const
 [加算] 隙間サイズ加算. [詳解]
 
void AddMargnSize (SIZE &_size) const
 [加算] マージンサイズ加算. [詳解]
 
void GetMargnSize (SIZE &_size) const
 [取得] マージンサイズ取得. [詳解]
 
void HorizontalItemDecide (ILayout *pLayout, INT_PTR x, INT_PTR xx, INT_PTR width, ELocation loc, WPARAM wParam, LPARAM lParam)
 [設定] 水平方向アイテム決定. [詳解]
 
void VerticalItemDecide (ILayout *pLayout, INT_PTR y, INT_PTR yy, INT_PTR height, ELocation loc, WPARAM wParam, LPARAM lParam)
 [設定] 垂直方向アイテム決定. [詳解]
 

限定公開変数類

SIZE m_gapSize
 各アイテム間のギャップ(縦、横) [詳解]
 
bool m_isValidLayoutSize
 レイアウト全体サイズの設定の有効フラグ [詳解]
 
SIZE m_layoutSize
 レイアウト全体サイズ(縦、横) [詳解]
 
RECT m_margn
 外周のマージン [詳解]
 

詳解

ボックスレイアウトアイテムクラス.

縦か横、一列に複数並べることが出来るレイアウトアイテムです。

\code
┌−−−−−−−−−−−−−−−−−−−−−−−┐
l┏━━┳━━┳━━┳━━┳━━┳━━━┳──┓l
l│ 1│2 │  │  │ ・・・・・・・n│l
l│  │  │3 │4 │5        │l
l┗━━┻━━┻━━┻━━┻━━┻━━━┻──┛l
└−−−−−−−−−−−−−−−−−−−−−−−┘
※各レイアウトアイテムの幅は固定です(登録時の大きさのまま)。
 最後(右端)のレイアウトアイテムの幅は、オプションで、全体の幅にして可変できます。
※各レイアウトアイテムの高さは、全体の高さに追従して可変します。
\endcode
or
\code
┌−−−−−┐
l┏───┓l
l┃1  ┃l
l┣───┫l
l┃ 2 ┃l
l┣───┫l
l┃3  ┃l
l┣───┫l
l┃4  ┃l
l┣───┫l
l┃ 5 ┃l
l┣ : ┫l
l┃ : ┃l
l┣ : ┫l
l│ n │l
l┗───┛l
└−−−−−┘
※各レイアウトアイテムの高さは固定です(登録時の大きさのまま)。
 最後(下端)のレイアウトアイテムの高さは、オプションで、全体の高さにして可変できます。
※各レイアウトアイテムの幅は、全体の幅に追従して可変します。
\endcode
使用例

    // 設定
    CStatic m_txtFirst; 
    CStatic m_txtSecond;
    CEdit   m_editFirst;
    CEdit   m_editSecond;
        :

    BOOL CFoo::OnInitDialog()
    {
            ;

        //-- 水平方向のパーツ二つ
        MFCLIB::ChangeClientSize(&m_txtFirst, 100, -1); //TXTの幅を同じにしておく
        MFCLIB::ChangeClientSize(&m_txtSecond, 100, -1);
        CBoxLayout lay1(true);
        lay1.Add(Li(&m_txtFirst)).Add(Li(&m_editFirst), lay.ADJUST);
        CBoxLayout lay2(true);
        lay2.Add(Li(&m_txtSecond)).Add(Li(&m_editSecond), lay.ADJUST);
        //-- 垂直方向に組み合わせる
        CBoxLayout lay(false, false);
        //-- ウィンドウ枠から 2 dot 隙間を指定
        lay.SetMargnSize(CSize(2, 2));  
        // 各アイテムの間は、横 5, 縦 10 空くように指定
        lay.SetGapSize(CSize(5, 10));
        lay.Add(lay1, lay.ADJUST, lay.ADJUST).Add(lay2, lay.ADJUST, lay.ADJUST);

            ;
    }

 
必要ファイル
TnbBoxLayout.h
日付
08/07/23 新規作成

TnbBoxLayout.h101 行目に定義があります。

型定義メンバ詳解

◆ Ptr

typedef CPointerHandleT<ILayout> Ptr
inherited

ポインタハンドル型宣言

TnbLayout.h83 行目に定義があります。

列挙型メンバ詳解

◆ ELocation

enum ELocation
inherited

レイアウトアイテム配置方法.

覚え書き
配置する場所の大きさと、レイアウトアイテムの大きさが異なるケースが発生します。 その際、どのようにレイアウトアイテムを置くかを定義しています。
列挙値
DEFAULT 

横方向は左寄せ、縦方向は中央

TOP 

上寄せ(縦方向用)

CENTER 

中央

BOTTOM 

下寄せ(縦方向用)

ADJUST 

調整(Resize出来ない場合中央)

LEFT 

左寄せ(横方向用)

RIGHT 

右寄せ(横方向用)

TnbLayout.h203 行目に定義があります。

構築子と解体子

◆ CBoxLayout()

CBoxLayout ( bool  isHorizental = true,
bool  isLastFilling = true 
)

コンストラクタ

引数
isHorizentaltrue なら横並び、 false なら縦並び
isLastFillingtrue の場合、最終アイテムを調整します。

TnbBoxLayout.h111 行目に定義があります。

関数詳解

◆ Add()

CBoxLayout & Add ( const ILayout layout,
ELocation  hloc = DEFAULT,
ELocation  vloc = DEFAULT 
)

[設定] アイテム追加.

覚え書き
サイズ は layout のサイズが使用されます。
引数
layoutレイアウトアイテム.
hloc水平配置種.
vloc垂直配置種.
戻り値
自分の参照.

TnbBoxLayout.h143 行目に定義があります。

◆ AddChinkSize()

void AddChinkSize ( SIZE &  _size,
size_t  cx,
size_t  cy 
) const
protectedinherited

[加算] 隙間サイズ加算.

覚え書き
マージン、ギャップの合計を加算
引数
[in,out]_size隙間サイズ
[in]cx横のアイテム数
[in]cy縦のアイテム数

TnbLayout.h438 行目に定義があります。

◆ AddMargnSize()

void AddMargnSize ( SIZE &  _size) const
protectedinherited

[加算] マージンサイズ加算.

覚え書き
マージンを加算
引数
[in,out]_sizeマージンサイズ

TnbLayout.h425 行目に定義があります。

◆ Clone()

virtual ILayout * Clone ( void  ) const
virtual

[作成] クローン作成.

自分と同じ処理を行うクラスを作成します。

戻り値
ポインタ。使用後は delete する必要があります。

ILayoutを実装しています。

TnbBoxLayout.h154 行目に定義があります。

◆ Decide()

virtual void Decide ( int  x,
int  y,
WPARAM  wParam,
LPARAM  lParam 
)
virtual

[処理] 決定.

覚え書き
オブジェクトが管理しているサイズと指定のサイズにレイアウトします。
引数
xX座標。-1なら指定なし。
yY座標。-1なら指定なし。
wParamW パラメータ。本クラスでは使用しません。 本クラスに登録したレイアウトによっては使用される可能性があります。
lParamL パラメータ。本クラスでは使用しません。 本クラスに登録したレイアウトによっては使用される可能性があります。

ILayoutを実装しています。

TnbBoxLayout.h181 行目に定義があります。

◆ GetMargnSize()

void GetMargnSize ( SIZE &  _size) const
protectedinherited

[取得] マージンサイズ取得.

引数
[out]_sizeマージンサイズ

TnbLayout.h414 行目に定義があります。

◆ GetMinimumSize()

virtual bool GetMinimumSize ( SIZE &  _size) const
virtual

[取得] 最小サイズ取得.

最小のサイズを得ることが出来ます。

引数
[out]_sizeサイズ取得。
戻り値
trueサイズ取得成功。
falseデータがない。

ILayoutを実装しています。

TnbBoxLayout.h168 行目に定義があります。

◆ GetSize()

virtual bool GetSize ( SIZE &  _size) const
virtualinherited

[取得] サイズ取得.

現在のサイズを得ることが出来ます。

引数
[out]_sizeサイズ取得。
戻り値
trueサイズ取得成功。
falseデータがない。

ILayoutを実装しています。

TnbLayout.h276 行目に定義があります。

◆ HorizontalItemDecide()

void HorizontalItemDecide ( ILayout pLayout,
INT_PTR  x,
INT_PTR  xx,
INT_PTR  width,
ELocation  loc,
WPARAM  wParam,
LPARAM  lParam 
)
protectedinherited

[設定] 水平方向アイテム決定.

引数
pLayoutレイアウト
xX 位置。 Decide()の x を渡します。
xxX 位置オフセット
width
loc配置
wParamW パラメータ。本クラスでは使用しません。 本クラスに登録したレイアウトによっては使用される可能性があります。
lParamL パラメータ。本クラスでは使用しません。 本クラスに登録したレイアウトによっては使用される可能性があります。

TnbLayout.h338 行目に定義があります。

◆ Resize()

virtual bool Resize ( const SIZE &  size)
virtualinherited

[設定] サイズ設定.

現在のサイズを変更することが出来ます。

引数
sizeサイズ。
戻り値
trueサイズ変更成功。
false失敗。

ILayoutを実装しています。

TnbLayout.h297 行目に定義があります。

◆ SetGapSize() [1/2]

void SetGapSize ( const SIZE &  size)
inherited

[設定] 各アイテム間のギャップ設定

引数
sizeギャップ

TnbLayout.h253 行目に定義があります。

◆ SetGapSize() [2/2]

void SetGapSize ( int  size)
inherited

[設定] 各アイテム間のギャップ設定

引数
sizeギャップ

TnbLayout.h263 行目に定義があります。

◆ SetHorizentalMode()

void SetHorizentalMode ( bool  isHorizental)

[設定] 並び向き設定

引数
isHorizentaltrue なら横並び、 false なら縦並び

TnbBoxLayout.h130 行目に定義があります。

◆ SetLastFilling()

void SetLastFilling ( bool  isLastFilling)

[設定] 調整モード設定

引数
isLastFillingtrue の場合、最終アイテムを調整します。

TnbBoxLayout.h121 行目に定義があります。

◆ SetMargnSize() [1/2]

void SetMargnSize ( const RECT &  rc)
inherited

[設定] 外周マージン設定

引数
rcマージン

TnbLayout.h233 行目に定義があります。

◆ SetMargnSize() [2/2]

void SetMargnSize ( int  mg)
inherited

[設定] 外周マージン設定

引数
mgマージン

TnbLayout.h243 行目に定義があります。

◆ VerticalItemDecide()

void VerticalItemDecide ( ILayout pLayout,
INT_PTR  y,
INT_PTR  yy,
INT_PTR  height,
ELocation  loc,
WPARAM  wParam,
LPARAM  lParam 
)
protectedinherited

[設定] 垂直方向アイテム決定.

引数
pLayoutレイアウト
yY 位置。 Decide()の y を渡します。
yyY 位置オフセット
height高さ
loc配置
wParamW パラメータ。本クラスでは使用しません。 本クラスに登録したレイアウトによっては使用される可能性があります。
lParamL パラメータ。本クラスでは使用しません。 本クラスに登録したレイアウトによっては使用される可能性があります。

TnbLayout.h379 行目に定義があります。

メンバ詳解

◆ m_gapSize

SIZE m_gapSize
protectedinherited

各アイテム間のギャップ(縦、横)

TnbLayout.h326 行目に定義があります。

◆ m_isValidLayoutSize

bool m_isValidLayoutSize
mutableprotectedinherited

レイアウト全体サイズの設定の有効フラグ

TnbLayout.h323 行目に定義があります。

◆ m_layoutSize

SIZE m_layoutSize
mutableprotectedinherited

レイアウト全体サイズ(縦、横)

TnbLayout.h324 行目に定義があります。

◆ m_margn

RECT m_margn
protectedinherited

外周のマージン

TnbLayout.h325 行目に定義があります。