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

IShellView

COM
IID000214e3-0000-0000-c000-000000000046継承元IOleWindow自前メソッド開始 vtbl5

公式ドキュメント

Windows エクスプローラーまたはフォルダー ウィンドウ内にビューを表示するメソッドを公開します。

解説(Remarks)

IShellView を公開するオブジェクトは、通常 IShellFolder::CreateViewObject メソッドの呼び出しによって作成されます。これにより、ビュー オブジェクトと Windows エクスプローラーの最も外側のフレーム ウィンドウとの間の通信チャネルが提供されます。この通信には、メッセージの変換、フレーム ウィンドウの状態(アクティブまたは非アクティブ)、ドキュメント ウィンドウの状態(アクティブまたは非アクティブ)、およびメニューとツールバー項目のマージが含まれます。

このインターフェイスは、Windows エクスプローラーの名前空間内に自身を表示する名前空間拡張機能によって実装されます。このオブジェクトは、ビューをホストする IShellFolder オブジェクトによって作成されます。

これらのメソッドは、Shell ビューの Windows エクスプローラー ウィンドウが、オブジェクトがアクティブな間にそれらを操作するために使用します。

IShellViewIOleWindow から派生しています。ここに記載されているメソッドは IShellView に固有のものです。

既定の Shell フォルダー ビュー オブジェクトとして知られる IShellView の特別なインスタンスは、SHCreateShellFolderView または SHCreateShellFolderViewEx を呼び出すことで作成できます。このインスタンスは、IID_CDefView IID を使用して IShellView オブジェクトに対して QueryInterface を呼び出すことで、標準の実装と区別できます。この呼び出しは、既定の Shell フォルダー ビュー オブジェクトに対して行われた場合にのみ成功します。

メソッド 11

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

vtbl 5 HRESULT TranslateAccelerator(MSG* pmsg)

名前空間拡張機能のビューがフォーカスを持っているときに、キーボード ショートカット(アクセラレータ)のキー ストロークを変換します。

pmsgMSG*in変換対象のメッセージのアドレス。

戻り値

型: HRESULT

成功した場合は S_OK を、それ以外の場合は COM で定義されたエラー値を返します。

ビューが S_OK を返す場合、それはメッセージが変換済みであり、Windows エクスプローラーによる変換やディスパッチを行うべきではないことを示します。

解説(Remarks)

このメソッドは、ビューが自身のキーボード ショートカットを変換できるように Windows エクスプローラーによって呼び出されます。

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

ビューがフォーカスを持っている場合、Windows エクスプローラーは他のどの変換よりも先にこのメソッドを呼び出します。ビューがフォーカスを持っていない場合は、Windows エクスプローラーが自身のキーボード ショートカットを変換した後に呼び出されます。

実装者への注意事項

既定では、Windows エクスプローラーが自身のキーボード ショートカット変換または通常のメニュー ディスパッチを実行できるように、ビューは S_FALSE を返すべきです。ビューは、メッセージをキーボード ショートカットとして処理済みであり、Windows エクスプローラーにそれ以上処理させたくない場合にのみ S_OK を返すべきです。
vtbl 6 HRESULT EnableModeless(BOOL fEnable)

モードレス ダイアログ ボックスを有効または無効にします。このメソッドは現在実装されていません。

fEnableBOOLinモードレス ダイアログ ボックス ウィンドウを有効にする場合は 0 以外、無効にする場合は 0。

戻り値

型: HRESULT

成功した場合は S_OK を、それ以外の場合は COM で定義されたエラー値を返します。

vtbl 7 HRESULT UIActivate(DWORD uState)

Shell ビュー自身が原因ではないイベントによってビュー ウィンドウのアクティブ化状態が変更されたときに呼び出されます。たとえば、ツリーがフォーカスを持っているときに TAB キーが押された場合、ビューにフォーカスを与える必要があります。

uStateDWORDin

ウィンドウのアクティブ化状態を指定するフラグ。このパラメーターには、次のいずれかの値を指定できます。

SVUIA_ACTIVATE_FOCUS

Windows エクスプローラーが入力フォーカスを持つビュー ウィンドウを作成したばかりです。これは、Shell ビューがフォーカス状態に適したメニュー項目を設定できるべきであることを意味します。

SVUIA_ACTIVATE_NOFOCUS

Shell ビューが入力フォーカスを失っているか、入力フォーカスなしで作成されたばかりです。Shell ビューは、非フォーカス状態に適したメニュー項目を設定できるべきです。これは、選択に固有の項目を追加すべきではないことを意味します。

SVUIA_DEACTIVATE

Windows エクスプローラーが Shell ビュー ウィンドウを破棄しようとしています。Shell ビューは、すべての拡張ユーザー インターフェイスを削除する必要があります。これらは通常、マージされたメニューやマージされたモードレス ポップアップ ウィンドウです。

SVUIA_INPLACEACTIVATE

Shell ビューはフォーカスなしでアクティブです。このフラグは、UIActivateIShellView2 インターフェイスを通じて公開される場合にのみ使用されます。

戻り値

型: HRESULT

成功した場合は S_OK を、それ以外の場合は COM で定義されたエラー値を返します。

解説(Remarks)

メニュー項目を再マージする前に、Shell ビューは通常 WM_SETFOCUS メッセージをフックし、OnViewWindowActive メソッドを呼び出します。Shell ビューは、メニュー項目を再マージするために NM_KILLFOCUS メッセージをフックすべきではありません。

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

アクティブ化状態の変更をビューに通知するには、このメソッドを呼び出します。

実装者への注意事項

このメソッドを使用して、アクティブ化状態を追跡し、必要に応じて動作を変更します。
vtbl 8 HRESULT Refresh()

ユーザー入力に応じてビューの内容を更新します。

戻り値

型: HRESULT

成功した場合は S_OK を、それ以外の場合は COM で定義されたエラー値を返します。

解説(Remarks)

ビューに対して、保持しているビュー情報を再検証しながら内容を更新するよう指示します。

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

Windows エクスプローラーは、既に開いているビューで F5 キーが押されたときにこのメソッドを呼び出します。

実装者への注意事項

内容を格納している基盤ストレージにアクセスして、ビューを再度満たします。
vtbl 9 HRESULT CreateViewWindow(IShellView* psvPrevious, FOLDERSETTINGS* pfs, IShellBrowser* psb, RECT* prcView, HWND* phWnd)

ビュー ウィンドウを作成します。これは、Windows エクスプローラーの右ペインか、フォルダー ウィンドウのクライアント ウィンドウのいずれかになります。

psvPreviousIShellView*in終了しようとしているビュー ウィンドウの IShellView インターフェイスのアドレス。ビューは、このパラメーターを使用して同じ実装の以前のビューと通信できます。このインターフェイスは、類似したビュー間の参照を最適化するために使用できます。このポインターは NULL の場合があります。
pfsFOLDERSETTINGS*inFOLDERSETTINGS 構造体のアドレス。ビューは、自身のビューを作成する際にこれを使用する必要があります。
psbIShellBrowser*inIShellBrowser インターフェイスの現在のインスタンスのアドレス。ビューは、Windows エクスプローラー ウィンドウとの通信を可能にするために、このインターフェイスの AddRef メソッドを呼び出し、インターフェイス ポインターを保持する必要があります。
prcViewRECT*in新しいビューの寸法(クライアント座標)。
phWndHWND*out作成されるウィンドウ ハンドルのアドレス。

戻り値

型: HRESULT

成功した場合は成功コードを、それ以外の場合は COM エラー コードを返します。操作が成功したか失敗したかを判断するには、SUCCEEDED および FAILED マクロを使用します。

解説(Remarks)

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

ビューを作成する必要があるときに、このメソッドを呼び出します。

実装者への注意事項

ビュー ウィンドウを作成し、GetViewStateStream メソッドを呼び出して、永続化された状態を復元します。IShellBrowser ポインターを保存して、後で使用できるようにします。
vtbl 10 HRESULT DestroyViewWindow()

ビュー ウィンドウを破棄します。

戻り値

型: HRESULT

成功した場合は S_OK を、それ以外の場合は COM で定義されたエラー値を返します。

解説(Remarks)

Windows エクスプローラーは、フォルダー ウィンドウまたは Windows エクスプローラーが閉じられようとしているときに、このメソッドを呼び出します。

実装者への注意事項

ウィンドウやその他の関連リソースを含め、ビューを表すすべての状態をクリーンアップします。
vtbl 11 HRESULT GetCurrentInfo(FOLDERSETTINGS* pfs)

現在のフォルダー設定を取得します。

pfsFOLDERSETTINGS*out設定を受け取る FOLDERSETTINGS 構造体のアドレス。

戻り値

型: HRESULT

成功した場合は S_OK を、それ以外の場合は COM で定義されたエラー値を返します。

解説(Remarks)

Windows エクスプローラーは、標準設定をビューに問い合わせるためにこのメソッドを使用します。

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

このメソッドは、ビューの現在のビュー設定を取得するために使用されます。

実装者への注意事項

該当する設定をできる限り多く返します。これは、ユーザーがビューからビューへ移動する際に同じ基本設定を維持することを目的としています。たとえば、ユーザーが詳細表示を設定した場合、Windows エクスプローラー モードであるフォルダーから別のフォルダーへ移動しても、その表示が維持されるべきです。
vtbl 12 HRESULT AddPropertySheetPages(DWORD dwReserved, LPFNSVADDPROPSHEETPAGE pfn, LPARAM lparam)

ビューが、表示メニューのオプション プロパティ シートにページを追加できるようにします。

dwReservedDWORDin予約済み。
pfnLPFNSVADDPROPSHEETPAGEinページを追加するために使用するコールバック関数のアドレス。
lparamLPARAMinコールバック関数の lparam パラメーターとして渡す必要がある値。

戻り値

型: HRESULT

成功した場合は S_OK を、それ以外の場合は COM で定義されたエラー値を返します。

解説(Remarks)

実装者への注意事項

Windows エクスプローラーは、表示メニューから オプション プロパティ シートを開くときにこのメソッドを呼び出します。ビューは、ページを作成し、そのページ ハンドルを指定してコールバック関数を呼び出すことでページを追加できます。
vtbl 13 HRESULT SaveViewState()

後続の参照セッション中に現在の状態を復元できるように、Shell のビュー設定を保存します。

戻り値

型: HRESULT

成功した場合は S_OK を、それ以外の場合は COM で定義されたエラー値を返します。

解説(Remarks)

Shell ビューは、GetViewStateStream メソッドを呼び出してビュー ストリームを取得し、現在のビュー状態をそのストリームに格納します。

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

Windows エクスプローラーは、ビューのビュー状態を保存したいときにこのメソッドを呼び出します。

実装者への注意事項

ストリームに格納するデータの形式は、実装の異なるバージョンでもエラーなく読み取れるように十分に堅牢なものにしてください。
vtbl 14 HRESULT SelectItem(ITEMIDLIST* pidlItem, DWORD uFlags)

Shell ビュー ウィンドウ内の 1 つ以上の項目の選択状態を変更します。

pidlItemITEMIDLIST*inITEMIDLIST 構造体のアドレス。
uFlagsDWORDin適用する選択の種類を指定する _SVSIF 定数のいずれか。

戻り値

型: HRESULT

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

解説(Remarks)

実装者への注意事項

このメソッドは、Shell ショートカット プロパティ シートの ファイル メニューにあるリンク先コマンドを実装するために使用されます。
vtbl 15 HRESULT GetItemObject(DWORD uItem, GUID* riid, void** ppv)

ビューに表示されているデータを参照するインターフェイスを取得します。

uItemDWORDinビューのある側面を参照する定数。このパラメーターには、_SVGIO 定数のいずれかを指定できます。
riidGUID*in要求している COM インターフェイスの識別子。
ppvvoid**outインターフェイス ポインターを受け取るアドレス。エラーが発生した場合、返されるポインターは NULL でなければなりません。

戻り値

型: HRESULT

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

解説(Remarks)

コモン ダイアログ ボックスが、ビューから選択された項目を取得するために使用します。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IShellView "{000214E3-0000-0000-C000-000000000046}"
#usecom global IShellView IID_IShellView "{}"
#comfunc global IShellView_TranslateAccelerator   5 var
#comfunc global IShellView_EnableModeless         6 int
#comfunc global IShellView_UIActivate             7 int
#comfunc global IShellView_Refresh                8
#comfunc global IShellView_CreateViewWindow       9 sptr,var,sptr,var,sptr
#comfunc global IShellView_DestroyViewWindow      10
#comfunc global IShellView_GetCurrentInfo         11 var
#comfunc global IShellView_AddPropertySheetPages  12 int,sptr,sptr
#comfunc global IShellView_SaveViewState          13
#comfunc global IShellView_SelectItem             14 var,int
#comfunc global IShellView_GetItemObject          15 int,var,sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。