OleCreateFromData

クリップボードから取得したもの、または OLE ドラッグアンドドロップ操作の一部として取得したデータ転送オブジェクトから埋め込みオブジェクトを作成する。OLE ドラッグアンドドロップ操作からの貼り付け実装に使用することを想定している。

OleCreateFromData pSrcDataObj, riid, renderopt, pFormatEtc, pClientSite, pStg, ppvObj

pSrcDataObj : [var] オブジェクト作成の元となるデータを保持するデータ転送オブジェクト上の IDataObject インターフェイスへのポインタ。
riid : [var] 呼び出し側が後に新しいオブジェクトと通信するために使用するインターフェイスの識別子への参照(通常は IID_IOleObject で、これは OLE ヘッダで IOleObject のインターフェイス識別子として定義されている)。
renderopt : [int] 新しく作成されるオブジェクトが持つローカルキャッシュによる描画またはデータ取得機能を示す OLERENDER 列挙の値。追加の考慮事項については後述の「備考」を参照。
pFormatEtc : [var] 新しく作成されるオブジェクトが持つローカルキャッシュによる描画またはデータ取得機能を示す OLERENDER 列挙値へのポインタ。選択された OLERENDER 値は pFormatEtc パラメータの取り得る値に影響する。
pClientSite : [var] オブジェクトがコンテナからサービスを要求するための主要インターフェイスである IOleClientSite のインスタンスへのポインタ。このパラメータには NULL を指定できる。
pStg : [var] ストレージオブジェクト上の IStorage インターフェイスへのポインタ。このパラメータに NULL を指定することはできない。
ppvObj : [var] riid で要求したインターフェイスポインタを受け取るポインタ変数のアドレス。正常終了した場合、*ppvObj には新しく作成されたオブジェクト上の要求されたインターフェイスポインタが格納される。

(プラグイン / モジュール : ole32.dll)

解説

クリップボードから取得したもの、または OLE
ドラッグアンドドロップ操作の一部として取得したデータ転送オブジェクトから埋め込みオブジェクトを作成する。OLE
ドラッグアンドドロップ操作からの貼り付け実装に使用することを想定している。

[戻り値]
この関数は成功時に S_OK を返す。その他の戻り値には以下が含まれる。
(以下省略)

[備考]
OleCreateFromData 関数は、IDataObject
インターフェイスをサポートするデータ転送オブジェクトから埋め込みオブジェクトを作成する。この場合のデータオブジェクトは、OleGetClipboard
関数の呼び出しでクリップボードから取得したものか、または OLE ドラッグアンドドロップ操作の一部として渡されたもの(データオブジェクトは
IDropTarget::Drop の呼び出しに渡される)である。FileName または FileNameW
クリップボード形式(CF_FILENAME)がデータ転送オブジェクト内に存在し、CF_EMBEDDEDOBJECT または
CF_EMBEDSOURCE が存在しない場合、OleCreateFromData
はまず指定されたファイルを含むパッケージを作成しようとする。一般に、最初に利用可能な形式を使用する。パッケージを作成できない場合、OleCreateFromData
は CF_EMBEDDEDOBJECT 形式を使ってオブジェクトの作成を試みる。この形式が利用できない場合は、CF_EMBEDSOURCE
形式での作成を試みる。いずれの形式も利用できず、データ転送オブジェクトが IPersistStorage
インターフェイスをサポートしている場合、OleCreateFromData はオブジェクトの IPersistStorage::Save
を呼び出してオブジェクト自身に保存させる。

既存のリンクオブジェクトが選択されたうえでコピーされた場合、それはクリップボード上では通常の埋め込み可能オブジェクトとして現れる。したがって、OleCreateFromData
を呼び出す貼り付け操作はリンクオブジェクトを作成する可能性がある。貼り付け操作の後、コンテナは QueryInterface
関数を呼び出して IID_IOleLink(OLE ヘッダで IOleLink
のインターフェイス識別子として定義されている)を要求し、リンクオブジェクトが作成されたかどうかを判定すべきである。
renderopt および pFormatetc
パラメータを使用して、新しく作成されるオブジェクトのキャッシュ機能を制御する。これらのパラメータの相互作用を使って何をキャッシュするかを判断する方法に関する一般的な情報については
OLERENDER 列挙を参照。ただし、これらのパラメータが OleCreateFromData
のキャッシュ初期化方法に及ぼす具体的な影響がいくつかある。
OleCreateFromData が CF_EMBEDDEDOBJECT または CF_EMBEDSOURCE
のどちらかのクリップボード形式を使用して埋め込みオブジェクトを作成する場合、両者の主な違いはキャッシュ初期化データの格納場所である。
(以下省略)

情報

プラグイン / モジュールole32.dll
バージョン1.0
作成日2026/04/16
著作者IronHSP / CsWin32 bridge
URLhttps://github.com/inovia/IronHSP
備考Win32 API の ole32.dll 関数群。CsWin32 + win32metadata から自動生成。
hsp3net 専用 (intptr / NSTRUCT / wstr を使用)。
タイプ拡張命令
グループWin32API
対応環境
  • Windows 版 HSP
hs ファイルhsphelp\win32_ole32_gen2.hs