Compartilhar via


estrutura CONTEXTMENUITEM2 (mmc.h)

A estrutura CONTEXTMENUITEM2 é introduzida no MMC 2.0.

A estrutura CONTEXTMENUITEM2 é passada para o método IContextMenuCallback2::AddItem ou o método IContextMenuProvider::AddItem (herdado de IContextMenuCallback) para definir um novo item de menu, submenu ou ponto de inserção. O menu de contexto é criado a partir da raiz para baixo, com cada novo item indo para o final do submenu ou ponto de inserção em que o novo item é inserido. A estrutura CONTEXTMENUITEM2 substitui a estrutura CONTEXTMENUITEM (diferente do membro strLanguageIndependentName , todos os membros do CONTEXTMENUITEM2 estão em CONTEXTMENUITEM).

Sintaxe

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

Membros

strName

Um ponteiro para uma cadeia de caracteres terminada em nulo que contém o nome do item de menu ou do submenu. Esse membro não pode ser NULL , exceto por um separador ou ponto de inserção.

strStatusBarText

Um ponteiro para uma cadeia de caracteres terminada em nulo que contém o texto exibido na barra de status quando este item é realçado. Esse membro pode ser NULL.

lCommandID

Um valor que especifica o identificador de comando para itens de menu. Se o item de menu for adicionado por IExtendContextMenu::AddMenuItems e, em seguida, selecionado, lCommandID será o parâmetro de ID de comando que é passado de volta para IExtendContextMenu::Command. Se esse item de menu for adicionado pela interface IContextMenuProvider e selecionado, essa será a ID de comando que é passada de volta para pISelected por IContextMenuProvider::ShowContextMenu. Se esse for um ponto de inserção (CCM_SPECIAL_INSERTION_POINT estiver definido em fSpecialFlags) ou um submenu (MF_POPUP estiver definido em fFlags), use lCommandID em chamadas subsequentes como lInsertionPointID (para obter mais informações, consulte a lista a seguir). Leia atentamente a discussão a seguir porque os bits específicos na nova ID do ponto de inserção devem estar ativados e outros devem estar desativados.

Os bits a seguir na ID de comando exigem tratamento especial para itens que não são pontos de inserção ou submenus.

CCM_COMMANDID_MASK_RESERVED (0xFFFF0000)

Itens diferentes de pontos de inserção e submenus não podem ser adicionados quando esses bits são definidos.

Os bits a seguir na ID do ponto de inserção exigem tratamento especial para itens que são pontos de inserção (fSpecialFlags e CCM_SPECIAL_INSERTION_POINT) ou submenus (fFlags e MF_POPUP).

CCM_INSERTIONPOINTID_MASK_SPECIAL (0xFFFF0000)

Comportamento especial. Os snap-ins podem usar os outros bits conforme necessário.

CCM_INSERTIONPOINTID_MASK_SHARED (0x80000000)

Esses pontos de inserção e submenus são compartilhados entre o criador do menu de contexto, a extensão primária e a extensão de terceiros. Os itens adicionados a um ponto ou submenu de inserção compartilhado estão disponíveis para o criador do menu de contexto, a extensão primária e a extensão de terceiros.

Se esse bit não estiver definido, a interface IContextMenuProvider e cada extensão poderão usar a mesma ID. Cada ID refere-se a um ponto de inserção ou submenu diferente.

Somente o criador do menu de contexto e o snap-in primário podem criar pontos de inserção ou submenus compartilhados.

CCM_INSERTIONPOINTID_MASK_CREATE_PRIMARY (0x40000000)

Esse bit deve ser definido para pontos de inserção compartilhados e submenus criados pelo snap-in primário e não definidos para aqueles criados pelo criador do menu de contexto. Isso impede conflitos de ID entre as duas fontes de pontos de inserção compartilhados e submenus.

CCM_INSERTIONPOINTID_MASK_ADD_PRIMARY (0x20000000)

Permite que o snap-in primário adicione itens a um submenu ou ponto de inserção compartilhado.

CCM_INSERTIONPOINTID_MASK_ADD_3RDPARTY (0x10000000)

Permite que snap-ins de extensão adicionem itens a um submenu ou ponto de inserção compartilhado.

CCM_INSERTIONPOINTID_MASK_RESERVED (0x0FFF0000)

Pontos de inserção ou submenus não podem ser adicionados com esse conjunto de valores.

lInsertionPointID

Um valor que especifica onde no menu de contexto o novo item deve ser adicionado. Os snap-ins só podem adicionar itens aos pontos de inserção criados pelo criador do menu ou pelo snap-in primário. Veja a seguir os pontos de inserção criados pelo MMC nos menus de contexto padrão para itens no painel de escopo e no painel de resultados da exibição de lista:

0 (zero)

Um lInsertionPointID de 0 refere-se ao menu raiz deste menu de contexto. O valor 0 pode ser usado de forma intercambiável com CCM_INSERTIONPOINTID_ROOT_MENU. Lembre-se de que apenas IContextMenuProvider tem permissão para adicionar itens diretamente ao menu raiz. As extensões só podem adicionar itens a pontos de inserção e submenus adicionados ao menu raiz por IContextMenuProvider ou por MMC.

CCM_INSERTIONPOINTID_PRIMARY_TOP (0xA0000000)

O snap-in primário pode usar esse ponto de inserção para adicionar itens à parte superior do menu de contexto main.

CCM_INSERTIONPOINTID_PRIMARY_NEW (0xA0000001)

O snap-in primário pode usar esse ponto de inserção para adicionar itens à parte superior do submenu Novo . O submenu Novo está disponível nos menus de contexto dos painéis de escopo e resultado.

CCM_INSERTIONPOINTID_PRIMARY_TASK (0xA0000002)

O snap-in primário pode usar esse ponto de inserção para adicionar itens à parte superior do submenu Todas as Tarefas. O submenu Todas as Tarefas está disponível nos menus de contexto dos painéis de escopo e resultado.

CCM_INSERTIONPOINTID_PRIMARY_VIEW (0xA0000003)

O snap-in primário pode usar esse ponto de inserção para adicionar itens ao menu Exibir . Se o usuário clicar no menu suspenso Exibir na barra de ferramentas, esse ponto de inserção estará presente, mas os pontos de inserção Novas e Todas as Tarefas não serão exibidos.

CCM_INSERTIONPOINTID_3RDPARTY_NEW (0x90000001)

Os snap-ins de extensão podem usar esse ponto de inserção para adicionar itens à parte inferior do submenu Novo . O submenu Novo só está presente para menus de contexto no painel de escopo e não para menus de contexto no painel de resultados.

CCM_INSERTIONPOINTID_3RDPARTY_TASK (0x90000002)

Os snap-ins de extensão podem usar esse ponto de inserção para adicionar itens à parte inferior do submenu Todas as Tarefas .

CCM_INSERTIONPOINTID_ROOT_MENU (0x80000000)

IContextMenuProvider pode usar esse ponto de inserção para adicionar itens ao menu raiz.

Nem extensões primárias nem extensões de terceiros podem adicionar itens ao menu raiz, exceto por meio de pontos de inserção adicionados por IContextMenuProvider.

fFlags

Um valor que especifica um ou mais dos seguintes sinalizadores de estilo:

MF_POPUP

O item criado é um submenu no menu de contexto. Itens de menu, pontos de inserção e outros submenus podem ser adicionados ao submenu criado; o novo item de menu, submenu ou ponto de inserção deve usar o membro lCommandID do submenu criado como o valor de membro lInsertionPointID .

MF_BITMAP

Não há suporte para esses sinalizadores; IContextMenuCallback2::AddItem retornará E_INVALIDARG.

MF_OWNERDRAW

Não há suporte para esses sinalizadores; IContextMenuCallback2::AddItem retornará E_INVALIDARG.

MF_SEPARATOR

Desenha uma linha de separador horizontal.

Somente IContextMenuProvider pode adicionar itens de menu com MF_SEPARATOR definido.

Os sinalizadores a seguir funcionam da mesma maneira que na API do Windows.

MF_CHECKED

Seleciona o item de menu.

MF_DISABLED

Desabilita o item de menu para que ele não possa ser selecionado, mas o sinalizador não esmaeça o item de menu.

MF_ENABLED

Habilita o item de menu para que ele possa ser selecionado, restaurando-o de seu estado esmaecido.

MF_GRAYED

Desabilita o item de menu, escurecendo-o para que ele não possa ser selecionado.

MF_MENUBARBREAK

Funciona da mesma forma que o sinalizador MF_MENUBREAK para uma barra de menus. Para um menu suspenso, submenu ou menu de atalho, uma linha vertical separa a nova coluna da coluna antiga.

MF_MENUBREAK

Places o item em uma nova linha (para uma barra de menus) ou em uma nova coluna (para um menu suspenso, submenu ou menu de atalho) sem separar colunas.

MF_UNCHECKED

Não seleciona o item (padrão).

Os seguintes grupos de sinalizadores não podem ser usados juntos:

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

fSpecialFlags

Um valor que especifica um ou mais dos seguintes sinalizadores:

CCM_SPECIAL_SEPARATOR (0x0001)

Ignore todos os outros parâmetros, exceto lInsertionPointID. Adicione um separador ao final do menu ou no ponto de inserção especificado. Separadores colocados na parte superior ou inferior de um menu ou submenu não serão exibidos. Separadores sem itens de menu entre eles serão recolhidos em um único separador.

Somente IContextMenuProvider pode adicionar separadores, especiais ou não.

CCM_SPECIAL_SUBMENU (0x0002)

Se esse submenu estiver vazio, ele aparecerá esmaecido; isso só é válido para itens de MF_POPUP .

CCM_SPECIAL_DEFAULT_ITEM (0x0004)

Esse é o item de menu padrão. Se mais de um item de menu especificar esse sinalizador, o último item em cada submenu terá precedência.

CCM_SPECIAL_INSERTION_POINT (0x0008)

Ignore todos os outros parâmetros, exceto lCommandID e lInsertionPointID. Esse sinalizador cria um novo ponto de inserção no final do ponto de inserção ou submenu identificado por lInsertionPointID. Novos itens de menu, submenus ou pontos de inserção podem ser adicionados ao ponto de inserção criado; o novo item de menu, submenu ou ponto de inserção deve usar o membro lCommandID do ponto de inserção criado como o valor do membro lInsertionPointID .

CCM_SPECIAL_TESTONLY = 0x0010

Valide os parâmetros de item, mas não adicione o item de menu. Retorna um código de resultado que indica se uma operação Add teria sido bem-sucedida.

strLanguageIndependentName

O nome independente de idioma do item de menu. Recupere esse valor em aplicativos do Modelo de Objeto de Automação MMC 2.0 obtendo a propriedade MenuItem.LanguageIndependentName . O membro strLanguageIndependentName não pode ser NULL ou uma cadeia de caracteres vazia, a menos que um separador ou ponto de inserção seja adicionado; caso contrário, o método IContextMenuCallback::AddItem falhará com E_INVALIDARG como o valor retornado.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows Vista
Servidor mínimo com suporte Windows Server 2008
Cabeçalho mmc.h

Confira também

IContextMenuCallback2

IContextMenuProvider

Iextendcontextmenu

Trabalhando com menus de contexto