IMoniker::P arseDisplayName メソッド (objidl.h)
表示名をモニカーに変換します。
構文
HRESULT ParseDisplayName(
[in] IBindCtx *pbc,
[in] IMoniker *pmkToLeft,
[in] LPOLESTR pszDisplayName,
[out] ULONG *pchEaten,
[out] IMoniker **ppmkOut
);
パラメーター
[in] pbc
このバインド操作で使用されるバインド コンテキスト上の IBindCtx インターフェイスへのポインター。 バインド コンテキストは、バインド プロセス中にバインドされたオブジェクトをキャッシュし、バインド コンテキストを使用するすべての操作に適用されるパラメーターを含み、モニカー実装がその環境に関する情報を取得する手段を提供します。
[in] pmkToLeft
この時点までの表示名から構築されたモニカー上の IMoniker インターフェイスへのポインター。
[in] pszDisplayName
解析する残りの表示名。
[out] pchEaten
この手順で使用された pszDisplayName の文字数を受け取る変数へのポインター。
[out] ppmkOut
pszDisplayName から構築されたモニカーへのインターフェイス ポインターを受け取る IMoniker ポインター変数へのポインター。 成功した場合、実装は新しいモニカーで AddRef を呼び出す必要があります。 Release を呼び出すのは呼び出し元の責任です。 エラーが発生した場合、実装は *ppmkOut を NULL に設定 します。
戻り値
このメソッドは、標準の戻り値valuesE_OUTOFMEMORYとE_UNEXPECTED、および次の値を返すことができます。
リターン コード | 説明 |
---|---|
|
解析操作が正常に完了しました。 |
|
入力コンポーネント (pmkToLeft、このモニカー、 pszDisplayName) の構文でエラーが発生しました。 たとえば、 pmkToLeft が NULL 以外の場合、ファイル モニカーはこのエラーを返し、 pmkToLeft が NULL の場合はアイテム モニカーから返されます。 |
このメソッドは、 IMoniker::BindToObject メソッドに関連付けられているエラーを返すこともできます。
注釈
呼び出し元へのメモ
モニカー クライアントは通常、 ParseDisplayName を 直接呼び出しません。 代わりに、表示名をモニカーに変換する場合 (たとえば、コンテナー アプリケーションの [リンク] ダイアログ ボックスを実装する場合や、ドキュメント外のオブジェクトへの参照をサポートするマクロ言語を実装する場合など) に、MkParseDisplayName 関数を呼び出します。 この関数は、最初に表示名自体の最初の部分を解析します。次に、先ほど作成したモニカーで ParseDisplayName を呼び出し、表示名の残りの部分を渡し、新しいモニカーを返します。この手順は、表示名全体が解析されるまで繰り返されます。
実装者へのメモ
モニカー クラスが特定の種類のオブジェクトのみを指定するように設計されている場合、実装でこの解析を単独で実行できる場合があります。 それ以外の場合は、これまでにモニカーによって識別されたオブジェクト (つまり、pmkToLeft とこのモニカーの構成) の IParseDisplayName インターフェイス ポインターを取得し、IParseDisplayName::P arseDisplayName を呼び出した結果を返す必要があります。IParseDisplayName ポインターを取得する方法は次のとおりです。
- オブジェクトの CLSID を取得し (オブジェクトで IPersist::GetClassID を呼び出して)、 CoGetClassObject 関数を呼び出して、その CLSID に関連付けられているクラス ファクトリで IParseDisplayName インターフェイスを要求できます。
- オブジェクト自体にバインドして 、IParseDisplayName ポインターを取得することができます。
- pmkToLeft によって識別されるオブジェクトにバインドして IOleItemContainer ポインターを取得してから、IOleItemContainer::GetObject を呼び出して、アイテムの IParseDisplayName ポインターを取得できます。
実装固有の注意事項
実装 | メモ |
---|---|
アンチモニカー | このメソッドは、E_NOTIMPLを返します。 |
クラス モニカー |
このメソッドは、 IParseDisplayName にバインドし、バインドされたオブジェクトに表示名をモニカーに解析するように求めることで、表示名を解析します。
このメソッドは、最初にモニカーによって識別されるオブジェクトのクラス ファクトリにバインドし、次にオブジェクト自体にバインドすることによって、 IParseDisplayName ポインターを取得しようとします。 これらのバインディング操作のいずれかが成功した場合、ファイル モニカーは表示名の未解析部分を IParseDisplayName::P arseDisplayName メソッドに 渡します。 pmkToLeft が NULL 以外の場合、このメソッドはMK_E_SYNTAXを返します。 |
ファイル モニカー | このメソッドは、最初にモニカーによって識別されるオブジェクトのクラス ファクトリにバインドし、次にオブジェクト自体にバインドすることによって、 IParseDisplayName ポインターを取得しようとします。 これらのバインディング操作のいずれかが成功した場合、ファイル モニカーは表示名の未解析部分を IParseDisplayName::P arseDisplayName メソッドに 渡します。 |
汎用複合モニカー | このメソッドは、複合の右端のコンポーネントで IMoniker::P arseDisplayName を 再帰的に呼び出し、それ以外のすべてをその呼び出しの pmkToLeft パラメーターとして渡します。 |
アイテム モニカー | pmkToLeft が NULL の場合、このメソッドは MK_E_SYNTAXを返します。 それ以外の場合、メソッドは pmkToLeft パラメーターで IMoniker::BindToObject を呼び出し、IOleItemContainer インターフェイス ポインターを要求します。 次に、 メソッドは IOleItemContainer::GetObject を呼び出し、モニカーによって識別されるオブジェクトへの IParseDisplayName インターフェイス ポインターを要求し、表示名を IParseDisplayName::P arseDisplayName に渡します。 |
OBJREF モニカー | pmkToLeft が NULL でない場合、このメソッドはMK_E_SYNTAXを返します。 |
ポインター モニカー | このメソッドは、ラップされたポインターに IParseDisplayName インターフェイスを照会し、表示名を IParseDisplayName::P arseDisplayName に渡します。 |
URL モニカー | 完全または部分的な URL 文字列を結果モニカー (ppmkOut) に解析します。 szDisplayName が完全な URL 文字列 ("http://foo.com/default.html"など) を表す場合、結果は新しい完全な URL モニカーになります。 szDisplayName が部分的な URL 文字列 (例: ".) を表す場合。\default.html")、結果は、バインド コンテキストの SZ_URLCONTEXT object-parameter またはこの URL モニカーからコンテキストを受け取る完全な URL になります。 たとえば、コンテキスト モニカーが "http://foo.com/pub/list.html" で 、szDisplayName が ".の場合です。\default.html"、結果の URL モニカーは "http://foo.com/default.html" を表します。 |
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 2000 Professional [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows 2000 Server [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | objidl.h |