CWindowImpl クラス
ウィンドウを作成またはサブクラス化するためのメソッドを提供します。
重要
このクラスとそのメンバーは、Windows ランタイムで実行するアプリケーションでは使用できません。
template <
class T,
class TBase= CWindow,
class TWinTraits= CControlWinTraits
>
class ATL_NO_VTABLE CWindowImpl :
public CWindowImplBaseT< TBase, TWinTraits>
パラメーター
T
CWindowImpl から派生した新しいクラス。TBase
クラスの基底クラス。 既定では、基底クラスは CWindow です。TWinTraits
ウィンドウのスタイルを定義する特徴クラス。 既定値は、CControlWinTraits です。
メンバー
パブリック メソッド
名前 |
説明 |
---|---|
ウィンドウを作成します。 |
CWindowImplBaseT メソッド
既定のメッセージ処理を提供します。 |
|
現在のメッセージを返します。 |
|
現在のウィンドウ プロシージャを返します。 |
|
最後のメッセージが受信された後に (通常は WM_NCDESTROY) 呼び出されます。 |
|
ウィンドウをサブクラス化します。 |
|
前にサブクラス化されたウィンドウを復元します。 |
静的メソッド
ウィンドウ クラスの情報を管理する CWndClassInfo の静的インスタンスを返します。 |
|
ウィンドウに送信されるメッセージを処理します。 |
データ メンバー
ウィンドウ クラスの元のウィンドウ プロシージャをポイントします。 |
解説
CWindowImpl を使用してウィンドウを作成するか、既存のウィンドウをサブクラス化できます。CWindowImpl ウィンドウ プロシージャは、メッセージ マップを使用してメッセージを適切なハンドラーに送信します。
CWindowImpl::Create は、CWndClassInfo によって管理されるウィンドウ クラスの情報に基づいてウィンドウを作成します。 CWindowImpl には、DECLARE_WND_CLASS マクロが含まれています。このマクロは、CWndClassInfo で新しいウィンドウ クラスが登録されることを意味します。 既存のウィンドウ クラスをスーパークラス化する場合は、クラスを CWindowImpl から派生し、DECLARE_WND_SUPERCLASS マクロを含めます。 この場合、CWndClassInfo は、既存のクラスに基づくウィンドウ クラスを登録しますが、CWindowImpl::WindowProc を使用します。 次のように記述します。
class ATL_NO_VTABLE CMyWindow :
OtherInheritedClasses
public CComControl<CMyWindow>
// CComControl derives from CWindowImpl
{
public:
// 1. The NULL parameter means ATL will generate a
// name for the superclass
// 2. The "EDIT" parameter means the superclass is
// based on the standard Windows Edit box
DECLARE_WND_SUPERCLASS(NULL, _T("EDIT"))
// Remainder of class declaration omitted
注意
CWndClassInfo は、1 つのウィンドウ クラスの情報のみを管理するため、CWindowImpl のインスタンスによって作成された各ウィンドウは、同じウィンドウ クラスに基づきます。
CWindowImpl は、ウィンドウのサブクラス化もサポートします。 SubclassWindow メソッドは、既存のウィンドウを CWindowImpl オブジェクトにアタッチし、ウィンドウ プロシージャを CWindowImpl::WindowProc に変更します。 CWindowImpl の各インスタンスは、別のウィンドウをサブクラス化できます。
注意
特定の CWindowImpl オブジェクトに対して、Create または SubclassWindow を呼び出します。同じオブジェクトで両方のメソッドを呼び出さないでください。
CWindowImpl に加えて、ATL には、別のオブジェクトに含まれるウィンドウを作成する CContainedWindow が用意されています。
基底クラスのデストラクター (~CWindowImplRoot) により、オブジェクトが破棄される前にウィンドウが消えます。
CWindowImpl は、TBase と CMessageMap から派生した CWindowImplRoot の派生型である CWindowImplBaseT から派生します。
項目 |
参照項目 |
---|---|
コントロールの作成 |
|
ATL でのウィンドウの使用 |
|
ATL プロジェクト ウィザード |
継承階層
TBase
CWindowImplRoot
CWindowImplBaseT
CWindowImpl
必要条件
ヘッダー: atlwin.h