INamespaceWalkCB
COM公式ドキュメント
INamespaceWalk と共に使用されるメソッドを公開するコールバックインターフェイスです。
解説(Remarks)
このインターフェイスの IID は IID_INamespaceWalkCB です。
メソッド 4
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
名前空間ウォーク中に名前空間内でオブジェクトが見つかったときに呼び出されます。このメソッドは、これを実装するクラスの主要なアクション関数として使用します。必要な処理をこのメソッド内で実行してください。
| psf | IShellFolder* | in | 項目を含むフォルダーを表す IShellFolder オブジェクトへのポインターです。 |
| pidl | ITEMIDLIST* | in | psf からの相対的な、項目の PIDL です。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT のエラーコードを返します。
名前空間ウォーク中にフォルダーに入ろうとしているときに呼び出されます。取得した項目の初期化にこのメソッドを使用してください。
| psf | IShellFolder* | in | pidl で指定されたフォルダーの親を表す IShellFolder オブジェクトへのポインターです。 |
| pidl | ITEMIDLIST* | in | psf からの相対的な、入ろうとしているフォルダーの PIDL です。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT のエラーコードを返します。
フォルダーを通じた名前空間ウォークの後に呼び出されます。INamespaceWalkCB::EnterFolder または INamespaceWalkCB::FoundItem によって実行された処理に続いて必要なクリーンアップを行うために、このメソッドを使用してください。
| psf | IShellFolder* | in | pidl で指定されたフォルダーの親を表す IShellFolder オブジェクトへのポインターです。 |
| pidl | ITEMIDLIST* | in | psf からの相対的な、退出しようとしているフォルダーの PIDL です。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT のエラーコードを返します。
名前空間ウォーク中に表示される進行状況ダイアログボックスのウィンドウタイトルとキャンセルボタンのテキストを初期化します。
| ppszTitle | LPWSTR* | out | このメソッドが戻るとき、ダイアログボックスに使用するタイトルを格納した null で終わる文字列へのポインターが格納されます。 |
| ppszCancel | LPWSTR* | out | このメソッドが戻るとき、名前空間ウォークをキャンセルするボタンに表示されるテキストを格納した null で終わる文字列へのポインターが格納されます。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT のエラーコードを返します。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_INamespaceWalkCB "{D92995F8-CF5E-4A76-BF59-EAD39EA2B97E}" #usecom global INamespaceWalkCB IID_INamespaceWalkCB "{}" #comfunc global INamespaceWalkCB_FoundItem 3 sptr,var #comfunc global INamespaceWalkCB_EnterFolder 4 sptr,var #comfunc global INamespaceWalkCB_LeaveFolder 5 sptr,var #comfunc global INamespaceWalkCB_InitializeProgressDialog 6 var,var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_INamespaceWalkCB "{D92995F8-CF5E-4A76-BF59-EAD39EA2B97E}" #usecom global INamespaceWalkCB IID_INamespaceWalkCB "{}" #comfunc global INamespaceWalkCB_FoundItem 3 sptr,sptr #comfunc global INamespaceWalkCB_EnterFolder 4 sptr,sptr #comfunc global INamespaceWalkCB_LeaveFolder 5 sptr,sptr #comfunc global INamespaceWalkCB_InitializeProgressDialog 6 sptr,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。