Win32 API 日本語リファレンス
ホームUI.Shell › IFileDialog2

IFileDialog2

COM
IID61744fc7-85b5-4791-a9b0-272276309b13継承元IFileDialog自前メソッド開始 vtbl27

公式ドキュメント

IFileDialog インターフェイスを拡張し、共通ファイルダイアログで参照できる特定の限定された場所を呼び出し側が指定できるようにするメソッド、および Cancel ボタンのラベルとして表示する代替テキストを指定できるようにするメソッドを提供します。

解説(Remarks)

このインターフェイスは、継承元である IFileDialog インターフェイスのメソッドも提供します。

実装する場合

このインターフェイスの実装は Windows によって提供されます。サードパーティがカスタム実装を提供することはありません。

使用する場合

このインターフェイスのメソッドは、次の 2 つのケースで使用します。

メソッド 2

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

vtbl 27 HRESULT SetCancelButtonLabel(LPWSTR pszLabel)

共通ファイルダイアログの Cancel ボタンに表示される既定のテキスト「Cancel」を置き換えます。

pszLabelLPWSTRinボタンに表示する新しいテキストを含む文字列へのポインター。

戻り値

型: HRESULT

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

Cancel ボタンのテキストを変更することは、たとえば IFileDialogEvents::OnFileOk メソッドを使用して項目を蓄積し、ボタンのテキストを Cancel ではなく Done にすべきような状況で役立ちます。

vtbl 28 HRESULT SetNavigationRoot(IShellItem* psi)

たとえば Save ダイアログの Browse フォルダーオプションで、名前空間の参照を開始する最上位の場所を指定します。ユーザーはこの場所より上位に移動することはできません。

psiIShellItem*inナビゲーションのルートを表す IShellItem オブジェクトへのポインター。

戻り値

型: HRESULT

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

SetNavigationRoot は、ナビゲーションをシェル名前空間の特定の領域に限定したいアプリケーションで使用できます。ナビゲーションウィンドウ内の項目は、指定した項目で置き換えられ、ユーザーが名前空間のこの部分の外へ移動しないように誘導します。

このメソッドは、ダイアログの表示中に呼び出すことはできません。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IFileDialog2 "{61744FC7-85B5-4791-A9B0-272276309B13}"
#usecom global IFileDialog2 IID_IFileDialog2 "{}"
#comfunc global IFileDialog2_SetCancelButtonLabel  27 wstr
#comfunc global IFileDialog2_SetNavigationRoot     28 sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。