現在のモニカーと指定したモニカーを結合して、新しい複合モニカーを作成する。
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 |
| URL | https://github.com/inovia/IronHSP |
| 備考 | Win32 API の com_misc.dll 関数群。CsWin32 + win32metadata から自動生成。
hsp3net 専用 (intptr / NSTRUCT / wstr を使用)。 |
| タイプ | 拡張命令 |
| グループ | Win32API |
| 対応環境 |
|
| hs ファイル | hsphelp\win32_com_misc_gen2.hs |