次の方法で共有


CComCompositeControl クラス

このクラスには、複合コントロールの実装に必要なメソッドが用意されています。

重要

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

template < 
class T  
> 
class CComCompositeControl : 
public CComControl< T, CAxDialogImpl< T > >

パラメーター

  • T
    CComObjectRootCComObjectRootExから、または他のインターフェイスから派生したクラスは、複合コントロールでサポートする必要があります。

メンバー

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

名前

説明

CComCompositeControl::CComCompositeControl

コンストラクターです。

CComCompositeControl::~CComCompositeControl

デストラクターです。

パブリック メソッド

名前

説明

CComCompositeControl::AdviseSinkMap

アドバイズするために、このメソッドまたは unadvise を複合コントロールによってホストされるすべてのコントロール呼び出します。

CComCompositeControl::CalcExtent

複合コントロールをホストするために使用されるダイアログ リソースの HIMETRIC 単位のサイズを計算するためにこのメソッドを呼び出します。

CComCompositeControl::Create

このメソッドは、複合コントロールのコントロール ウィンドウを作成するために呼び出されます。

CComCompositeControl::CreateControlWindow

コントロール ウィンドウを作成し、ホストされているコントロールに指示するには、このメソッドを呼び出します。

CComCompositeControl::SetBackgroundColorFromAmbient

コンテナーの背景色を使用して複合コントロールの背景色を設定するには、このメソッドを呼び出します。

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

名前

説明

CComCompositeControl::m_hbrBackground

背景ブラシです。

CComCompositeControl::m_hWndFocus

現在フォーカスのあるウィンドウのハンドル。

解説

CComCompositeControl クラスから派生したクラスは、ActiveX の複合コントロールの機能を継承します。 CComCompositeControl から派生した ActiveX コントロールは標準のダイアログ ボックスでホストされます。 次の種類のコントロールは他のコントロールをホストするため、複合コントロールと呼ばれます (ネイティブの Windows コントロールおよび ActiveX コントロール)。

CComCompositeControl は列挙子クラスのデータ メンバーを検索することにより、複合コントロールの作成に使用するダイアログ リソースを識別します。 この子クラスのメンバー IDD は、コントロールのウィンドウとして使用されるダイアログ リソースのリソース id に設定されます。 次に CComCompositeControl から派生したコントロール ペインに使用するダイアログ リソースを識別するために含めるクラスが必要であるデータ メンバーの例です:

enum { IDD = IDD_MYCOMPOSITE };

注意

複合コントロールはウィンドウなしのコントロールを含めることができますが、ウィンドウ付きコントロールは、常にです。

CComCompositeControlで実装されたコントロールの派生クラスに組み込まれている既定の記録の動作が異なります。 含むアプリケーションにログイン コントロールはフォーカスを受け取った場合、順次 Tab キーを押すとフォーカスを複合コントロールからコンテナーのタブ オーダーで次のアイテムに複合コントロール内のコントロールすべて、循環します。 ホストされているコントロールのタブ オーダーは、ダイアログ リソースによって決定され、記録が発生する順序を決定します。

注意

CComCompositeControlを適切に使用するアクセラレータとしてコントロールが解放されている場合、作成されるため IOleControlImpl::GetControlInfoに再度アクセラレータ テーブルを読み込む必要が、受け渡しアクセラレータのハンドルと数を、最後にテーブルを破棄します。

使用例

// Example for overriding IOleControlImpl::GetControlInfo()
// This example uses the accelerator table from the project resources
// with the identifier IDR_ACCELTABLE
// Define GetControlInfo() in the header of your composite 
// control class as follows:

STDMETHOD(GetControlInfo)(CONTROLINFO* pCI)
{
    // Load the accelerator table from the resource
    pCI->hAccel = LoadAccelerators(_AtlBaseModule.GetResourceInstance(), 
       MAKEINTRESOURCE(IDR_ACCELTABLE));

    if (pCI->hAccel == NULL)
        return E_FAIL;

    // Get the number of accelerators in the table
    pCI->cAccel = (USHORT)CopyAcceleratorTable(pCI->hAccel, NULL, 0);
    // The following is optional if you want your control
    // to process the return and/or escape keys
    // pCI.dwFlags = CTRLINFO_EATS_RETURN | CTRLINFO_EATS_ESCAPE;
    pCI->dwFlags = 0;

    return S_OK;
}

継承階層

WinBase

CComControlBase

CComControl

CComCompositeControl

必要条件

Header: atlctl.h

参照

関連項目

CComControl クラス

概念

ATL 複合コントロールの基本

その他の技術情報

ATL クラスの概要