ATL コントロール コンポーネントの追加
次に、ATL コントロール コンポーネントをプロジェクトに追加します。[クラスの追加] ダイアログ ボックスでは、Visual C++ の IDE プロジェクトに追加するさまざまなコンポーネントが、フレームワークとして提供されます。このようなコンポーネントの 1 つが ATL コントロール コンポーネントで、[クラスの追加] ダイアログ ボックスの最上位レベルにあります。
プロシージャ
ATL コントロール オブジェクトを挿入するには
ソリューション エクスプローラで、[MyAxCtrl] プロジェクトを右クリックします。
ショートカット メニューの [追加] をポイントし、[クラスの追加] をクリックします。
[クラスの追加] ダイアログ ボックスが表示されます。
テンプレート ペインの [ATL コントロール] アイコンをクリックします。
[開く] をクリックします。
ATL コントロール ウィザードが表示されます。
[短い名前] ボックスに、「MyCtl」と入力します。
残りのボックスは自動的に入力されます。
[完了] をクリックして既定の選択肢を受け入れ、プロジェクトにコントロールを追加します。
このウィザードの詳細については、「ATL コントロール ウィザード」を参照してください。
ATL コントロール コンポーネントで使われる属性
ATL コントロール コンポーネントでは属性が使われているため、サンプル プロジェクトには新しい属性がいくつか加わっています。これらの属性は、コントロール オブジェクトと既定のコントロール インターフェイスを実装しています。
MYCTL.H を見ると、新しい CMyCtl クラスに付加される、新しい属性 (属性ブロックと呼ばれる) があるのがわかります。この属性セットによって、コントロールのフレームワークが実装されます。このブロックには、次の属性が含まれています。
coclass オブジェクトが COM オブジェクトであることを指定し、クラス ファクトリ、自動登録、および IUnknown インターフェイスの実装を自動的に提供します。
threading アパートメント スレッドでコントロールを使用できることを指定します。この指定は、生成される参照カウントと登録コードを変更することで行われます。
vi_progid バージョンに依存しない ProgID の形式を指定します。
progid 新しいコントロールのクライアントが使用する簡単な ProgID を宣言します。
version コントロールのバージョンを指定します。
uuid コントロールの CLSID を宣言します。
helpstring オブジェクトを説明するヘルプ文字列を指定します。
support_error_info オブジェクトが詳細な状況依存のエラーのサポートを実装することを指定します。
registration_script オブジェクトに対して実行されるカスタム登録スクリプトを指定します。
ATL コントロール ウィザードで追加されるもう 1 つの主要要素として、IMyCtl インターフェイスにほかの属性ブロックが付け加えられます。この属性ブロックは、コントロール オブジェクトの既定のインターフェイスを実装します。これは、コントロールの既定のインターフェイスであり、現時点では実装されている唯一のインターフェイスです。インターフェイスは、コントロールの宣言ファイル (サンプルの場合は MYCTL.H) で宣言されており簡単です。
__interface IMyCtl: public IDispatch
{
};
このコードで宣言されているカスタム インターフェイス IMyCtl は、標準インターフェイスの IDispatch から派生しており、メソッドは含まれていません。
このブロックには、次の属性が含まれています。
object 後に続くインターフェイス定義がカスタム インターフェイスであり、プロジェクトの .idl ファイルに格納される必要があることを示します。
uuid IMyCtl インターフェイスに対する IID を宣言します。
dual インターフェイスをデュアル インターフェイスとして宣言します。デュアル インターフェイスは、事前バインディングと遅延バインディングの両方をサポートします。
helpstring コントロール オブジェクトおよびその用途の簡単な説明です。
pointer_default 埋め込みポインタの特性を指定します。サンプル コントロールで指定されている unique は、埋め込みポインタが NULL であってもかまわず、重複する値がないことを意味しています。
次に進むには、「属性によるプロパティの追加」を参照してください。