次の方法で共有


IPropertyPage::SetObjects メソッド (ocidl.h)

プロパティ ページに、このプロパティ ページに関連付けられているオブジェクトへのポインターの配列を提供します。

プロパティ ページは 、IPropertyPage::Apply の呼び出しを受け取るときに、適切なインターフェイスを通じてこれらのオブジェクトに値の変更を送信する必要があります。 プロパティ ページは、これらのインターフェイスに対してクエリを実行する必要があります。 オブジェクトがプロパティ ページで予期されるインターフェイスをサポートしていない場合、このメソッドは失敗する可能性があります。

構文

HRESULT SetObjects(
  [in] ULONG    cObjects,
  [in] IUnknown **ppUnk
);

パラメーター

[in] cObjects

ppUnk が指す配列内のポインターの数。 このパラメーターが 0 の場合、プロパティ ページは、このメソッドに以前に渡されたすべてのポインターを解放する必要があります。

[in] ppUnk

IUnknown インターフェイス ポインターの配列へのポインター。各ポインターは、この (および場合によっては他の) プロパティ ページが表示されるプロパティ シートの影響を受ける一意のオブジェクトを識別します。 プロパティ ページでは、その時点で各ポインターに対して AddRef を呼び出すこれらのポインターをキャッシュする必要があります。 このポインターの配列は、プロパティ シートを呼び出すために OleCreatePropertyFrame または OleCreatePropertyFrameIndirect に渡されたものと同じです。

戻り値

このメソッドは、標準の戻り値E_FAIL、E_INVALIDARG、E_OUTOFMEMORY、E_UNEXPECTED、および次の値を返すことができます。

リターン コード 説明
S_OK
プロパティ ページは、必要なポインターを正常に保存しました。
E_NOINTERFACE
ppUnk のオブジェクトの 1 つは、このプロパティ ページで想定されるインターフェイスをサポートしていないため、このプロパティ ページは通信できません。
E_POINTER
ppUnk のアドレスが無効です。 たとえば、 NULL である可能性があります。

注釈

プロパティ ページは、このメソッドまたは他のメソッドによって返されるポインターを保持するために必要です。 これらの特定の IUnknown ポインターが保持されている場合、cObjects が 0 に等しい SetObjects が呼び出されるまで、プロパティ ページはキャッシュ時に AddRef を呼び出す必要があります。 その時点で、プロパティ ページは各ポインターを介して Release を 呼び出し、保持されているオブジェクトを解放する必要があります。

呼び出し元は 、IPropertyPage::Activate を呼び出す前にプロパティ ページにこれらのオブジェクトを提供する必要があります。また、ページを非アクティブ化するとき、またはオブジェクトを完全に解放するときに、パラメーターとして 0 を指定して SetObjects を呼び出す必要があります。 NULL 以外の ppUnk パラメーターを持つ SetObjects の各呼び出しは、cObjects パラメーターで 0 を指定した SetObjects の後の呼び出しと一致する必要があります。

実装者へのメモ

E_NOTIMPLは有効な戻り値ではありません。

要件

要件
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー ocidl.h

こちらもご覧ください

IPropertyPage