IFileDialog2
COM公式ドキュメント
IFileDialog インターフェイスを拡張し、共通ファイルダイアログで参照できる特定の限定された場所を呼び出し側が指定できるようにするメソッド、および Cancel ボタンのラベルとして表示する代替テキストを指定できるようにするメソッドを提供します。
解説(Remarks)
このインターフェイスは、継承元である IFileDialog インターフェイスのメソッドも提供します。
実装する場合
このインターフェイスの実装は Windows によって提供されます。サードパーティがカスタム実装を提供することはありません。使用する場合
このインターフェイスのメソッドは、次の 2 つのケースで使用します。- ダイアログのナビゲーションを特定の名前空間に限定したい場合。
- 機能に合わせて、ダイアログの Cancel ボタンに異なるラベルを付ける必要がある場合。
メソッド 2
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
共通ファイルダイアログの Cancel ボタンに表示される既定のテキスト「Cancel」を置き換えます。
| pszLabel | LPWSTR | in | ボタンに表示する新しいテキストを含む文字列へのポインター。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
Cancel ボタンのテキストを変更することは、たとえば IFileDialogEvents::OnFileOk メソッドを使用して項目を蓄積し、ボタンのテキストを Cancel ではなく Done にすべきような状況で役立ちます。
たとえば Save ダイアログの Browse フォルダーオプションで、名前空間の参照を開始する最上位の場所を指定します。ユーザーはこの場所より上位に移動することはできません。
| psi | IShellItem* | in | ナビゲーションのルートを表す IShellItem オブジェクトへのポインター。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
SetNavigationRoot は、ナビゲーションをシェル名前空間の特定の領域に限定したいアプリケーションで使用できます。ナビゲーションウィンドウ内の項目は、指定した項目で置き換えられ、ユーザーが名前空間のこの部分の外へ移動しないように誘導します。
このメソッドは、ダイアログの表示中に呼び出すことはできません。
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 指定が可能。