IResultOwnerData
COM公式ドキュメント
IResultOwnerData インターフェイスは、LVS_OWNERDATA スタイルが設定されたリストビューコントロールである仮想リストの使用をサポートします。
メソッド 3
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
仮想リスト内で、指定した文字列に一致する次の項目を検索します。
| pFindInfo | RESULTFINDINFO* | in | RESULTFINDINFO 構造体へのポインター。 |
| pnFoundIndex | INT* | out | 検索された項目のインデックスを返すためのポインター。項目が見つからなかった場合、値は –1 になります。 |
戻り値
このメソッドは、次のいずれかの値を返すことができます。
解説(Remarks)
スナップインは仮想リストのすべての項目データを保持するため、部分的な名前入力によるナビゲーションを可能にするには、スナップインが FindItem を実装する必要があります。ユーザーが印字可能な文字を入力するたびに、コンソールは次の一致を検索するために FindItem を呼び出します。コンソールは文字の蓄積とタイミングの処理を行い、各 FindItem 呼び出しで現在の部分的な名前をスナップインに渡します。
仮想リストが一定範囲の項目の表示情報を要求しようとしているときに呼び出され、最適化が可能な場合にスナップインが事前に情報を収集できるようにします。
| nStartIndex | INT | in | 要求される最初の項目のインデックス。 |
| nEndIndex | INT | in | 要求される最後の項目のインデックス。 |
戻り値
このメソッドは、次のいずれかの値を返すことができます。
解説(Remarks)
MMC は仮想リストビューに対して CacheHint を呼び出し、要求された項目データをスナップインがキャッシュする方法を最適化して取得パフォーマンスを向上させるのを支援します。呼び出しで渡される引数は、MMC がキャッシュを推奨する項目範囲の両端を含むインデックス値を示します。 CacheHint が呼び出されると、スナップインは要求された範囲の項目情報をキャッシュに読み込む準備をしておく必要があり、これにより後で IComponent::GetDisplayInfo メソッドが呼び出されたときに情報がすぐに利用できるようになります。
すべての項目が要求される保証も、他の項目が要求されない保証もありません。
仮想結果リストの項目を並べ替えます。
| nColumn | INT | in | クリックされた列ヘッダーのインデックス。 |
| dwSortOptions | DWORD | in | 並べ替え操作で使用する並べ替えオプション。この値は次のオプションの組み合わせにできます。 RSI_DESCENDING = 0x0001降順で並べ替えます。既定では昇順で並べ替えます。 RSI_NOSORTICON = 0x0002並べ替えの矢印アイコンを削除するよう MMC に指示します。このオプションは、スナップインがカスタムの並べ替え操作を行う場合に役立ちます。 |
| lUserParam | LPARAM | in | IResultData::Sort 呼び出しで渡されたユーザーパラメーター。ユーザーが並べ替えを開始した場合は NULL になります。 |
戻り値
このメソッドは、次のいずれかの値を返すことができます。
解説(Remarks)
スナップインは仮想リストのすべての項目データストレージを保持するため、リスト自体は並べ替えをサポートしません。ユーザーが仮想リストのヘッダー項目をクリックしたとき、またはスナップインが IResultData::Sort を呼び出したときに、コンソールがこの関数を呼び出します。
MMC は、スナップインが IResultData::Sort の呼び出しで渡したのと同じ並べ替えオプションで IResultOwnerData::SortItems を呼び出します。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IResultOwnerData "{9CB396D8-EA83-11D0-AEF1-00C04FB6DD2C}" #usecom global IResultOwnerData IID_IResultOwnerData "{}" #comfunc global IResultOwnerData_FindItem 3 var,var #comfunc global IResultOwnerData_CacheHint 4 int,int #comfunc global IResultOwnerData_SortItems 5 int,int,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IResultOwnerData "{9CB396D8-EA83-11D0-AEF1-00C04FB6DD2C}" #usecom global IResultOwnerData IID_IResultOwnerData "{}" #comfunc global IResultOwnerData_FindItem 3 sptr,sptr #comfunc global IResultOwnerData_CacheHint 4 int,int #comfunc global IResultOwnerData_SortItems 5 int,int,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。