DEFCONTEXTMENU 结构 (shlobj_core.h)

包含 SHCreateDefaultContextMenu 使用的上下文菜单信息。

语法

typedef struct {
  HWND                  hwnd;
  IContextMenuCB        *pcmcb;
  PCIDLIST_ABSOLUTE     pidlFolder;
  IShellFolder          *psf;
  UINT                  cidl;
  PCUITEMID_CHILD_ARRAY apidl;
  IUnknown              *punkAssociationInfo;
  UINT                  cKeys;
  const HKEY            *aKeys;
} DEFCONTEXTMENU;

成员

hwnd

类型:HWND

上下文菜单的句柄。 将此成员设置为从 CreateMenu 返回的句柄。

pcmcb

类型: IContextMenuCB*

指向回调对象支持的 IContextMenuCB 接口的指针。 此值是可选的,可以为 NULL

pidlFolder

类型: PCIDLIST_ABSOLUTE

包含所选文件对象的文件夹的 PIDL () ;如果未选择任何文件对象,则为上下文菜单的文件夹。 此值是可选的,可以为 NULL,在这种情况下,PIDL 是从 psf 成员计算的。

psf

类型: IShellFolder*

指向包含所选文件对象的文件夹对象的 IShellFolder 接口的指针,或指向包含上下文菜单的文件夹(如果未选择任何文件对象)。

cidl

类型: UINT

成员 apidl 中的项计数。

apidl

类型: PCUITEMID_CHILD_ARRAY

指向 ITEMIDLIST 结构的常量数组的指针。 数组中的每个条目都描述上下文菜单应用到的子项,例如,用户想要 打开的选定文件。

punkAssociationInfo

类型: IUnknown*

指向要从中加载扩展的对象上的 IQueryAssociations 接口的指针。 此参数是可选的,因此可以为 NULL。 如果此值为 NULL 且成员 aKeyscKeys 也为 NULL (请参阅备注) ,则 punkAssociationInfo 通过 IShellFolder::GetUIObjectOf 通过 IQueryAssociation 请求从 apidl 成员和 cidl 进行计算。

如果 IShellFolder::GetUIObjectOf 返回E_NOTIMPL,则根据IShellFolder::GetAttributesOf 返回SFGAO_FOLDER和SFGAO_FILESYSTEM属性提供默认实现。

cKeys

类型: UINT

成员 aKeys 中的项计数。 此值可以为零。 如果值为零,则基于支持成员 punkAssociationInfo 指定的接口 IQueryAssociation 的对象加载扩展。 如果值为非 NULL,则仅基于成员 aKeys 而不是成员 punkAssociationInfo 加载扩展。

注意 最大密钥数为 16。 调用方必须强制实施此限制,因为 API 不会。 否则可能会导致内存损坏。
 

aKeys

类型: const HKEY*

指向 HKEY 的指针,指定要从中加载扩展的注册表项。 此参数是可选的,可以为 NULL。 如果值为 NULL,则根据支持 punkAssociationInfo 中指定的接口 IQueryAssociation 的对象加载扩展。

注解

如果 aKeyscKeys 成员有效,并且成员 punkAssociationInfo 也有效 (非 NULL) ,则系统会使用 aKeyscKeys 的值构造菜单,并忽略成员 punkAssociationInfo (IQueryAssociations) 。

成员 apidlcidl 可用作方法 IShellFolder::GetUIObjectOf 的参数,以检索 IDataObject

要求

   
最低受支持的客户端 Windows Vista [仅限桌面应用]
最低受支持的服务器 Windows Server 2008 [仅限桌面应用]
标头 shlobj_core.h (包括 Shlobj.h)