IShellFolder::CreateViewObject 方法 (shobjidl_core.h)

请求一个对象,该对象可用于从文件夹对象获取信息或与文件夹对象交互。

语法

HRESULT CreateViewObject(
  [in]  HWND   hwndOwner,
  [in]  REFIID riid,
  [out] void   **ppv
);

参数

[in] hwndOwner

类型:HWND

所有者窗口的句柄。 如果已实现自定义文件夹视图对象,则应将文件夹视图窗口创建为 hwndOwner 的子级。

[in] riid

类型: REFIID

对要通过 ppv 检索的接口的 IID 的引用,通常IID_IShellView。

[out] ppv

类型: void**

当此方法成功返回时,包含 riid 中请求的接口指针。 这通常是 IShellView。 有关更多详细信息,请参阅“备注”部分。

返回值

类型: HRESULT

如果该方法成功,则返回 S_OK。 否则,将返回 HRESULT 错误代码。

注解

若要支持此请求,请创建一个对象,该对象公开 riid 指示的接口,并返回指向该接口的指针。

此方法的主要用途是向 Windows 资源管理器提供文件夹对象的文件夹视图对象。 Windows 资源管理器通过将 riid 设置为 IID_IShellView 来请求文件夹视图对象。 文件夹视图对象在 Windows 资源管理器文件夹视图中显示文件夹的内容。 文件夹视图对象必须独立于 Shell 文件夹对象,因为 Windows 资源管理器可能会多次调用此方法来创建多个文件夹视图对象。 每次调用此方法时,都必须创建一个新的视图对象。 文件夹对象可以通过两种方式之一响应此请求。 它可以:

  • 创建自定义文件夹视图对象并返回指向其 IShellView 接口的指针。
  • 创建系统文件夹视图对象并返回指向其 IShellView 接口的指针。
此方法还用于请求公开多个可选接口之一的对象,包括 IContextMenuIExtractIcon。 在此上下文中, CreateViewObject 的用法类似于 IShellFolder::GetUIObjectOf。 但是,调用 IShellFolder::GetUIObjectOf 来请求文件夹包含的某个项的对象。 调用 IShellFolder::CreateViewObject 以请求文件夹本身的对象。 最常请求的接口包括: 建议使用 objbase.h 中定义的 IID_PPV_ARGS 宏打包 riidppv 参数。 此宏根据 ppv 中的 值指向的接口提供正确的 IID,这消除了 riid 中可能导致意外结果的编码错误的可能性。

要求

   
最低受支持的客户端 Windows XP [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 shobjidl_core.h (包括 Shobjidl.h)
DLL Shell32.dll (4.0 或更高版本)

另请参阅

IShellFolder

IShellFolder2