Поделиться через


Структура 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 объекта folder, содержащего выбранные объекты файлов, или на папку, содержащую контекстное меню, если не выбраны никакие объекты файлов.

cidl

Тип: UINT

Количество элементов в apidl элемента.

apidl

Тип: PCUITEMID_CHILD_ARRAY

Указатель на постоянный массив структур ITEMIDLIST . Каждая запись в массиве описывает дочерний элемент, к которому применяется контекстное меню, например выбранный файл, который пользователь хочет открыть.

punkAssociationInfo

Тип: IUnknown*

Указатель на интерфейс IQueryAssociations для объекта, из которого загружают расширения. Этот параметр является необязательным и поэтому может иметь значение NULL. Если это значение равно NULL , а члены aKeys и cKeys также имеют значение NULL (см. раздел Примечания), punkAssociationInfo вычисляется из элемента apidl и cidl через запрос IQueryAssociations через IShellFolder::GetUIObjectOf.

Если IShellFolder::GetUIObjectOf возвращает E_NOTIMPL, предоставляется реализация по умолчанию на основе атрибутов SFGAO_FOLDER и SFGAO_FILESYSTEM , возвращаемых из IShellFolder::GetAttributesOf.

cKeys

Тип: UINT

Количество элементов в элементе aKeys. Это значение может быть равно 0. Если значение равно нулю, расширения загружаются на основе объекта, поддерживающего интерфейс IQueryAssociations , как указано в параметре member punkAssociationInfo. Если значение не равно NULL, расширения загружаются только на основе элементов aKeys , а не punkAssociationInfo.

Примечание Максимальное число ключей — 16. Вызывающие абоненты должны применять это ограничение, так как API этого не делает. В противном случае это может привести к повреждению памяти.
 

aKeys

Тип: const HKEY*

Указатель на ключ HKEY, указывающий раздел реестра, из которого нужно загрузить расширения. Этот параметр является необязательным и может иметь значение NULL. Если значение равно NULL, расширения загружаются на основе объекта, поддерживающего интерфейс IQueryAssociations , как указано в punkAssociationInfo.

Комментарии

Если члены aKeys и cKeys допустимы, а punkAssociationInfo также является допустимым (не null), система создает меню, используя значения aKeys и cKeys, и игнорирует punkAssociationInfo (IQueryAssociations).

Члены apidl и cidl можно использовать в качестве параметров метода IShellFolder::GetUIObjectOf для получения IDataObject.

Требования

   
Минимальная версия клиента Windows Vista [только классические приложения]
Минимальная версия сервера Windows Server 2008 [только классические приложения]
Верхняя часть shlobj_core.h (включая Shlobj.h)