IFileDialogControlEvents
COM公式ドキュメント
アプリケーションが共通ファイルダイアログに追加したコントロールに関連するイベントを、アプリケーションに通知できるようにするメソッドを公開します。
解説(Remarks)
実装するタイミング
IFileDialogControlEvents は、アプリケーションが IFileDialogEvents を実装しているのと同じオブジェクト上で実装します。ダイアログは、このインターフェイスのメソッドの戻り値をチェックしません。
メソッド 4
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
コンボボックスで項目が選択されたとき、ユーザーがオプションボタン(ラジオボタンとも呼ばれます)をクリックしたとき、または [ツール] メニューから項目が選択されたときに呼び出されます。
| pfdc | IFileDialogCustomize* | in | アプリケーションがダイアログにコントロールを追加した際に使用したインターフェイスへのポインター。 |
| dwIDCtl | DWORD | in | ユーザーが選択を行ったコントロールの ID。 |
| dwIDItem | DWORD | in | 選択された項目の ID。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
この通知は、ユーザーが [開く] ボタンに付属するドロップダウンメニューから項目を選択した場合には送信されません。そのケースでは、実行される動作が常に同じ(ユーザーが単に [開く] ボタンをクリックした場合と同様にダイアログを閉じる)だからです。その状況では、アプリケーションは GetSelectedControlItem を呼び出して、ユーザーがそのメニューから選択した項目を取得できます。
ユーザーがコマンドボタンをクリックしたときに呼び出されます。
| pfdc | IFileDialogCustomize* | in | アプリケーションがダイアログにコントロールを追加した際に使用したインターフェイスへのポインター。 |
| dwIDCtl | DWORD | in | ユーザーがクリックしたボタンの ID。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
ユーザーがチェックボタン(チェックボックス)の状態を変更したときに呼び出されます。
| pfdc | IFileDialogCustomize* | in | アプリケーションがダイアログにコントロールを追加した際に使用したインターフェイスへのポインター。 |
| dwIDCtl | DWORD | in | ユーザーがクリックしたボタンの ID。 |
| bChecked | BOOL | in | チェックボタンの現在の状態を示す BOOL。チェックされている場合は TRUE、それ以外の場合は FALSE。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
EnableOpenDropDown を通じてカスタマイズされた [開く] ボタンのドロップダウンリスト、または [ツール] メニューがその内容を表示しようとしているときに呼び出されます。
| pfdc | IFileDialogCustomize* | in | アプリケーションがダイアログにコントロールを追加する際に使用する IFileDialogCustomize オブジェクトへのポインター。 |
| dwIDCtl | DWORD | in | 表示されようとしているリストまたはメニューの ID。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
この通知に応答して、アプリケーションは、ダイアログの現在の状態に基づいて、表示されようとしているメニューまたはリストの内容を更新できます。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IFileDialogControlEvents "{36116642-D713-4B97-9B83-7484A9D00433}"
#usecom global IFileDialogControlEvents IID_IFileDialogControlEvents "{}"
#comfunc global IFileDialogControlEvents_OnItemSelected 3 sptr,int,int
#comfunc global IFileDialogControlEvents_OnButtonClicked 4 sptr,int
#comfunc global IFileDialogControlEvents_OnCheckButtonToggled 5 sptr,int,int
#comfunc global IFileDialogControlEvents_OnControlActivating 6 sptr,int
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。