コンテナー内のウィンドウの使い方
ATL 実装は CContainedWindowTペインが含まれています。含まれているペインはコンテナー オブジェクトは、独自のクラスにそれらを処理する代わりにメッセージの処理するウィンドウを表します。
[!メモ]
子のペインを使用するに CContainedWindowT からクラスを派生する必要はありません。
子のペインで、スーパークラス化は、Windows の既存のクラスまたはサブクラス既存のウィンドウできます。スーパークラス化が CContainedWindowT のオブジェクトに対してコンストラクターで Windows の既存のクラス、既存のクラス名を指定するウィンドウを作成します。次に、CContainedWindowT::Create を呼び出します。サブクラスに既存のウィンドウ、Windows のクラス名 (コンストラクターに渡します null ) を指定する必要はありません。サブクラス化されたウィンドウへのハンドルとの CContainedWindowT::SubclassWindow のメソッドを呼び出すだけです。
コンテナーのデータ メンバーを使用すると、通常、子のペインを使用します。コンテナーは、ウィンドウである必要はありません; ただし、CMessageMapから派生する必要があります。
含まれているウィンドウがメッセージを処理するために代替メッセージ マップを使用できます。複数の子のペインがある場合は、複数の代替メッセージ マップとは異なる子のペインに対応する個別に宣言する必要があります。
使用例
以下は、2 種類の子のペインを持つコンテナー クラスの例です:
class CMyContainer : public CMessageMap
{
public:
CContainedWindow m_wndEdit;
CContainedWindow m_wndList;
CMyContainer() : m_wndEdit(_T("Edit"), this, 1),
m_wndList(_T("List"), this, 2)
{
}
BEGIN_MSG_MAP(CMyContainer)
ALT_MSG_MAP(1)
// handlers for the Edit window go here
ALT_MSG_MAP(2)
// handlers for the List window go here
END_MSG_MAP()
};
含まれているウィンドウの詳細については、SUBEDIT サンプルを参照してください。