テンプレート lt; クラスする TBaseCWindow、クラス =TWinTraits(&L) = CControlWinTraits gt;
クラスの CContainedWindowT: 公開する TBase(&G)
パラメーター
する TBase
新しいクラスの基本クラス。CWindowは、デフォルトの基本クラスです。
TWinTraits
ウィンドウのスタイルを定義する特徴クラス。既定値はCControlWinTraitsです。
注特価;CContainedWindow CContainedWindowTの特殊化です。基本クラスまたは特性を変更するには、直接CContainedWindowTを使用します。(&N)。
CContainedWindow別のオブジェクトに含まれるウィンドウを実装します。CContainedWindowのウィンドウ プロシージャ メッセージ マップに含まれるオブジェクトを使用して、適切なハンドラーへのメッセージを直接します。CContainedWindowオブジェクトを構築するときは、メッセージ マップを使用する必要がありますを指定します。
CContainedWindow既存のウィンドウ クラスのスーパークラス化で新しいウィンドウを作成することができます。Createメソッドは最初は、既存のクラスに基づいていますが、 CContainedWindow::WindowProcを使用して、ウィンドウ クラスを登録します。作成しこの新しいウィンドウ クラスに基づいてウィンドウを作成します。CContainedWindowの各インスタンスには、別のウィンドウ クラスのスーパークラスすることができます。
CContainedWindowには、ウィンドウのサブクラス化もサポートしています。SubclassWindowメソッドは、既存のウィンドウはCContainedWindowオブジェクトにアタッチし、ウィンドウ プロシージャをCContainedWindow::WindowProcに変更します。CContainedWindowの各インスタンスには、別のウィンドウをサブクラス化することができます。
注特価;任意のCContainedWindowオブジェクトを作成またはSubclassWindowのいずれかを呼び出します。両方が同じオブジェクトのメソッドを呼び出す必要がないです。(&N)。
ATL オブジェクト ウィザードのに基づいて追加コントロールオプションを使用すると、ウィザードは自動的にCContainedWindowデータ メンバー コントロールを実装するクラスに追加されます。次の例からの抜粋です、 SUBEDITサンプルと含まれているウィンドウの宣言方法を示しています
class CAtlEdit : ...
{
public:
// Declare a contained window data member
CContainedWindow m_EditCtrl;
// Initialize the contained window:
// 1. Pass "EDIT" to specify that the contained
// window should be based on the standard
// Windows Edit box
// 2. Pass 'this' pointer to specify that CAtlEdit
// contains the message map to be used for the
// contained window's message processing
// 3. Pass the identifier of the message map. '1'
// identifies the alternate message map declared
// with ALT_MSG_MAP(1)
CAtlEdit() : m_EditCtrl(_T("EDIT"), this, 1)
{
m_bWindowOnly = TRUE;
}
// Declare the default message map,
// identified by '0'
BEGIN_MSG_MAP(CAtlEdit)
...
MESSAGE_HANDLER(WM_CREATE, OnCreate)
...
// Declare an alternate message map,
// identified by '1'
ALT_MSG_MAP(1)
MESSAGE_HANDLER(WM_CHAR, OnChar)
END_MSG_MAP()
// Define OnCreate handler
// When the containing window receives a WM_CREATE
// message, create the contained window by calling
// CContainedWindow::Create
LRESULT OnCreate(UINT uMsg, WPARAM wParam,
LPARAM lParam, BOOL& bHandled)
{
...
m_EditCtrl.Create(m_hWnd, rc, _T("hello"),
WS_CHILD | WS_VISIBLE |
ES_MULTILINE | ES_AUTOVSCROLL);
return 0;
}
...
};
| 詳細については | 参照してください。 |
| コントロールの作成 | ATL チュートリアル |
| ATL でのウィンドウの使用 | ATL ウィンドウ クラス |
| ATL オブジェクト ウィザード | ATL プロジェクトの作成 |
| Windows | Windowsと以降のトピック、プラットフォーム SDKで |
| サブクラスの作成 | ウィンドウ プロシージャ サブクラス化でプラットフォーム SDK |
| スーパークラス化 | プラットフォーム SDKのウィンドウ プロシージャのスーパークラス化 |
#include lt;atlwin.h>
参照してください。
CWindow、 CWindowImpl、 CMessageMap、 BEGIN_MSG_MAP、 ALT_MSG_MAP