次の方法で共有


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 です。

メンバー

パブリック メソッド

名前

説明

CWindowImpl::Create

ウィンドウを作成します。

CWindowImplBaseT メソッド

DefWindowProc

既定のメッセージ処理を提供します。

GetCurrentMessage

現在のメッセージを返します。

GetWindowProc

現在のウィンドウ プロシージャを返します。

OnFinalMessage

最後のメッセージが受信された後に (通常は WM_NCDESTROY) 呼び出されます。

SubclassWindow

ウィンドウをサブクラス化します。

UnsubclassWindow

前にサブクラス化されたウィンドウを復元します。

静的メソッド

GetWndClassInfo

ウィンドウ クラスの情報を管理する CWndClassInfo の静的インスタンスを返します。

WindowProc

ウィンドウに送信されるメッセージを処理します。

データ メンバー

m_pfnSuperWindowProc

ウィンドウ クラスの元のウィンドウ プロシージャをポイントします。

解説

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 は、TBaseCMessageMap から派生した CWindowImplRoot の派生型である CWindowImplBaseT から派生します。

項目

参照項目

コントロールの作成

ATL チュートリアル

ATL でのウィンドウの使用

ATL ウィンドウ クラス

ATL プロジェクト ウィザード

ATL プロジェクトの作成

継承階層

CMessageMap

TBase

CWindowImplRoot

CWindowImplBaseT

CWindowImpl

必要条件

ヘッダー: atlwin.h

参照

関連項目

BEGIN_MSG_MAP

CComControl クラス

その他の技術情報

ATL クラスの概要