OleCreateStaticFromData

データ転送オブジェクトから、ネイティブデータを持たず表現のみを含む静的オブジェクトを作成する。

OleCreateStaticFromData pSrcDataObj, iid, renderopt, pFormatEtc, pClientSite, pStg, ppvObj

pSrcDataObj : [var] オブジェクトを作成するためのデータを保持するデータ転送オブジェクト上の IDataObject インターフェイスへのポインタ。
iid : [var] 呼び出し元が新しいオブジェクトと通信するためのインターフェイスの識別子への参照(通常は IID_IOleObject。OLE ヘッダーで IOleObject のインターフェイス識別子として定義されている)。
renderopt : [int] 新しく作成されるコンポーネントにおいて、コンテナがローカルにキャッシュしたい描画またはデータ取得機能を示す OLERENDER 列挙の値。この関数に OLERENDER_NONE または OLERENDER_ASIS を渡すのはエラーとなる。
pFormatEtc : [var] renderopt の値として使用される OLERENDER フラグに応じて、FORMATETC 列挙値の 1 つへのポインタになることがある。制約については OLERENDER 列挙を参照のこと。
pClientSite : [var] IOleClientSite のインスタンスへのポインタ。これはオブジェクトがコンテナからサービスを要求するための主要なインターフェイスである。このパラメータは NULL でもよい。
pStg : [var] オブジェクトのストレージのための IStorage インターフェイスへのポインタ。このパラメータは NULL にできない。
ppvObj : [var] riid で要求されたインターフェイスポインタを受け取るポインタ変数のアドレス。正常終了時、*ppvObj には新しく作成されたオブジェクト上の要求されたインターフェイスポインタが格納される。

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

解説

データ転送オブジェクトから、ネイティブデータを持たず表現のみを含む静的オブジェクトを作成する。

[戻り値]
関数が成功した場合は S_OK を返す。

[備考]
OleCreateStaticFromData 関数は、IDataObject
インターフェイスを提供している限り、任意のオブジェクトを静的オブジェクトに変換できる。OLE のリンクや埋め込みにおける「Convert
To Picture」オプションの実装に有用である。
静的オブジェクトはソースが OLE
がレンダリングするクリップボード形式(CF_METAFILEPICT、CF_DIB、CF_BITMAP、CF_ENHMETAFILE)のいずれかをサポートしている場合にのみ作成できる。
OleCreateStaticFromData
を呼び出すことでクリップボードから静的オブジェクトを貼り付けることもできる。オブジェクトが静的かどうかを判定するには
OleQueryCreateFromData 関数を呼び出す。これは
CF_METAFILEPICT、CF_DIB、CF_BITMAP、CF_ENHMETAFILE のいずれかが存在し、OLE
形式が存在しない場合に OLE_S_STATIC を返す。これは、オブジェクトを作成するために OleCreateFromData
ではなく OleCreateStaticFromData を呼び出すべきであることを示す。
新しい静的オブジェクトのクラスは、CF_METAFILEPICT の場合は CLSID_StaticMetafile、CF_DIB または
CF_BITMAP の場合は CLSID_StaticDib、CF_ENHMETAFILE の場合は
CLSID_Picture_EnhMetafile となる。静的オブジェクトは IOleObject::GetMiscStatus が返す
OLEMISC_STATIC ビットと OLE_CANTLINKINSIDE ビットを設定する。静的オブジェクトはアスペクト
DVASPECT_CONTENT と LINDEX -1 を持つ。pSrcDataObject は
OleCreateStaticFromData が戻ったあとも有効である。pSrcDataObject
の解放は呼び出し元の責任であり、OLE はこれを解放しない。
静的オブジェクト内のプレゼンテーションストリームは 1 つだけしか持てない。

情報

プラグイン / モジュール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