次の方法で共有


IDataObject::SetData メソッド (objidl.h)

このメソッドを実装するオブジェクトにデータを転送するために、データ ソースを含む オブジェクトによって呼び出されます。

構文

HRESULT SetData(
  [in] FORMATETC *pformatetc,
  [in] STGMEDIUM *pmedium,
  [in] BOOL      fRelease
);

パラメーター

[in] pformatetc

ストレージ メディアに含まれるデータを解釈するときにデータ オブジェクトによって使用される形式を定義する FORMATETC 構造体へのポインター。

[in] pmedium

データが渡されるストレージ メディアを定義する STGMEDIUM 構造体へのポインター。

[in] fRelease

TRUE の場合、SetData を実装する 呼び出されたデータ オブジェクトは、呼び出しが返された後にストレージ メディアを所有します。 つまり、 ReleaseStgMedium 関数を呼び出してメディアを使用した後、メディアを解放する必要があります。 FALSE の場合、呼び出し元はストレージ メディアの所有権を保持し、呼び出されたデータ オブジェクトは呼び出しの間だけストレージ メディアを使用します。

戻り値

このメソッドは、成功したS_OKを返します。 その他の可能な値は次のとおりです。

リターン コード 説明
DV_E_LINDEX
lindex の値が無効です。現在、-1 のみがサポートされています。
DV_E_FORMATETC
pformatetc の値が無効です。
DV_E_TYMED
tymed 値が無効です。
DV_E_DVASPECT
dwAspect 値が無効です。
OLE_E_NOTRUNNING
オブジェクト アプリケーションが実行されていません。
E_FAIL
操作が失敗しました。
E_UNEXPECTED
予期しないエラーが発生しました。
E_INVALIDARG
dwDirection 値が無効です。
E_OUTOFMEMORY
この操作に使用できるメモリが不足していました。

解説

SetData を使用すると、別のオブジェクトが実装データ オブジェクトにデータを送信しようとします。 データ オブジェクトは、別のオブジェクトからのデータの受信をサポートしている場合に、このメソッドを実装します。 これがサポートされていない場合は、E_NOTIMPLを返すように実装する必要があります。

呼び出し元は、データが渡される pmedium パラメーターによって示されるストレージ メディアを割り当てます。 呼び出されたデータ オブジェクトは、正常にデータを受け取り、エラー コードが返されない限り、データの所有権を取得しません。 fRelease パラメーターの値は、呼び出しが返された後のメディアの所有権を示します。 FALSE は 、呼び出し元がまだメディアを所有しており、データ オブジェクトが呼び出し中にのみ使用されていることを示します。 TRUE は 、データ オブジェクトがデータ オブジェクトを所有し、不要になったときに解放する必要があることを示します。

pformatetc パラメーターと pmedium パラメーターで指定される medium の型は同じである必要があります。 たとえば、1 つはグローバル ハンドルに、もう 1 つはストリームにすることはできません。

要件

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

関連項目

Idataobject