CContainedWindow

テンプレート 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>

クラス メンバー

参照してください。

CWindowCWindowImplCMessageMapBEGIN_MSG_MAPALT_MSG_MAP

Index