Win32 API 日本語リファレンス
ホームSystem.Mmc › IResultData

IResultData

COM
IID31da5fa0-e0eb-11cf-9f21-00aa003ca9f6継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

IResultData インターフェイスを使用すると、結果ビューペインに関連付けられた項目の追加、削除、検索、変更を行えます。また、結果ビューペインのビュースタイルを操作することもできます。

メソッド 15

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

vtbl 3 HRESULT InsertItem(RESULTDATAITEM* item)

IResultData::InsertItem メソッドを使用すると、スナップインは結果ペインビューに 1 つの新しい項目を追加できます。

itemRESULTDATAITEM*inout

追加する項目に関する情報を格納する RESULTDATAITEM 構造体へのポインター。

項目が挿入されると、MMC によって一意の識別子 (項目 ID) が割り当てられ、item パラメーターが指す構造体の itemID メンバーを通じて返されます。itemID の値は、挿入された項目の HRESULTITEM ハンドルであることに注意してください。スナップインは、後で IResultData::GetItem などのメソッドを呼び出して挿入した項目を操作できるように、この値を保存しておく必要があります。

この識別子を保存していない場合は、 IResultData::FindItemByLParam を使用して検索できます。

戻り値

このメソッドは、これらの値のいずれかを返すことがあります。

解説(Remarks)

RESULTDATAITEM 構造体の mask と、関連するすべての適切なフィールドを設定する必要があります。サブ項目は挿入できませんが、設定は可能です。したがって、item 構造体の nCol メンバーは 0 でなければなりません。

RESULTDATAITEM の str メンバーは MMC_CALLBACK に設定する必要があります。

項目が挿入されると、MMC によって一意の識別子 (項目 ID) が割り当てられ、item パラメーターが指す構造体の itemID メンバーを通じて返されます。itemID の値は、挿入された項目の HRESULTITEM ハンドルであることに注意してください。スナップインは、後で IResultData::GetItem などのメソッドを呼び出して挿入した項目を操作できるように、この値を保存しておく必要があります。

この識別子を保存していない場合は、 IResultData::FindItemByLParam を使用して特定できます。

このメソッドは仮想リストをサポートしていません。

vtbl 4 HRESULT DeleteItem(INT_PTR itemID, INT nCol)

スナップインが結果ビューペイン内の単一の項目を削除できるようにします。

itemIDINT_PTRin削除する項目の一意の ID を指定する値。仮想リストに適用する場合は、itemID の代わりに項目のインデックスを渡します。
nColINTin使用されません。0 でなければなりません。

戻り値

このメソッドは、これらの値のいずれかを返すことがあります。

解説(Remarks)

DeleteItem は、itemID と nCol で識別される項目を削除します。nCol が 0 でない場合、itemID と nCol で識別されるサブ項目のすべての情報がクリアされます。nCol が 0 の場合、itemID で識別される項目とそのすべてのサブ項目が削除され、リストから取り除かれます。サブ項目が削除された場合、itemID は有効な識別子のまま残ります。ただし、メイン項目が削除された場合は、itemID を破棄または解放する必要があります。同じ ID は、コンソールによって新しく挿入された項目に再割り当てされることがあります。

vtbl 5 HRESULT FindItemByLParam(LPARAM lParam, INT_PTR* pItemID)

IResultData::FindItemByLParam メソッドを使用すると、スナップインはユーザーが挿入した lParam の値に基づいて項目またはサブ項目を検索できます。

lParamLPARAMin情報を格納できる汎用の 32 ビット値。
pItemIDINT_PTR*outlParam 値の検索結果を格納する項目識別子へのポインター。

戻り値

このメソッドは、これらの値のいずれかを返すことがあります。

解説(Remarks)

FindItemByLParam は、lParam に基づいて項目を検索します。lParam が一致するリスト内の最初の項目の一意の識別子 (cookie) が pItemID に返されます。項目が見つからない場合、この検索は S_FALSE を返します。

このメソッドは仮想リストをサポートしていません。

vtbl 6 HRESULT DeleteAllRsltItems()

IResultData::DeleteAllRsltItems メソッドを使用すると、スナップインはユーザーが挿入したすべての項目とサブ項目を結果ビューペインから削除できます。

戻り値

このメソッドは、これらの値のいずれかを返すことがあります。

解説(Remarks)

このメソッドは、結果ビューペインと仮想リストの両方に対して同じ機能を提供します。

vtbl 7 HRESULT SetItem(RESULTDATAITEM* item)

IResultData::SetItem メソッドを使用すると、スナップインは結果ペイン内の単一の項目を設定できます。

itemRESULTDATAITEM*in変更する項目に関する情報を格納する RESULTDATAITEM 構造体へのポインター。

戻り値

このメソッドは、これらの値のいずれかを返すことがあります。

解説(Remarks)

item パラメーターが指す構造体の itemID メンバーは、リスト内で変更する項目またはサブ項目を参照するように設定する必要があります。RESULTDATAITEM 構造体の mask と、関連するすべての適切なフィールドに、変更したい内容を設定する必要があります。nCol メンバーは 0 に設定する必要があります。これは、何かを設定または取得できる唯一の列であるためです。RESULTDATAITEM の str メンバーは、常に MMC_CALLBACK に設定する必要があります。

このメソッドは仮想リストをサポートしていません。

vtbl 8 HRESULT GetItem(RESULTDATAITEM* item)

ユーザーが単一の項目のパラメーターを取得できるようにします。

itemRESULTDATAITEM*inoutパラメーターを取得する対象の項目に関する情報を格納する RESULTDATAITEM 構造体へのポインター。

戻り値

このメソッドは、これらの値のいずれかを返すことがあります。

解説(Remarks)

item パラメーターが指す RESULTDATAITEM 構造体の itemID メンバーは、情報を返す対象の項目またはサブ項目を参照するように設定する必要があります。nCol メンバーは 0 に設定する必要があります。これは、何かを取得または設定できる唯一の列であるためです。さらに、このメソッド呼び出しが成功した場合、item パラメーターが指す構造体の mask メンバーに設定された各フラグに対応するデータメンバーが返されます。

itemID が 0 の場合は、nIndex メンバーを使用できます。

仮想リストに適用する場合は、nIndex メンバーを使用し、itemID を 0 に設定する必要があります。仮想リストでは、項目の選択状態とフォーカス状態のみを取得できます。

vtbl 9 HRESULT GetNextItem(RESULTDATAITEM* item)

IResultData::GetNextItem メソッドは、指定した状態フラグが設定されている結果ビュー内の次の項目を取得します。

itemRESULTDATAITEM*inout

取得する項目に関する情報を格納する RESULTDATAITEM 構造体へのポインター。nIndex メンバーには、検索を開始するインデックスを設定するか、最初の項目から開始する場合は –1 を設定します。指定したインデックスは検索対象から除外されます。nState メンバーには、返される項目に設定されている必要がある状態フラグを指定します。

nIndex メンバーは、見つかった項目のインデックス (見つからない場合は –1) に更新されます。bScopeItem メンバーと lParam メンバーは、見つかった項目に応じて設定されます。

戻り値

このメソッドは、これらの値のいずれかを返すことがあります。

解説(Remarks)

仮想リストに適用する場合、指定できる状態フラグは LVIS_FOCUSEDLVIS_SELECTED のみです。lParam メンバーは常に 0 に設定されます。

vtbl 10 HRESULT ModifyItemState(INT nIndex, INT_PTR itemID, DWORD uAdd, DWORD uRemove)

スナップインが項目の状態を変更できるようにします。

nIndexINTin状態を変更する項目のインデックスを指定する値。このパラメーターは、itemID パラメーターが 0 の場合にのみ使用されます。仮想リストに適用する場合は、nIndex を使用し、itemID を 0 に設定する必要があります。
itemIDINT_PTRin状態を変更する項目の一意の識別子。仮想リストに適用する場合は、itemID = 0 に設定します。
uAddDWORDin

設定できる Windows のリストビュー状態フラグを指定する値。仮想リストに適用する場合、変更できるのはフォーカス状態と選択状態のみです。この値には、次のうち有効な任意の組み合わせを指定できます。

LVIS_CUT

項目が切り取りと貼り付け操作の対象としてマークされます。

LVIS_DROPHILITED

項目がドラッグアンドドロップのターゲットとして強調表示されます。

LVIS_FOCUSED

項目がフォーカスを持ち、標準のフォーカス矩形で囲まれます。複数の項目を選択できますが、フォーカスを持てる項目は 1 つだけです。

LVIS_SELECTED

項目が選択されます。選択された項目の外観は、その項目がフォーカスを持っているかどうか、および選択に使用されるシステムカラーによって異なります。

uRemoveDWORDin削除できるリストビュー項目の状態フラグを指定する値。この値には、uAdd パラメーターで示した前述の Win32 LVIS_* フラグの有効な任意の組み合わせを指定できます。

戻り値

このメソッドは、これらの値のいずれかを返すことがあります。

vtbl 11 HRESULT ModifyViewStyle(MMC_RESULT_VIEW_STYLE add, MMC_RESULT_VIEW_STYLE remove)

IResultData::ModifyViewStyle メソッドを使用すると、スナップインは結果ペインのビュースタイルを設定できます。

addMMC_RESULT_VIEW_STYLEin

結果ビューペインに設定するビュースタイルを指定する値。この値には、次の有効な組み合わせを指定できます。

MMC_SINGLESEL

一度に 1 つの項目のみを選択できるようにします。このビュースタイルを指定しない場合、複数の項目を選択できます。

MMC_SHOWSELALWAYS

コントロールがフォーカスを持っていない場合でも、選択がある場合は常にそれを表示します。

MMC_NOSORTHEADER

列ヘッダーがボタンのように動作しないことを指定する値。このスタイルは、レポートビューで列ヘッダーをクリックしても、並べ替えなどの操作が実行されない場合に役立ちます。

これらの値は MMC_RESULT_VIEW_STYLE 列挙型のもので、同じ名前の Win32 LVS_* フラグに対応します。

removeMMC_RESULT_VIEW_STYLEin結果ビューペインから削除するビュースタイルを指定する値。この値には、add パラメーターで示した前述のフラグの有効な組み合わせを指定できます。そこで説明したとおり、これらの値は MMC_RESULT_VIEW_STYLE 列挙型のもので、同じ名前の Win32 LVS_* フラグに対応します。

戻り値

このメソッドは、これらの値のいずれかを返すことがあります。

解説(Remarks)

このメソッドは、結果ビューペインと仮想リストの両方に対して同じ機能を提供します。

vtbl 12 HRESULT SetViewMode(INT lViewMode)

スナップインが、結果ビューペインで項目を表示するビューモードを設定できるようにします。

lViewModeINTin

結果ペインに設定するビューモードを指定する値。次の値のいずれかを指定できます。

MMCLV_VIEWSTYLE_ICON

項目は、大きい (32x32) アイコン表現の下にタイトル文字列として表示されます。サブ項目とヘッダーは表示されません。

MMCLV_VIEWSTYLE_REPORT

項目は、小さい (16x16) アイコン表現の右側にタイトル文字列として表示されます。項目は、結果ビューペインの左側にあるゼロ基点インデックスの 0 番目の位置のヘッダーの下に一覧表示されます。以降のヘッダーは左から右へ生成され、対応するサブ項目がそれぞれの下に配置されます。レポートモードに入るには、あらかじめ IConsole::SetHeader を呼び出しておく必要があります。

MMCLV_VIEWSTYLE_SMALLICON

項目は、小さい (16x16) アイコン表現の下にタイトル文字列として表示されます。サブ項目とヘッダーは表示されません。

MMCLV_VIEWSTYLE_LIST

項目は、小さい (16x16) アイコン表現の右側にタイトル文字列として表示されます。サブ項目とヘッダーは表示されません。

MMCLV_VIEWSTYLE_FILTERED

スナップインがプログラムによってビューモードをフィルタービューに設定できるようにします。フィルタービューの詳細については、 フィルタービューの追加 を参照してください。

このパラメーターを NULL にすることはできません。

戻り値

このメソッドは、これらの値のいずれかを返すことがあります。

解説(Remarks)

このメソッドは、仮想リストビューと非仮想リストビューの両方に対して同じ機能を提供します。IResultData::SetViewMode を使用できるシナリオの詳細については、 リストビューの使用: 実装の詳細 を参照してください。

vtbl 13 HRESULT GetViewMode(INT* lViewMode)

スナップインが結果ビューペインのビューモードを取得できるようにします。

lViewModeINT*out

取得するビューモードへのポインター。次のいずれかを指定できます。

MMCLV_VIEWSTYLE_ICON

項目は、大きい (32x32) アイコン表現の下にタイトル文字列として表示されます。サブ項目とヘッダーは表示されません。

MMCLV_VIEWSTYLE_REPORT

項目は、小さい (16x16) アイコン表現の右側にタイトル文字列として表示されます。項目は、結果ビューペインの左側にあるゼロ基点インデックスの 0 番目の位置のヘッダーの下に一覧表示されます。以降のヘッダーは左から右へ生成され、対応するサブ項目がそれぞれの下に配置されます。レポートモードに入るには、あらかじめ IConsole::SetHeader を呼び出しておく必要があります。

MMCLV_VIEWSTYLE_SMALLICON

項目は、小さい (16x16) アイコン表現の下にタイトル文字列として表示されます。サブ項目とヘッダーは表示されません。

MMCLV_VIEWSTYLE_LIST

項目は、小さい (16x16) アイコン表現の右側にタイトル文字列として表示されます。サブ項目とヘッダーは表示されません。

MMCLV_VIEWSTYLE_FILTERED

リストビューはフィルタービューとして表示されます。各リストビュー列には、対応する列フィルターがあります。フィルタービューの詳細については、 フィルタービューの追加 を参照してください。

このパラメーターを NULL にすることはできません。

戻り値

このメソッドは、これらの値のいずれかを返すことがあります。

解説(Remarks)

このメソッドは、仮想リストビューと非仮想リストビューの両方に対して同じ機能を提供します。

vtbl 14 HRESULT UpdateItem(INT_PTR itemID)

結果ペイン内の指定した項目を再描画させます。

itemIDINT_PTRin結果ペインで再描画する項目の一意の識別子を指定する値。仮想リストに適用する場合は、itemID の代わりに項目のインデックスを渡します。

戻り値

このメソッドは、これらの値のいずれかを返すことがあります。

解説(Remarks)

UpdateItem は通常、ユーザーが項目に変更を加えた後に、表示されている項目を更新するために使用されます。

vtbl 15 HRESULT Sort(INT nColumn, DWORD dwSortOptions, LPARAM lUserParam)

結果ペイン内のすべての項目を並べ替えます。

nColumnINTinクリックされた列ヘッダーのインデックス。
dwSortOptionsDWORDin

並べ替え操作中に使用する並べ替えオプション。この値には、次の組み合わせを指定できます。

RSI_DESCENDING = 0x0001

降順で並べ替えます。既定は昇順での並べ替えです。

RSI_NOSORTICON = 0x0002

MMC に並べ替えの矢印アイコンを削除するように指示します。このオプションは、スナップインがカスタムの並べ替え操作を実行する場合に役立ちます。

lUserParamLPARAMinユーザーが決定する情報を指定する値。このパラメーターには、並べ替え順序やコンテキスト情報など、さまざまな内容を格納できます。

戻り値

このメソッドは、これらの値のいずれかを返すことがあります。

解説(Remarks)

スナップインが IResultDataCompare または IResultDataCompareEx インターフェイスを実装している場合、MMC はそのインターフェイスの Compare メソッドを呼び出して、スナップインがリスト項目を比較できるようにします。それ以外の場合、MMC は既定の文字列比較関数を使用します。

仮想リストには並べ替え機能がありません。仮想リストの並べ替えを可能にするには、スナップインが IResultOwnerData インターフェイスを実装する必要があります。IResultData::Sort が呼び出されると、MMC はその呼び出しを IResultOwnerData::SortItems に転送します。

vtbl 16 HRESULT SetDescBarText(LPWSTR DescText)

結果ビューペインの説明バーのテキストを設定します。

DescTextLPWSTRin説明バーに表示するテキストを格納する、null で終わる文字列へのポインター。

戻り値

このメソッドは、これらの値のいずれかを返すことがあります。

解説(Remarks)

このメソッドは、結果ビューペインと仮想リストの両方に対して同じ機能を提供します。

vtbl 17 HRESULT SetItemCount(INT nItemCount, DWORD dwOptions)

仮想リスト内の項目数を設定します。

nItemCountINTinコントロールに含まれる項目の数。
dwOptionsDWORDin

次のフラグの組み合わせ。

MMCLV_UPDATE_NOINVALIDATEALL

結果ペインの末尾で追加または削除された項目のみを再描画します。このフラグは、リストの末尾で項目が削除または追加される場合にのみ設定します。

MMCLV_UPDATE_NOSCROLL

項目数が変更されてもスクロールバーを調整しません。

戻り値

このメソッドは、これらの値のいずれかを返すことがあります。

解説(Remarks)

SetItemCount メソッドの主な目的は、仮想リストにデータを設定 (populate) することです。仮想リストには実際に項目が追加されないため、これは仮想項目がいくつ存在するかをリストに通知する方法です。

注意 リストの途中で項目が追加または削除される場合、つまり既存の項目の再インデックスが必要な場合は、MMCLV_UPDATE_NOINVALIDATEALL フラグを設定しないでください。リストの途中で項目を追加または削除する際にこのフラグを設定すると、リストの更新が正しく行われなくなります。
MMCLV_UPDATE_NOINVALIDATEALL フラグは、仮想リストの末尾でのみ追加や削除を行い、再描画の量を減らしたい場合に使用します。このフラグを設定すると、MMC は結果ペインに追加された新しい項目に対してのみ IComponent::GetDisplayInfo を呼び出します。このフラグを設定すると、いずれの項目も番号の振り直しが行われないことが MMC に伝わります。MMC は、追加または削除された表示中の項目のみを再描画します。

SetItemCount は非仮想リストに対しても呼び出せますが、目的は異なります。非仮想リストに対して呼び出された場合、 SetItemCount は指定した数の項目分のメモリを事前に割り当てます。多数の項目を追加する場合、これによってリストが行う必要のあるメモリ割り当て呼び出しの回数が減り、パフォーマンスが向上します。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IResultData "{31DA5FA0-E0EB-11CF-9F21-00AA003CA9F6}"
#usecom global IResultData IID_IResultData "{}"
#comfunc global IResultData_InsertItem          3 var
#comfunc global IResultData_DeleteItem          4 sptr,int
#comfunc global IResultData_FindItemByLParam    5 sptr,var
#comfunc global IResultData_DeleteAllRsltItems  6
#comfunc global IResultData_SetItem             7 var
#comfunc global IResultData_GetItem             8 var
#comfunc global IResultData_GetNextItem         9 var
#comfunc global IResultData_ModifyItemState     10 int,sptr,int,int
#comfunc global IResultData_ModifyViewStyle     11 int,int
#comfunc global IResultData_SetViewMode         12 int
#comfunc global IResultData_GetViewMode         13 var
#comfunc global IResultData_UpdateItem          14 sptr
#comfunc global IResultData_Sort                15 int,int,sptr
#comfunc global IResultData_SetDescBarText      16 wstr
#comfunc global IResultData_SetItemCount        17 int,int
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。