次の方法で共有


CContainedWindowT クラス

このクラスは、別のオブジェクトに含まれているウィンドウを実装します。

重要

このクラスおよびメンバーは、Windows のランタイムで実行するアプリケーションで使用することはできません。

template < 
class TBase= CWindow, 
class TWinTraits= CControlWinTraits  
> 
class CContainedWindowT : 
public TBase

パラメーター

  • TBase
    新しいクラスの基本クラス。 既定の基本クラスは CWindowです。

  • TWinTraits
    並べ替え特性は、目的のウィンドウのスタイルを定義する。 既定値は、CControlWinTraits です。

注意

CContainedWindowCContainedWindowTから特化したクラスです。基本クラスまたは特性を変更する場合は、CContainedWindowT を直接使用します。

メンバー

パブリック コンストラクター

名前

説明

CContainedWindowT::CContainedWindowT

コンストラクターです。 データ メンバーをどのメッセージ マップに含まれているウィンドウのメッセージを処理するか指定するに初期化します。

パブリック メソッド

名前

説明

CContainedWindowT::Create

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

CContainedWindowT::DefWindowProc

既定のメッセージの処理を行います。

CContainedWindowT::GetCurrentMessage

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

CContainedWindowT::RegisterWndSuperclass

子のペインのウィンドウ クラスを登録します。

CContainedWindowT::SubclassWindow

サブクラス ウィンドウ。

CContainedWindowT::SwitchMessageMap

変更が含まれているウィンドウのメッセージを処理するメッセージ マップに使用されます。

CContainedWindowT::UnsubclassWindow

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

CContainedWindowT::WindowProc

(静的) 含まれているウィンドウに送信されるメッセージを処理します。

パブリック データ メンバー

名前

説明

CContainedWindowT::m_dwMsgMapID

識別するメッセージ マップに含まれているウィンドウのメッセージを処理します。

CContainedWindowT::m_lpszClassName

新しいウィンドウ クラスに基づく既存のウィンドウ クラスの名前を指定します。

CContainedWindowT::m_pfnSuperWindowProc

ウィンドウ クラスの元のウィンドウ プロシージャへのポインター。

CContainedWindowT::m_pObject

含むオブジェクトへのポインター。

解説

CContainedWindowT は別のオブジェクトに含まれているウィンドウを実装します。 CContainedWindowT のウィンドウ プロシージャは適切なハンドラーに直接メッセージに格納されているオブジェクトにメッセージ マップを使用します。 CContainedWindowT のオブジェクトを構築するときに、メッセージ マップを使用するかを指定します。

CContainedWindowT は、既存のウィンドウ クラスを superclassing によって新しいウィンドウを作成できるようにします。 [作成] のメソッドは、最初に既存のクラスを使用 CContainedWindowT::WindowProcに基づくウィンドウ クラスを登録します。 [作成] は、この新しいウィンドウ クラスに基づいてウィンドウを作成します。 CContainedWindowT の各インスタンスは、スーパークラスを別のウィンドウ クラスできます。

CContainedWindowT は、サブクラス化ウィンドウをサポートします。 SubclassWindow のメソッドは CContainedWindowT のオブジェクトに既存のウィンドウをアタッチし、CContainedWindowT::WindowProcにウィンドウ プロシージャを変更します。 CContainedWindowT の各インスタンスは、サブクラスを別のペインできます。

注意

CContainedWindowT の特定のオブジェクト、[作成]SubclassWindowを呼び出します。同じオブジェクトの両方のメソッドを呼び出す必要があります。

ATL プロジェクト ウィザードで [コントロールの追加] オプションを使用する場合、ウィザードはコントロールを実装するクラスに自動的に CContainedWindowT のデータ メンバーを追加します。 子のペインがどのように宣言する方法を次の例に示します。:

public:
   // Declare a contained window data member
   CContainedWindow m_ctlEdit;

   // 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_ctlEdit(_T("Edit"), this, 1)
   {
      m_bWindowOnly = TRUE;
   }
// Declare the default message map, identified by '0'
BEGIN_MSG_MAP(CAtlEdit)
   MESSAGE_HANDLER(WM_CREATE, OnCreate)
   MESSAGE_HANDLER(WM_SETFOCUS, OnSetFocus)
   CHAIN_MSG_MAP(CComControl<CAtlEdit>)
// 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*/)
{
   RECT rc;
   GetWindowRect(&rc);
   rc.right -= rc.left;
   rc.bottom -= rc.top;
   rc.top = rc.left = 0;
   m_ctlEdit.Create(m_hWnd, rc, _T("hello"), WS_CHILD | WS_VISIBLE | 
      ES_MULTILINE | ES_AUTOVSCROLL);
   return 0;
}

項目

参照項目

コントロールの作成

ATL チュートリアル

ATL ウィンドウを使用する

ATL ウィンドウ クラス

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

ATL プロジェクトの作成

Windows

Windows SDKの[ウィンドウ] それ以降のトピック

継承階層

TBase

CContainedWindowT

必要条件

Header: atlwin.h

参照

関連項目

CWindow クラス

CWindowImpl クラス

CMessageMap クラス

BEGIN_MSG_MAP

ALT_MSG_MAP

その他の技術情報

ATL クラスの概要