CComCompositeControl クラス
このクラスには、複合コントロールの実装に必要なメソッドが用意されています。
重要
このクラスおよびメンバーは、Windows のランタイムで実行するアプリケーションで使用することはできません。
template <
class T
>
class CComCompositeControl :
public CComControl< T, CAxDialogImpl< T > >
パラメーター
- T
CComObjectRoot か CComObjectRootExから、または他のインターフェイスから派生したクラスは、複合コントロールでサポートする必要があります。
メンバー
パブリック コンストラクター
名前 |
説明 |
---|---|
コンストラクターです。 |
|
デストラクターです。 |
パブリック メソッド
名前 |
説明 |
---|---|
アドバイズするために、このメソッドまたは unadvise を複合コントロールによってホストされるすべてのコントロール呼び出します。 |
|
複合コントロールをホストするために使用されるダイアログ リソースの HIMETRIC 単位のサイズを計算するためにこのメソッドを呼び出します。 |
|
このメソッドは、複合コントロールのコントロール ウィンドウを作成するために呼び出されます。 |
|
コントロール ウィンドウを作成し、ホストされているコントロールに指示するには、このメソッドを呼び出します。 |
|
コンテナーの背景色を使用して複合コントロールの背景色を設定するには、このメソッドを呼び出します。 |
パブリック データ メンバー
名前 |
説明 |
---|---|
背景ブラシです。 |
|
現在フォーカスのあるウィンドウのハンドル。 |
解説
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
CComCompositeControl
必要条件
Header: atlctl.h