次の方法で共有


CComEnumImpl::Init

すべてのクライアントに戻る列挙子インターフェイスへのポインターを渡す前にこのメソッドを呼び出す必要があります。

HRESULT Init( 
   T* begin, 
   T* end, 
   IUnknown* pUnk, 
   CComEnumFlags flags = AtlFlagNoCopy  
);

パラメーター

  • begin
    列挙する項目を含む配列の最初の要素へのポインター。

  • end
    列挙する項目を含む配列の最後の要素を超える位置へのポインターだけ。

  • pUnk
    [入力]列挙子の有効期間中に履歴に保持されずがあるオブジェクトの IUnknown のポインター。 このようなオブジェクトがない場合は null を渡します。

  • flags
    列挙子が配列の所有権を持つか、またはそのコピーを作成するかどうかを指定するようにフラグを設定します。 有効な値は、です。

戻り値

標準の HRESULT 値。

解説

このメソッドのみを一度に初期化と呼び出して、列挙子を使用して、を振ってバーにします。

ポインターを (ユーザーが別のオブジェクトに保持される配列内の項目の列挙子にデータをコピーするように依頼する) 渡すと、列挙子がそれらを必要とする場合に使用できるに格納する配列オブジェクトとように パンクの パラメーターを使用できます。 列挙子はそれを維持するオブジェクトの COM 参照を保持します。 COM は、列挙子が破棄されると自動的に解放されます参照します。

flags のパラメーターは、列挙子が、渡された配列要素をどのように処理するかを指定できるようにします。 flags は次のように表示される CComEnumFlags の列挙体の値の 1 種類があります:

enum CComEnumFlags

{

AtlFlagNoCopy = 0,

AtlFlagTakeOwnership = 2, // BitOwn

AtlFlagCopy = 3 // BitOwn | BitCopy

};

AtlFlagNoCopy は、配列の有効期間が列挙子によって制御されていないことを意味します。 この場合、配列は静的である場合や、不要になった場合 パンク によって識別されたオブジェクトの配列を解放する必要があります。

AtlFlagTakeOwnership は、配列の破棄を列挙子によって制御されることを意味します。 この場合、配列は newを使用して動的に割り当てられたいる必要があります。 列挙子はデストラクターの配列を削除します。 通常、何らかの列挙子の破棄の通知を受け取る場合は、有効なポインターを渡すことができますが、パンクnull を渡します。

AtlFlagCopyInitに渡す配列をコピーして、新しい配列が作成されることを意味します。 新しい配列の有効期間は、列挙子によって制御される必要があります。 列挙子はデストラクターの配列を削除します。 通常、何らかの列挙子の破棄の通知を受け取る場合は、有効なポインターを渡すことができますが、パンクnull を渡します。

注意

このメソッドのプロトタイプが指定されて T がクラスのテンプレート パラメーターに定義された型 Tとして配列要素を。これは、COM インターフェイスのメソッド CComEnumImpl::Nextによって公開される同じ型です。このの点は、IEnumOnSTLImplとは異なり、このクラスが別のストレージおよび公開されたデータ型をサポートしないことです。配列の要素のデータ型は COM インターフェイスによって公開されるデータ型と同じである必要があります。

必要条件

ヘッダー: atlcom.h

参照

関連項目

CComEnumImpl クラス

IEnumOnSTLImpl::Init