IMoniker_ComposeWith

現在のモニカーと指定したモニカーを結合して、新しい複合モニカーを作成する。

IMoniker_ComposeWith this, pmkRight, fOnlyIfNotGeneric, ppmkComposite

this : [comobj] IMoniker インターフェースの COM オブジェクト変数
pmkRight : [comobj] このモニカーの末尾に合成するモニカーの IMoniker インターフェースへのポインタ。
fOnlyIfNotGeneric : [int] TRUE の場合、呼び出し側は非汎用合成を要求しており、pmkRight が汎用複合以外の方法でこのモニカーと合成できるモニカークラスの場合にのみ操作を続行すべきである。FALSE の場合、必要であれば汎用複合を作成できる。多くの呼び出し側はこのパラメータに FALSE を指定すべきである。
ppmkComposite : [comobj] 複合モニカーポインタを受け取る IMoniker ポインタ変数へのポインタ。成功時、実装は結果のモニカーに対して AddRef を呼び出さなければならない。呼び出し側は Release を呼び出す責任がある。エラーが発生した場合、またはモニカー同士の合成結果が何もない場合 (例えば、アンチモニカーを項目モニカーやファイルモニカーと合成する場合)、*ppmkComposite は NULL に設定すべきである。

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

解説

現在のモニカーと指定したモニカーを結合して、新しい複合モニカーを作成する。

[戻り値]
このメソッドは、標準の戻り値 E_OUTOFMEMORY および E_UNEXPECTED のほか、以下の値を返す場合がある。
(以下省略)

[備考]
2 つのモニカーを結合することを合成と呼ぶ。同じクラスの 2
つのモニカーは、非汎用合成と呼ばれる方法で結合できることがある。例えば、不完全なパスを表すファイルモニカーと相対パスを表すファイルモニカーを結合し、完全なパスを表す単一のファイルモニカーを形成できる。特定のモニカークラスに対する非汎用合成は、そのクラスの
ComposeWith の実装でのみ処理できる。クラスを問わず 2
つのモニカーを結合することを汎用合成と呼び、CreateGenericComposite
関数の呼び出しで実現できる。モニカーの合成は結合則が成り立つ。すなわち、A、B、C がモニカーのとき、Comp()
を合成操作として、Comp( Comp( A, B ), C ) は常に Comp( A, Comp( B, C ) )
と等しい。呼び出し側への注意: 2
つのモニカーを結合するには、最初のモニカーに非汎用合成を行う機会を与えるため、CreateGenericComposite 関数ではなく
ComposeWith
を呼び出すべきである。項目モニカーを用いて自身のオブジェクトを識別するオブジェクトは、そのオブジェクトの位置を完全に識別するモニカーを提供するため
ComposeWith
を呼び出すだろう。これは、例えば、ドキュメントの一部へのリンクをサポートするサーバや、ドキュメント内の埋め込みオブジェクトへのリンクをサポートするコンテナに適用される。このような状況では、次のようにする。
(以下省略)

情報

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