Partager via


Structure DEFCONTEXTMENU (shlobj_core.h)

Contient des informations de menu contextuel utilisées par SHCreateDefaultContextMenu.

Syntaxe

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;

Membres

hwnd

Type : HWND

Handle du menu contextuel. Définissez ce membre sur le handle retourné par CreateMenu.

pcmcb

Type : IContextMenuCB*

Pointeur vers l’interface IContextMenuCB prise en charge par l’objet de rappel. Cette valeur est facultative et peut être NULL.

pidlFolder

Type : PCIDLIST_ABSOLUTE

PIDL du dossier qui contient le ou les objets de fichier sélectionnés ou le dossier du menu contextuel si aucun objet fichier n’est sélectionné. Cette valeur est facultative et peut être NULL, auquel cas le PIDL est calculé à partir du membre psf .

psf

Type : IShellFolder*

Pointeur vers l’interface IShellFolder de l’objet folder qui contient les objets fichier sélectionnés, ou vers le dossier qui contient le menu contextuel si aucun objet fichier n’est sélectionné.

cidl

Type : UINT

Nombre d’éléments dans le membre apidl.

apidl

Type : PCUITEMID_CHILD_ARRAY

Pointeur vers un tableau constant de structures ITEMIDLIST . Chaque entrée du tableau décrit un élément enfant auquel le menu contextuel s’applique, pour instance, un fichier sélectionné que l’utilisateur souhaite ouvrir.

punkAssociationInfo

Type : IUnknown*

Pointeur vers l’interface IQueryAssociations sur l’objet à partir duquel charger des extensions. Ce paramètre est facultatif et peut donc être NULL. Si cette valeur est NULL et que les membres aKeys et cKeys sont également NULL (voir Remarques), punkAssociationInfo est calculé à partir du membre apidl et cidl via une requête pour IQueryAssociations via IShellFolder::GetUIObjectOf.

Si IShellFolder::GetUIObjectOf renvoie E_NOTIMPL, une implémentation par défaut est fournie en fonction des attributs SFGAO_FOLDER et SFGAO_FILESYSTEM retournés par IShellFolder::GetAttributesOf.

cKeys

Type : UINT

Nombre d’éléments dans le membre aKeys. Cette valeur peut être zéro. Si la valeur est zéro, les extensions sont chargées en fonction de l’objet qui prend en charge l’interface IQueryAssociations, comme spécifié par le membre punkAssociationInfo. Si la valeur n’est pas NULL, les extensions sont chargées uniquement en fonction du membre aKeys et non du membre punkAssociationInfo.

Note Le nombre maximal de clés est de 16. Les appelants doivent appliquer cette limite, ce qui n’est pas le cas de l’API. Si vous ne le faites pas, la mémoire peut être endommagée.
 

aKeys

Type : const HKEY*

Pointeur vers une clé HKEY qui spécifie la clé de Registre à partir de laquelle charger les extensions. Ce paramètre est facultatif et peut être NULL. Si la valeur est NULL, les extensions sont chargées en fonction de l’objet qui prend en charge l’interface IQueryAssociations , comme spécifié dans punkAssociationInfo.

Remarques

Si les membres aKeys et cKeys sont valides et que le membre punkAssociationInfo est également valide (et non NULL), le système construit le menu à l’aide des valeurs aKeys et cKeys, et ignore le membre punkAssociationInfo (IQueryAssociations).

Les membres apidl et cidl peuvent être utilisés comme paramètres pour utiliser la méthode IShellFolder::GetUIObjectOf pour récupérer IDataObject.

Configuration requise

   
Client minimal pris en charge Windows Vista [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2008 [applications de bureau uniquement]
En-tête shlobj_core.h (inclure Shlobj.h)