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 且成员 aKeys 和 cKeys 也为 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 加载扩展。
aKeys
类型: const HKEY*
指向 HKEY 的指针,指定要从中加载扩展的注册表项。 此参数是可选的,可以为 NULL。 如果值为 NULL,则根据支持 punkAssociationInfo 中指定的接口 IQueryAssociation 的对象加载扩展。
注解
如果 aKeys 和 cKeys 成员有效,并且成员 punkAssociationInfo 也有效 (非 NULL) ,则系统会使用 aKeys 和 cKeys 的值构造菜单,并忽略成员 punkAssociationInfo (IQueryAssociations) 。
成员 apidl 和 cidl 可用作方法 IShellFolder::GetUIObjectOf 的参数,以检索 IDataObject。
要求
最低受支持的客户端 | Windows Vista [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2008 [仅限桌面应用] |
标头 | shlobj_core.h (包括 Shlobj.h) |