OleCreate

OleCreate 関数(ole2.h)は、CLSID で識別される埋め込みオブジェクトを作成する。これはエンドユーザーがオブジェクトを挿入できるメニュー項目の実装に使用できる。

OleCreate rclsid, riid, renderopt, pFormatEtc, pClientSite, pStg, ppvObj

rclsid : [var] 作成対象の埋め込みオブジェクトの CLSID。
riid : [var] 呼び出し側が新しいオブジェクトと通信するために使用するインターフェイスの識別子への参照。通常は IID_IOleObject(OLE ヘッダで IOleObject のインターフェイス識別子として定義されている)を指定する。
renderopt : [int] 新しく作成されるオブジェクトが持つローカルキャッシュによる描画機能を示す OLERENDER 列挙の値。選択された OLERENDER 値は、pFormatEtc パラメータの取り得る値に影響する。
pFormatEtc : [var] renderopt の値として使用される OLERENDER フラグに応じて、FORMATETC 列挙値の一つへのポインタ。制限については OLERENDER 列挙を参照。このパラメータは renderopt パラメータと合わせて、新しいオブジェクトが初期にキャッシュできるものを指定する。
pClientSite : [var] OleCreate に IOleObject::SetClientSite を呼び出させたい場合、コンテナ上の IOleClientSite インターフェイスへのポインタ。NULL を指定してもよく、その場合は操作を試みる前に明示的に IOleObject::SetClientSite を呼び出す必要がある。
pStg : [var] ストレージオブジェクト上の IStorage インターフェイスのインスタンスへのポインタ。このパラメータに NULL を指定することはできない。
ppvObj : [var] riid で要求したインターフェイスポインタを受け取るポインタ変数のアドレス。正常終了した場合、*ppvObject には要求されたインターフェイスポインタが格納される。

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

解説

OleCreate 関数(ole2.h)は、CLSID
で識別される埋め込みオブジェクトを作成する。これはエンドユーザーがオブジェクトを挿入できるメニュー項目の実装に使用できる。

[戻り値]
この関数は成功時に S_OK を返し、標準の戻り値 E_OUTOFMEMORY をサポートする。
(以下省略)

[備考]
OleCreate
関数は新しい埋め込みオブジェクトを作成する。通常はメニュー項目「新規オブジェクトの挿入」を実装するために呼び出される。OleCreate
が戻ったとき、renderopt が OLERENDER_DRAW または OLERENDER_FORMAT
でない限り、作成されたオブジェクトは空(データなし)の状態でロードされている。通常、コンテナはその後 OleRun 関数または
IOleObject::DoVerb を呼び出して、初期編集のためにオブジェクトを表示する。
rclsid パラメータは要求されたオブジェクトの CLSID を指定する。登録済みオブジェクトの CLSID
はシステムレジストリに格納されている。アプリケーションのユーザーが「オブジェクトの挿入」を選択すると、レジストリ内から希望のオブジェクト型をユーザーが選択できる選択ボックスが表示される。OleCreate
を「オブジェクトの挿入」メニュー項目の実装に使用する場合、選択された項目に関連付けられた CLSID が OleCreate の
rclsid パラメータに割り当てられる。
riid パラメータは、クライアントが新しいオブジェクトと通信するために使用するインターフェイスを指定する。正常終了時、ppvObject
パラメータは要求されたインターフェイスへのポインタを保持する。

作成されたオブジェクトのキャッシュには、コンテナが開かれたときにオブジェクトの表示を可能にする情報が含まれる。何をキャッシュすべきかに関する情報は
renderopt および pFormatetc の値で渡される。OleCreate
が戻ったとき、作成されたオブジェクトのキャッシュは必ずしも満たされていない。代わりに、キャッシュはオブジェクトが初めて実行状態に入ったときに満たされる。呼び出し側は
OleCreate が戻った後、オブジェクトが実行される前に IOleCache::Cache
を呼び出してキャッシュ制御を追加することができる。renderopt が OLERENDER_DRAW または
OLERENDER_FORMAT の場合、OleCreate はオブジェクトが IOleCache
インターフェイスをサポートしていることを要求する。その他の renderopt 値の場合はそのような要件はない。pClientSite が
NULL でない場合、OleCreate は pClientSite ポインタを通じて IOleObject::SetClientSite
を呼び出す。IOleClientSite
は、オブジェクトがコンテナからサービスを要求する主要なインターフェイスである。pClientSite が NULL
の場合は、操作を試みる前に明示的に IOleObject::SetClientSite を呼び出す必要がある。

情報

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