Win32 API 日本語リファレンス
ホームUI.Shell › IShellFolderView

IShellFolderView

COM
IID37a378c0-f82d-11ce-ae65-08002b2e1262継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

シェルフォルダービューを操作するメソッドを公開します。

解説(Remarks)

IShellFolderView は、SHCreateShellFolderViewEx から返される IShellView オブジェクトによってサポートされます。このオブジェクトには ListView コントロールが含まれており、IShellFolderView のメソッドの一部はこの ListView コントロールを直接操作します。

メソッド 28

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

vtbl 3 HRESULT Rearrange(LPARAM lParamSort)

Rearrange は変更されるか利用できなくなる可能性があります。

lParamSortLPARAMin

再配置をどのように実行するかを指定します。

lParamSort の下位 16 ビットは並べ替え規則を定義します。ほとんどのアプリケーションは並べ替え規則を既定値のゼロに設定し、項目を名前で並べ替えることを示します。システムはこれ以外の並べ替え規則を定義していません。一部のフォルダーオブジェクトでは、呼び出し側アプリケーションが lParamSort の下位 16 ビットを使用してフォルダー固有の並べ替え規則を指定できる場合があります。規則とそれに関連付けられた lParamSort の値は、フォルダーによって定義されます。

システムフォルダービューオブジェクトが IShellFolderView::Rearrange を呼び出すとき、lParamSort の下位 16 ビットは配置に使用する列を指定するために使用されます。

lParamSort の上位 16 ビットは、並べ替え規則を変更するフラグに使用されます。システムは現在、次の修飾フラグを定義しています。

SHCIDS_ALLFIELDS

バージョン 5.0。表示名だけでなく、ITEMIDLIST 構造体に含まれるすべての情報を配置します。このフラグは、IShellFolder2 インターフェイスをサポートするフォルダーオブジェクトに対してのみ有効です。たとえば 2 つの項目がファイルの場合、フォルダーはそれらの名前、サイズ、ファイル時刻、属性、および構造体内のその他の情報を配置します。このフラグが設定されている場合、lParamSort の下位 16 ビットはゼロでなければなりません。

SHCIDS_CANONICALONLY

バージョン 5.0。名前で配置する場合、表示名ではなくシステム名を配置します。このフラグが渡されると、シェルフォルダーが一貫した並べ替え関数を実装している限り、フォルダーが最も効率的と判断した基準で 2 つの項目が配置されます。このフラグは他のフラグと組み合わせることはできません。

戻り値

型: HRESULT

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

呼び出し側アプリケーションへの注意

フォルダーオブジェクトが IShellFolder2 をサポートしていない場合は、lParamSortSHCIDS_ALLFIELDS フラグを設定しないでください。設定すると予測不能な結果になる可能性があります。SHCIDS_ALLFIELDS フラグを使用する場合は、lParamSort の下位 16 ビットをゼロに設定する必要があります。

実装者への注意

並べ替え規則を抽出するには、ビット単位の AND 演算子 (&) を使用して lParamSortSHCIDS_COLUMNMASK (0X0000FFFF) と組み合わせます。この演算により、SHCIDS_ALLFIELDS 値を含む lParamSort の上位 16 ビットがマスクされます。
vtbl 4 HRESULT GetArrangeParam(LPARAM* plParamSort)

ビューの配置パラメーター、すなわちビューがどのように並べ替えられているかを取得します。

plParamSortLPARAM*out

plParamSort の下位 16 ビットは並べ替え規則を定義します。ほとんどのアプリケーションは並べ替え規則を既定値のゼロに設定し、項目を名前で並べ替えることを示します。システムはこれ以外の並べ替え規則を定義していません。一部のフォルダーオブジェクトでは、呼び出し側アプリケーションが plParamSort の下位 16 ビットを使用してフォルダー固有の並べ替え規則を指定できる場合があります。規則とそれに関連付けられた plParamSort の値は、フォルダーによって定義されます。

システムフォルダービューオブジェクトが IShellFolderView::GetArrangeParam を呼び出すとき、plParamSort の下位 16 ビットは配置に使用する列を指定するために使用されます。

plParamSort の上位 16 ビットは、並べ替え規則を変更するフラグに使用されます。システムは現在、次の修飾フラグを定義しています。

SHCIDS_ALLFIELDS

バージョン 5.0。表示名だけでなく、ITEMIDLIST 構造体に含まれるすべての情報を配置します。このフラグは、IShellFolder2 インターフェイスをサポートするフォルダーオブジェクトに対してのみ有効です。たとえば 2 つの項目がファイルの場合、フォルダーはそれらの名前、サイズ、ファイル時刻、属性、および構造体内のその他の情報を配置します。このフラグが設定されている場合、plParamSort の下位 16 ビットはゼロでなければなりません。

SHCIDS_CANONICALONLY

バージョン 5.0。名前で配置する場合、表示名ではなくシステム名を配置します。このフラグが渡されると、シェルフォルダーが一貫した並べ替え関数を実装している限り、フォルダーが最も効率的と判断した基準で 2 つの項目が配置されます。このフラグは他のフラグと組み合わせることはできません。

戻り値

型: HRESULT

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 5 HRESULT ArrangeGrid()

移動されたアイコンを、目に見えないグリッドに整列するように配置します。

戻り値

型: HRESULT

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

このメソッドは、Windows XP のエクスプローラーで 表示 | アイコンの整列 | グリッド線に合わせる を選択するのと同じ効果があり、また Windows XP または Windows Vista でデスクトップを右クリックして アイコンの整列 | グリッド線に合わせる を選択するのと同じ効果があります。

vtbl 6 HRESULT AutoArrange()

AutoArrange は変更されるか利用できなくなる可能性があります。

戻り値

型: HRESULT

成功した場合は S_OK を返します。ビューが自動整列モードでない場合は S_FALSE を返し、それ以外の場合はエラー値を返します。

解説(Remarks)

このメソッドは、Windows XP のエクスプローラーで 表示 | アイコンの整列 | 自動整列 を選択するのと同じ効果があり、また Windows XP または Windows Vista でデスクトップを右クリックして アイコンの整列 | 自動整列 を選択するのと同じ効果があります。

vtbl 7 HRESULT GetAutoArrange()

GetAutoArrange は変更されるか利用できなくなる可能性があります。

戻り値

型: HRESULT

フォルダーが自動整列モードの場合は S_OK を返します。

vtbl 8 HRESULT AddObject(ITEMIDLIST* pidl, DWORD* puItem)

AddObject は変更されるか利用できなくなる可能性があります。

pidlITEMIDLIST*inビューに追加する項目を指定する ItemID へのポインター。
puItemDWORD*outこのメソッドが正常に返されたときに、追加された項目のインデックス位置を受け取る値へのポインター。

戻り値

型: HRESULT

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

このインデックスを指定してすぐに IShellFolderView::GetObject を呼び出すと、追加した ITEMID_CHILD のコピーが取得されます。ただし、項目のインデックス位置は時間の経過とともに変化する可能性があるため、特定のインデックスが常に同じ ITEMID_CHILD を返すことをコードで前提にすることはできません。

このメソッドを通じて追加された項目は、データソースによっていつでもビューから削除される可能性があります。

vtbl 9 HRESULT GetObject(ITEMIDLIST** ppidl, DWORD uItem)

ビューから項目を取得します。

ppidlITEMIDLIST**outこのメソッドが返されたときに、指定されたインデックスにある項目へのポインターのアドレスを格納します。
uItemDWORDin取得するビュー内の項目のインデックス。

戻り値

型: HRESULT

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 10 HRESULT RemoveObject(ITEMIDLIST* pidl, DWORD* puItem)

RemoveObject は変更されるか利用できなくなる可能性があります。

pidlITEMIDLIST*inoptionalビューから削除する項目へのポインター。この値は NULL にできます。Windows XP および Windows Vista でシステムフォルダービューオブジェクト (DefView) を使用する場合、NULL 値はビューからのすべてのオブジェクトの削除をもたらします。
puItemDWORD*outこのメソッドが返されたときに、削除された項目のインデックス位置へのポインターを格納します。

戻り値

型: HRESULT

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

このメソッドを通じて削除された項目は、データソースによっていつでもビューに再追加される可能性があります。

vtbl 11 HRESULT GetObjectCount(DWORD* puCount)

フォルダービュー内の項目の数を取得します。

puCountDWORD*outこのメソッドが返されたときに、フォルダービューに表示されている項目の数へのポインターを格納します。

戻り値

型: HRESULT

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 12 HRESULT SetObjectCount(DWORD uCount, DWORD dwFlags)

SetObjectCount は現在利用できません。

uCountDWORDinListView コントロールに設定する項目の数。
dwFlagsDWORDin

項目数が設定されたときの ListView コントロールの動作を制御するフラグ。以下を含みます。

SFVSOC_INVALIDATE_ALL (0x00000001)

影響を受ける項目が現在ビューに表示されていない限り、ListView コントロールは再描画されません。これが既定値です。

SFVSOC_NOSCROLL (LVSICF_NOSCROLL)

項目数が変更されても、ListView コントロールはスクロール位置を変更しません。

戻り値

型: HRESULT

成功した場合は S_OK を返し、それ以外の場合はエラー値を返します。Windows Vista 以降では、SetObjectCount の呼び出しは常に E_NOTIMPL を返します。

解説(Remarks)

このメソッドは、ビューに含まれる ListView コントロールに、WPARAM を uCount、LPARAM を dwFlags に等しく設定して LVM_SETITEMCOUNT を送信します。

vtbl 13 HRESULT UpdateObject(ITEMIDLIST* pidlOld, ITEMIDLIST* pidlNew, DWORD* puItem)

UpdateObject は変更されるか利用できなくなる可能性があります。

pidlOldITEMIDLIST*in元の項目。
pidlNewITEMIDLIST*in新しい項目。
puItemDWORD*outこのメソッドが返されたときに、置き換えられた項目のインデックスへのポインターを格納します。この値を使用して後で IShellFolderView::GetObject を呼び出し、追加した PITEMID_CHILD を取得できます。

戻り値

型: HRESULT

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

puItem によって返されたインデックスを指定してすぐに IShellFolderView::GetObject を呼び出すと、追加した ITEMID_CHILD のコピーが取得されます。ただし、項目のインデックス位置は時間の経過とともに変化する可能性があるため、特定のインデックスが常に同じ ITEMID_CHILD を返すことをコードで前提にすることはできません。

このメソッドを通じて行われた変更は、データソースによっていつでもビュー内で破棄される可能性があります。

vtbl 14 HRESULT RefreshObject(ITEMIDLIST* pidl, DWORD* puItem)

RefreshObject は変更されるか利用できなくなる可能性があります。

pidlITEMIDLIST*in再描画する項目。
puItemDWORD*outこのメソッドが正常に返されたときに、再描画された項目のインデックスを受け取る値へのポインター。この値を使用して IShellFolderView::GetObject を呼び出し、再描画した PITEMID_CHILD を取得できます。

戻り値

型: HRESULT

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

puItem によって返されたインデックスを指定してすぐに IShellFolderView::GetObject を呼び出すと、再描画した ITEMID_CHILD のコピーが取得されます。ただし、項目のインデックス位置は時間の経過とともに変化する可能性があるため、特定のインデックスが常に同じ ITEMID_CHILD を返すことをコードで前提にすることはできません。

vtbl 15 HRESULT SetRedraw(BOOL bRedraw)

ビューの再描画を許可するか、または再描画を禁止します。

bRedrawBOOLin変更後に内容を再描画できる場合は TRUE、変更後に内容を再描画できない場合は FALSE

戻り値

型: HRESULT

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

このメソッドは、ビューに含まれる ListView オブジェクトに WM_SETREDRAW メッセージを送信します。

vtbl 16 HRESULT GetSelectedCount(DWORD* puSelected)

ビュー内で選択されている項目の数を取得します。

puSelectedDWORD*outこのメソッドが正常に返されたときに、ビュー内で選択されている項目の数を受け取る値へのポインター。

戻り値

型: HRESULT

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 17 HRESULT GetSelectedObjects(ITEMIDLIST*** pppidl, DWORD* puItems)

ビュー内で選択されているオブジェクトの配列と、それらのオブジェクトの数を取得します。

pppidlITEMIDLIST***outこのメソッドが正常に返されたときに、ビュー内で現在選択されている項目の配列を指すポインターのアドレス。呼び出し側アプリケーションは、LocalFree を使用して pppidl の配列を解放することが期待されます。呼び出し側アプリケーションは、配列に含まれる個々の項目を解放してはなりません。
puItemsDWORD*outこのメソッドが正常に返されたときに、pppidl 配列内の項目の数を受け取る値へのポインター。

戻り値

型: HRESULT

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

このメソッドは、内部データ構造への定数ポインターを提供します。呼び出し側アプリケーションは、それらを直ちに処理し、キャッシュしないことが期待されます。

vtbl 18 HRESULT IsDropOnSource(IDropTarget* pDropTarget)

現在のドラッグアンドドロップ操作またはカットアンドペースト操作の宛先がソースと同じかどうかを確認します。

pDropTargetIDropTarget*inoptional宛先のドロップターゲットオブジェクトへのポインター。

戻り値

型: HRESULT

宛先がソースと同じ場合は S_OK を返します。

vtbl 19 HRESULT GetDragPoint(POINT* ppt)

現在のドラッグアンドドロップ操作が開始された地点を取得します。

pptPOINT*outこのメソッドが正常に返されたときに、現在のドラッグアンドドロップ操作が開始された座標を受け取る構造体へのポインター。

戻り値

型: HRESULT

成功した場合は S_OK を返します。ビューにドラッグ地点がない場合は S_FALSE を返し、それ以外の場合はエラー値を返します。

vtbl 20 HRESULT GetDropPoint(POINT* ppt)

現在のドラッグアンドドロップ操作が終了した地点を取得します。

pptPOINT*outこのメソッドが正常に返されたときに、現在のドラッグアンドドロップ操作が終了した座標を受け取る構造体へのポインター。

戻り値

型: HRESULT

成功した場合は S_OK を返します。ビューにドロップ地点がない場合は S_FALSE を返し、それ以外の場合はエラー値を返します。

vtbl 21 HRESULT MoveIcons(IDataObject* pDataObject)

このメソッドは実装されていません。(IShellFolderView.MoveIcons)

pDataObjectIDataObject*in

戻り値

型: HRESULT

このメソッドは実装されていません。

vtbl 22 HRESULT SetItemPos(ITEMIDLIST* pidl, POINT* ppt)

指定された項目の位置を設定します。

pidlITEMIDLIST*in位置を設定する対象の項目に対応する PIDL。
pptPOINT*inビューに含まれる ListView を基準とした項目の新しい座標を含む構造体へのポインター。

戻り値

型: HRESULT

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 23 HRESULT IsBkDropTarget(IDropTarget* pDropTarget)

IsBkDropTarget は変更されるか利用できなくなる可能性があります。

pDropTargetIDropTarget*inoptionalドラッグアンドドロップ操作のターゲットへのポインター。

戻り値

型: HRESULT

ドラッグアンドドロップ操作のターゲットがビューの背景である場合は S_OK を返し、それ以外の場合は S_FALSE を返します。

vtbl 24 HRESULT SetClipboard(BOOL bMove)

SetClipboard は変更されるか利用できなくなる可能性があります。

bMoveBOOLinTRUE でなければなりません。

戻り値

型: HRESULT

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 25 HRESULT SetPoints(IDataObject* pDataObject)

SetPoints は変更されるか利用できなくなる可能性があります。

pDataObjectIDataObject*inデータオブジェクトへのポインター。このデータオブジェクトには、現在の選択の位置座標が含まれています。これらの座標は、ビューに含まれる ListView コントロールを基準として与えられます。これらの座標は、ドラッグアンドドロップ操作の終了時にオブジェクトを配置するために使用できます。

戻り値

型: HRESULT

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

ドラッグアンドドロップ操作が IShellView によって開始された場合、この呼び出しは必要ありません。

vtbl 26 HRESULT GetItemSpacing(ITEMSPACING* pSpacing)

小および大のビューモードに限り、間隔を取得します。

pSpacingITEMSPACING*outこのメソッドが正常に返されたときに、ビューモードの間隔を記述する情報を受け取る構造体へのポインター。

戻り値

型: HRESULT

現在のビューモードが位置指定可能な場合は S_OK を返し、それ以外の場合は S_FALSE を返します。

解説(Remarks)

このメソッドは、ビューモードの間隔を取得するために LVM_GETITEMSPACING メッセージを送信します。

このメソッドは、大および小のビューモードの間隔のみを取得します。

Windows Vista 以降では、このメソッドは ITEMSPACING 構造体で返される両方の値のペアに、小のビューモードの間隔を格納します。

vtbl 27 HRESULT SetCallback(IShellFolderViewCB* pNewCB, IShellFolderViewCB** ppOldCB)

IShellFolderView::SetCallback は変更されるか利用できなくなる可能性があります。

pNewCBIShellFolderViewCB*inoptional新しい IShellFolderViewCB コールバックオブジェクトへのポインター。
ppOldCBIShellFolderViewCB**outこのメソッドが正常に返されたときに、元の IShellFolderViewCB オブジェクトを指すインターフェイスポインターのアドレス。

戻り値

型: HRESULT

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 28 HRESULT Select(DWORD dwFlags)

IShellFolderView::Select は変更されるか利用できなくなる可能性があります。

dwFlagsDWORDin

ビュー内のどの項目を選択するか (もしあれば) を決定します。次の値のいずれか。

SFVS_SELECT_NONE (0x0)

ビュー内のすべての項目の選択を解除します。

SFVS_SELECT_ALLITEMS (0x1)

ビュー内のすべての項目を選択します。

SFVS_SELECT_INVERT (0x2)

選択されていないすべての項目を選択し、選択されているすべての項目の選択を解除します。

戻り値

型: HRESULT

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 29 HRESULT QuerySupport(DWORD* pdwSupport)

QuerySupport は変更されるか利用できなくなる可能性があります。

pdwSupportDWORD*inout予約済み。NULL でなければなりません。

戻り値

型: HRESULT

このメソッドは実装されていません。

常に S_OK を返します。

vtbl 30 HRESULT SetAutomationObject(IDispatch* pdisp)

IShellView の内部オートメーションオブジェクトを置き換えます。

pdispIDispatch*inoptional新しいオートメーションオブジェクトへのポインター。

戻り値

型: HRESULT

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IShellFolderView "{37A378C0-F82D-11CE-AE65-08002B2E1262}"
#usecom global IShellFolderView IID_IShellFolderView "{62112AA1-EBE4-11CF-A5FB-0020AFE7292D}"
#comfunc global IShellFolderView_Rearrange            3 sptr
#comfunc global IShellFolderView_GetArrangeParam      4 var
#comfunc global IShellFolderView_ArrangeGrid          5
#comfunc global IShellFolderView_AutoArrange          6
#comfunc global IShellFolderView_GetAutoArrange       7
#comfunc global IShellFolderView_AddObject            8 var,var
#comfunc global IShellFolderView_GetObject            9 var,int
#comfunc global IShellFolderView_RemoveObject         10 var,var
#comfunc global IShellFolderView_GetObjectCount       11 var
#comfunc global IShellFolderView_SetObjectCount       12 int,int
#comfunc global IShellFolderView_UpdateObject         13 var,var,var
#comfunc global IShellFolderView_RefreshObject        14 var,var
#comfunc global IShellFolderView_SetRedraw            15 int
#comfunc global IShellFolderView_GetSelectedCount     16 var
#comfunc global IShellFolderView_GetSelectedObjects   17 var,var
#comfunc global IShellFolderView_IsDropOnSource       18 sptr
#comfunc global IShellFolderView_GetDragPoint         19 var
#comfunc global IShellFolderView_GetDropPoint         20 var
#comfunc global IShellFolderView_MoveIcons            21 sptr
#comfunc global IShellFolderView_SetItemPos           22 var,var
#comfunc global IShellFolderView_IsBkDropTarget       23 sptr
#comfunc global IShellFolderView_SetClipboard         24 int
#comfunc global IShellFolderView_SetPoints            25 sptr
#comfunc global IShellFolderView_GetItemSpacing       26 var
#comfunc global IShellFolderView_SetCallback          27 sptr,sptr
#comfunc global IShellFolderView_Select               28 int
#comfunc global IShellFolderView_QuerySupport         29 var
#comfunc global IShellFolderView_SetAutomationObject  30 sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。