IMoniker::GetDisplayName メソッド (objidl.h)

モニカーの表示名を取得します。

構文

HRESULT GetDisplayName(
  [in]  IBindCtx *pbc,
  [in]  IMoniker *pmkToLeft,
  [out] LPOLESTR *ppszDisplayName
);

パラメーター

[in] pbc

この操作で使用するバインド コンテキスト上の IBindCtx インターフェイスへのポインター。 バインド コンテキストは、バインド プロセス中にバインドされたオブジェクトをキャッシュし、バインド コンテキストを使用するすべての操作に適用されるパラメーターを含み、モニカー実装がその環境に関する情報を取得する手段を提供します。

[in] pmkToLeft

モニカーが複合モニカーの一部である場合は、このモニカーの左側にあるモニカーへのポインター。 このパラメーターは、複合モニカーのさまざまなコンポーネント間の連携を可能にするために、主にモニカー実装者によって使用されます。 モニカー クライアントは NULL を渡す必要があります。

[out] ppszDisplayName

モニカーの表示名文字列へのポインターを受け取るポインター変数のアドレス。 実装では 、IMalloc::Alloc を使用して ppszDisplayName で返される文字列を割り当てる必要があります。呼び出し元は IMalloc::Free を呼び出して解放する必要があります。 呼び出し元とこのメソッドの実装の両方で、 CoGetMalloc によって返される COM タスク アロケーターが使用されます。 エラーが発生した場合、実装で *ppszDisplayName をNULL に設定する必要があります。

戻り値

このメソッドは、E_OUTOFMEMORY標準の戻り値と、次の値を返すことができます。

リターン コード 説明
S_OK
メソッドは正常に完了しました。
MK_E_EXCEEDEDDEADLINE
バインド 操作は、バインド コンテキストの BIND_OPTS 構造体で指定された制限時間内に完了できませんでした。
E_NOTIMPL
表示名がありません。

解説

GetDisplayName は、モニカーの表示可能な表現である文字列を提供します。 表示名はモニカーの内部状態の完全な表現ではありません。これは、ユーザーが読み取ることができる単なるフォームです。 その結果、2 つの異なるモニカーが同じ表示名を持つことは (まれですが) 可能です。 MkParseDisplayName 関数を呼び出すときにモニカーの表示名をそのモニカーに解析できる保証はありませんが、失敗することはまれです。

呼び出し元へのメモ

モニカーの表示名を取得すると、コストの高い操作になる可能性があります。 効率を高めるために、繰り返し呼び出すのではなく、 GetDisplayName への最初の正常な呼び出しの結果をキャッシュすることができます。

実装者へのメモ

表示名が変更されないモニカー クラスを作成する場合は、表示名をキャッシュし、要求されたときにキャッシュされた名前を指定するだけです。 表示名が時間の経過と同時に変更される可能性がある場合、現在の表示名を取得すると、モニカーがオブジェクトのストレージにアクセスするか、オブジェクトにバインドする必要があり、どちらもコストの高い操作になる可能性があります。 この場合、 GetDisplayName の実装では、バインド コンテキストのBIND_OPTS構造体で指定された時間までに名前を取得できない場合は 、MK_E_EXCEEDEDDEADLINE を返す必要があります。

汎用複合モニカーの一部を意図したモニカーには、その表示名の一部として、先行する区切り記号 ('' など) を含める必要があります。 たとえば、アイテム モニカーによって返される表示名には、 CreateItemMoniker 関数で作成されたときに指定された区切り記号が含まれます。 ファイル モニカーの表示名には区切り記号は含まれません。これは、ファイル モニカーが常に複合の左端のコンポーネントであることが想定されるためです。

実装固有の注意事項

実装 Notes
アンチモニカー このモニカーに含まれる各アンチモニカーについて、このメソッドは "\.." の 1 つのインスタンスを返します。
クラス モニカー クラス モニカーの表示名は、clsid:string-clsid-no-curly-braces *[";" の形式です。 clsid-param=value]:。 たとえば、clsid:a7b90590-36fd-11cf-857d-00aa006d2ea4:。
ファイル モニカー このメソッドは、モニカーが表すパスを返します。
汎用複合モニカー このメソッドは、複合の各コンポーネント モニカーによって返される表示名の連結を返します。
アイテム モニカー このメソッドは、アイテム モニカーの作成時に指定された区切り記号と項目名の連結を返します。
OBJREF モニカー このメソッドは、OBJREF モニカーの表示名を取得します。 表示名は、実行中のオブジェクトのマシンの場所、プロセス エンドポイント、インターフェイス ポインター ID (IPID) をカプセル化する 64 ビット エンコードです。 今後の互換性のために、表示名は URL の一部として指定できる文字に制限されます。
ポインター モニカー このメソッドは、E_NOTIMPLを返します。
URL モニカー URL モニカーは、その完全な URL 文字列を返そうとします。 モニカーが部分的な URL 文字列で作成された場合 ( 「CreateURLMonikerEx」を参照)、最初に SZ_URLCONTEXT のバインド コンテキストで URL モニカーを検索し、次に左側にあるモニカーのコンテキスト情報を確認します。 完全な URL 文字列を返すことができない場合は、部分的な URL 文字列が返されます。

要件

   
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー objidl.h

関連項目

Imoniker

MkParseDisplayName