次の方法で共有


com_interface_entry (C++)

ターゲット クラスの COM インターフェイス マップにエントリを追加します。

[ com_interface_entry( 
   com_interface_entry
 ) ]

パラメーター

  • com_interface_entry
    文字列エントリの実際のテキスト。有効な値の一覧についてはCOM_INTERFACE_ENTRY マクロ を参照してください。

解説

com_interface_entry C++ 属性はターゲット オブジェクトの COM インターフェイス マップに unabridged 文字列の内容を挿入します。属性ターゲット オブジェクトが一度に適用されている場合はエントリが既存のインターフェイス マップの開始位置に挿入されます。属性が同じターゲット オブジェクトに繰り返し適用されている場合はエントリが受信した順序でインターフェイス マップの先頭に挿入します。

この属性は コクラスProgIDまたは vi_progid の属性 (そのうちの 1 つを意味する属性を適用することを同じ要素に必要です。の一つの属性が使用されそのほかの 2 つが自動的に適用されます。たとえばProgID が適用されている場合vi_progidコクラス も適用されます。

com_interface_entry を使用する際は新しいインターフェイスをインターフェイス マップの先頭に挿入します次の COM_INTERFACE_ENTRY の型の場合があります : 1

  • COM_INTERFACE_ENTRY

  • COM_INTERFACE_ENTRY_IID

  • COM_INTERFACE_ENTRY2

  • COM_INTERFACE_ENTRY2_IID

com_interface_entry の追加属性の使用方法はサポートされるすべての COM_INTERFACE_ENTRY の型を使用できます。

この制限はATL に IUnknownID としてインターフェイス マップの最初のエントリを使用するためです ; したがって有効なエントリはインターフェイスである必要があります。たとえば次のコード例はインターフェイス マップの最初のエントリは実際の COM インターフェイスを指定しないため無効です。

[ coclass, com_interface_entry =
    "COM_INTERFACE_ENTRY_NOINTERFACE(IDebugTest)"
]
   class CMyClass
   {
   };

使用例

次のコードは CMyBaseClass の既存の COM インターフェイス マップに 2 エントリを追加します。1 番目の標準インターフェイスであり2 番 IDebugTest のインターフェイスを非表示にします。

// cpp_attr_ref_com_interface_entry.cpp
// compile with: /LD
#define _ATL_ATTRIBUTES
#include "atlbase.h"
#include "atlcom.h"

[module (name ="ldld")];

[ object,
  uuid("7dbebed3-d636-4917-af62-c767a720a5b9")]
__interface IDebugTest{};

[ object,
  uuid("2875ceac-f94b-4087-8e13-d13dc167fcfc")]
__interface IMyClass{};

[ coclass,
  com_interface_entry ("COM_INTERFACE_ENTRY (IMyClass)"),
  com_interface_entry ("COM_INTERFACE_ENTRY_NOINTERFACE(IDebugTest)"),
  uuid("b85f8626-e76e-4775-b6a0-4826a9e94af2")
]

class CMyClass: public IMyClass, public IDebugTest
{
};

CMyBaseClass の最終的な COM オブジェクトのマップは次のとおりです。:

    BEGIN_COM_MAP(CMyClass)
        COM_INTERFACE_ENTRY (IMyClass)
        COM_INTERFACE_ENTRY_NOINTERFACE(IDebugTest)
        COM_INTERFACE_ENTRY(IMyClass)
        COM_INTERFACE_ENTRY2(IDispatch, IMyClass)
        COM_INTERFACE_ENTRY(IDebugTest)
        COM_INTERFACE_ENTRY(IProvideClassInfo)
    END_COM_MAP()

必要条件

属性コンテキスト

対象

クラス struct

複数回の適用

必要な属性

次の一つ以上 : コクラス ProgIDまたは vi_progid

無効な属性

なし

属性コンテキストの詳細については、「属性コンテキスト」を参照してください。

参照

その他の技術情報

COM 属性

クラス属性

Typedef、Enum、Union、および Struct 型の属性

Attributes Samples