Compartir a través de


estructura CONTEXTMENUITEM2 (mmc.h)

La estructura CONTEXTMENUITEM2 se introduce en MMC 2.0.

La estructura CONTEXTMENUITEM2 se pasa al método IContextMenuCallback2::AddItem o al método IContextMenuProvider::AddItem (heredado de IContextMenuCallback) para definir un nuevo elemento de menú, submenú o punto de inserción. El menú contextual se crea a partir de la raíz hacia abajo, con cada nuevo elemento que va al final del submenú o punto de inserción donde se inserta el nuevo elemento. La estructura CONTEXTMENUITEM2 sustituye a la estructura CONTEXTMENUITEM (excepto el miembro strLanguageIndependentName , todos los miembros de CONTEXTMENUITEM2 están en CONTEXTMENUITEM).

Sintaxis

typedef struct _CONTEXTMENUITEM2 {
  LPWSTR strName;
  LPWSTR strStatusBarText;
  LONG   lCommandID;
  LONG   lInsertionPointID;
  LONG   fFlags;
  LONG   fSpecialFlags;
  LPWSTR strLanguageIndependentName;
} CONTEXTMENUITEM2;

Miembros

strName

Puntero a una cadena terminada en null que contiene el nombre del elemento de menú o del submenú. Este miembro no puede ser NULL excepto un separador o punto de inserción.

strStatusBarText

Puntero a una cadena terminada en null que contiene el texto que se muestra en la barra de estado cuando este elemento está resaltado. Este miembro puede ser NULL.

lCommandID

Valor que especifica el identificador de comando para los elementos de menú. Si IExtendContextMenu::AddMenuItems agrega el elemento de menú y, a continuación, se selecciona lCommandID es el parámetro de identificador de comando que se pasa a IExtendContextMenu::Command. Si la interfaz IContextMenuProvider agrega este elemento de menú y, a continuación, se selecciona, este es el identificador de comando que se devuelve a pISelected por IContextMenuProvider::ShowContextMenu. Si se trata de un punto de inserción (CCM_SPECIAL_INSERTION_POINT se establece en fSpecialFlags) o un submenú (MF_POPUP se establece en fFlags), use lCommandID en llamadas posteriores como lInsertionPointID (para obtener más información, vea la lista siguiente). Lea detenidamente la siguiente explicación porque los bits específicos del nuevo identificador de punto de inserción deben estar activados y otros deben estar desactivados.

Los siguientes bits del identificador de comando requieren un control especial para los elementos que no son puntos de inserción ni submenús.

CCM_COMMANDID_MASK_RESERVED (0xFFFF0000)

Los elementos distintos de los puntos de inserción y submenús no se pueden agregar cuando se establecen estos bits.

Los siguientes bits del identificador de punto de inserción requieren un control especial para los elementos que son puntos de inserción (fSpecialFlags y CCM_SPECIAL_INSERTION_POINT) o submenús (fFlags y MF_POPUP).

CCM_INSERTIONPOINTID_MASK_SPECIAL (0xFFFF0000)

Comportamiento especial. Los complementos pueden usar los demás bits según sea necesario.

CCM_INSERTIONPOINTID_MASK_SHARED (0x80000000)

Estos puntos de inserción y submenús se comparten entre el creador del menú contextual, la extensión principal y la extensión de terceros. Los elementos agregados a un punto de inserción compartido o submenú están disponibles para el creador del menú contextual, la extensión principal y la extensión de terceros.

Si no se establece este bit, la interfaz IContextMenuProvider y cada extensión puede usar el mismo identificador. Cada identificador hace referencia a un punto de inserción o submenú diferente.

Solo el creador del menú contextual y el complemento principal pueden crear puntos de inserción compartidos o submenús.

CCM_INSERTIONPOINTID_MASK_CREATE_PRIMARY (0x40000000)

Este bit debe establecerse para los puntos de inserción compartidos y submenús creados por el complemento principal y no para los creados por el creador del menú contextual. Esto evita conflictos de identificadores entre los dos orígenes de puntos de inserción compartidos y submenús.

CCM_INSERTIONPOINTID_MASK_ADD_PRIMARY (0x20000000)

Permite que el complemento principal agregue elementos a un punto de inserción compartido o submenú.

CCM_INSERTIONPOINTID_MASK_ADD_3RDPARTY (0x10000000)

Permite que los complementos de extensión agreguen elementos a un submenú o punto de inserción compartido.

CCM_INSERTIONPOINTID_MASK_RESERVED (0x0FFF0000)

Los puntos de inserción o submenús no se pueden agregar con este conjunto de valores.

lInsertionPointID

Valor que especifica dónde se debe agregar el nuevo elemento en el menú contextual. Los complementos solo pueden agregar elementos a los puntos de inserción creados por el creador del menú o el complemento principal. A continuación se muestran los puntos de inserción creados por MMC en los menús contextuales predeterminados para los elementos del panel de ámbito y el panel de resultados de la vista de lista:

0 (cero)

Un lInsertionPointID de 0 hace referencia al menú raíz de este menú contextual. El valor 0 se puede usar indistintamente con CCM_INSERTIONPOINTID_ROOT_MENU. Tenga en cuenta que solo IContextMenuProvider puede agregar elementos directamente al menú raíz. Las extensiones solo pueden agregar elementos a puntos de inserción y submenús agregados al menú raíz por IContextMenuProvider o por MMC.

CCM_INSERTIONPOINTID_PRIMARY_TOP (0xA0000000)

El complemento principal puede usar este punto de inserción para agregar elementos a la parte superior del menú contextual principal.

CCM_INSERTIONPOINTID_PRIMARY_NEW (0xA0000001)

El complemento principal puede usar este punto de inserción para agregar elementos a la parte superior del submenú Nuevo . El submenú Nuevo está disponible en los menús contextuales del ámbito y los paneles de resultados.

CCM_INSERTIONPOINTID_PRIMARY_TASK (0xA0000002)

El complemento principal puede usar este punto de inserción para agregar elementos a la parte superior del submenú Todas las tareas. El submenú Todas las tareas está disponible en los menús contextuales del ámbito y los paneles de resultados.

CCM_INSERTIONPOINTID_PRIMARY_VIEW (0xA0000003)

El complemento principal puede usar este punto de inserción para agregar elementos al menú Ver . Si el usuario hace clic en el menú desplegable Ver de la barra de herramientas, este punto de inserción estará presente, pero los puntos de inserción Nuevo y Todas las tareas no aparecerán.

CCM_INSERTIONPOINTID_3RDPARTY_NEW (0x90000001)

Los complementos de extensión pueden usar este punto de inserción para agregar elementos a la parte inferior del submenú Nuevo . El submenú Nuevo solo está presente para los menús contextuales del panel de ámbito y no para los menús contextuales en el panel de resultados.

CCM_INSERTIONPOINTID_3RDPARTY_TASK (0x90000002)

Los complementos de extensión pueden usar este punto de inserción para agregar elementos a la parte inferior del submenú Todas las tareas .

CCM_INSERTIONPOINTID_ROOT_MENU (0x80000000)

IContextMenuProvider puede usar este punto de inserción para agregar elementos al menú raíz.

Ni las extensiones principales ni las extensiones de terceros pueden agregar elementos al menú raíz, excepto a través de puntos de inserción agregados por IContextMenuProvider.

fFlags

Valor que especifica una o varias de las marcas de estilo siguientes:

MF_POPUP

El elemento creado es un submenú dentro del menú contextual. Los elementos de menú, los puntos de inserción y otros submenús se pueden agregar al submenú creado; El nuevo elemento de menú, submenú o punto de inserción debe usar el miembro lCommandID del submenú creado como valor de miembro lInsertionPointID .

MF_BITMAP

No se admiten estas marcas; IContextMenuCallback2::AddItem devolverá E_INVALIDARG.

MF_OWNERDRAW

No se admiten estas marcas; IContextMenuCallback2::AddItem devolverá E_INVALIDARG.

MF_SEPARATOR

Dibuja una línea de separador horizontal.

Solo IContextMenuProvider puede agregar elementos de menú con MF_SEPARATOR establecido.

Las marcas siguientes funcionan de la misma manera que en la API de Windows.

MF_CHECKED

Selecciona el elemento de menú.

MF_DISABLED

Deshabilita el elemento de menú para que no se pueda seleccionar, pero la marca no atenua el elemento de menú.

MF_ENABLED

Habilita el elemento de menú para que se pueda seleccionar y restaurarlo a partir de su estado atenuado.

MF_GRAYED

Deshabilita el elemento de menú, atenuarlo para que no se pueda seleccionar.

MF_MENUBARBREAK

Funciona igual que la marca MF_MENUBREAK para una barra de menús. Para un menú desplegable, submenú o menú contextual, una línea vertical separa la nueva columna de la columna anterior.

MF_MENUBREAK

Places el elemento de una nueva línea (para una barra de menús) o en una nueva columna (para un menú desplegable, submenú o menú contextual) sin separar columnas.

MF_UNCHECKED

No selecciona el elemento (valor predeterminado).

Los siguientes grupos de marcas no se pueden usar juntos:

  • MF_DISABLED, MF_ENABLED y MF_GRAYED
  • MF_MENUBARBREAK y MF_MENUBREAK
  • MF_CHECKED y MF_UNCHECKED

fSpecialFlags

Valor que especifica una o varias de las marcas siguientes:

CCM_SPECIAL_SEPARATOR (0x0001)

Omita todos los demás parámetros excepto lInsertionPointID. Agregue un separador al final del menú o en el punto de inserción especificado. Los separadores colocados en la parte superior o inferior de un menú o submenú no se mostrarán. Los separadores sin elementos de menú entre ellos se contraerán en un único separador.

Solo IContextMenuProvider puede agregar separadores, especiales o de otro modo.

CCM_SPECIAL_SUBMENU (0x0002)

Si este submenú está vacío, aparece atenuado; esto solo es válido para MF_POPUP elementos.

CCM_SPECIAL_DEFAULT_ITEM (0x0004)

Este es el elemento de menú predeterminado. Si más de un elemento de menú especifica esta marca, el último elemento de cada submenú tiene prioridad.

CCM_SPECIAL_INSERTION_POINT (0x0008)

Omita todos los demás parámetros excepto lCommandID y lInsertionPointID. Esta marca crea un nuevo punto de inserción al final del punto de inserción o submenú identificado por lInsertionPointID. Se pueden agregar nuevos elementos de menú, submenús o puntos de inserción al punto de inserción creado; El nuevo elemento de menú, submenú o punto de inserción debe usar el miembro lCommandID del punto de inserción creado como valor de miembro lInsertionPointID .

CCM_SPECIAL_TESTONLY = 0x0010

Valide los parámetros de elemento, pero no agregue el elemento de menú. Devuelve un código de resultado que indica si una operación Add se habría realizado correctamente.

strLanguageIndependentName

Nombre independiente del idioma del elemento de menú. Recupere este valor en las aplicaciones del modelo de objetos de Automatización de MMC 2.0 obteniendo la propiedad MenuItem.LanguageIndependentName . El miembro strLanguageIndependentName no puede ser NULL ni una cadena vacía a menos que se agregue un separador o un punto de inserción; De lo contrario, se producirá un error en el método IContextMenuCallback::AddItem con E_INVALIDARG como valor devuelto.

Requisitos

Requisito Value
Cliente mínimo compatible Windows Vista
Servidor mínimo compatible Windows Server 2008
Encabezado mmc.h

Consulte también

IContextMenuCallback2

IContextMenuProvider

IExtendContextMenu

Trabajar con menús contextuales