Win32 API 日本語リファレンス
ホームSystem.Mmc › IDisplayHelp

IDisplayHelp

COM
IIDcc593830-b926-11d1-8063-0000f875a9ce継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

IDisplayHelp インターフェイスは MMC バージョン 1.1 で導入されました。

メソッド 1

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 3 HRESULT ShowTopic(LPWSTR pszHelpTopic)

IDisplayHelp::ShowTopic メソッドは、指定された HTML Help トピックを、マージされた MMC HTML Help ファイルに表示します。

pszHelpTopicLPWSTRin

マージされた MMC HTML Help ファイル内に表示するトピックを指定する、NULL 終端文字列へのポインターです。文字列は次の形式でなければなりません。

helpfilename::topicfilename

ここで helpfilename は、MMC が MMC HTML Help コレクションファイルにマージしたスナップインの HTML Help ファイル (.chm) のファイル名です (これは元の HTML Help ファイルへのパスではなく、ファイル名のみです)。topicfilename は、スナップインの .chm ファイル内のトピックファイルへの内部パスです。トピック HTML ファイルに内部ディレクトリ構造があるか、それともすべてのトピック HTML ファイルが .chm ファイルのルートに配置されるかは、スナップインの HTML Help ファイルの作成者が決定します。

スナップインは、 ISnapinHelp2::GetHelpTopic メソッドの実装内で、自身の .chm ファイルを MMC に通知します。

たとえば、スナップインが HTML Help ファイル mysnapin.chm を MMC HTML Help コレクションファイルにマージし、内部ファイルパスが htm/help01.htm のトピック HTML ファイルを持つ場合、文字列は次の形式になります。

mysnapin.chm::htm/help01.htm

代わりに help01.htm トピックファイルが mysnapin.chm Help ファイルのルートにある場合、文字列は次の形式になります。

mysnapin.chm::/help01.htm

トピックの数値 ID のサポートは、バージョン 1.2 以前には含まれていません。

戻り値

このメソッドは次のいずれかの値を返すことがあります。

解説(Remarks)

MMC バージョン 1.0 および 1.1 では、pszHelpTopic を COM API 関数 CoTaskMemAlloc で割り当てる必要があり、その後 MMC が文字列を解放していました。これは、入力パラメーターの割り当てと解放の両方を呼び出し側 (スナップイン) が行うことを求める COM の規則に違反していました。MMC 1.2 および MMC 2.0 では、pszHelpTopicCoTaskMemAlloc で割り当てる必要はなくなりました。呼び出し側は、任意のメモリ管理方法を自由に使用できます。呼び出し側が CoTaskMemAlloc の使用を選択した場合は、文字列を解放するために CoTaskMemFree を呼び出す責任も負います。

スナップインは、 IComponent::Notify メソッド内で MMCN_CONTEXTHELP 通知を処理し、IDisplayHelp::ShowTopic を呼び出すことで、選択された項目のコンテキストヘルプを提供できます。

プロパティページの場合、スナップインは IDisplayHelp::ShowTopic の代わりに MMCPropertyHelp を呼び出す必要があります。MMC のプロパティシートは通常、別のスレッドで実行されるため、プロパティページは IDisplayHelp インターフェイスを直接使用できません。代わりに、プロパティページは MMC ライブラリの MMCPropertyHelp を呼び出すことで、同じ結果を得られます。 MMCPropertyHelpIDisplayHelp::ShowTopic と同じトピック文字列パラメーターを受け取り、要求をメイン MMC スレッドへマーシャリングする処理を行います。

スナップインが MMCN_CONTEXTHELP 通知を処理する場合、MMC はスナップインが選択された項目に対するヘルプトピックを指定することを期待します。そのため、MMCN_CONTEXTHELP 通知の通知ハンドラー内で、スナップインには次の 2 つの選択肢があります。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

#define global IID_IDisplayHelp "{CC593830-B926-11D1-8063-0000F875A9CE}"
#usecom global IDisplayHelp IID_IDisplayHelp "{}"
#comfunc global IDisplayHelp_ShowTopic  3 wstr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。