Compartilhar via


Pop-up de contexto

Um Pop-up de Contexto é o controle principal no de Exibição ContextPopup da estrutura da Faixa de Opções do Windows. É um sistema de menu de contexto avançado que só é exposto pela estrutura como uma extensão para uma implementação da Faixa de Opções— a estrutura não expõe o Pop-up de Contexto como um controle independente.

  • componentes do de pop-up de contexto
  • implementar o de pop-up de contexto
  • Propriedades pop-up de contexto
  • tópicos relacionados

Componentes do pop-up de contexto

O Pop-up de Contexto é um contêiner lógico para o Menu de Contexto e Mini-Toolbar subconsultos expostos por meio dos elementos de marcaçãoContextMenu e MiniToolbar, respectivamente:

  • O ContextMenu expõe um menu de comandos e galerias.
  • O MiniToolbar expõe uma barra de ferramentas flutuante de vários comandos, galerias e controles complexos, como o de Controle de Fonte e a caixa de combinação .

Cada subcontrole pode aparecer no máximo uma vez em um Pop-up de Contexto.

A captura de tela a seguir ilustra o Pop-up de Contexto e seus subconsultos constituintes.

captura de tela com textos explicativos mostrando os componentes da interface do usuário contextual da faixa de opções.

O Pop-up de Contexto é puramente conceitual e não expõe nenhuma funcionalidade de interface do usuário em si, como posicionamento ou dimensionamento.

Nota

O Pop-up de Contexto normalmente é exibido clicando com o botão direito do mouse (ou por meio do atalho de teclado SHIFT+F10) em um objeto de interesse. No entanto, as etapas necessárias para exibir o Pop-up de Contexto são definidas pelo aplicativo.

 

Implementar o pop-up de contexto

De forma semelhante a outros controles da estrutura da Faixa de Opções do Windows, o Pop-up de Contexto é implementado por meio de um componente de marcação que especifica seus detalhes de apresentação e um componente de código que rege sua funcionalidade.

A tabela a seguir lista os controles compatíveis com cada subcontrole de Pop-up de Contexto.

Controle Mini-Toolbar Menu de contexto
botão x x
caixa de seleção x x
caixa de combinação x
botão Drop-Down x x
do Seletor de CoresDrop-Down x x
da GaleriaDrop-Down x x
de controle de fonte x
Botão de Ajuda
da GaleriaIn-Ribbon
do Spinner
botão Dividir x x
galeria de botões divididos x x
botão de alternância x x

 

Markup

Cada subcontrole pop-up de contexto deve ser declarado individualmente na marcação.

Mini-Toolbar

Ao adicionar controles a uma minibarra de ferramentas de pop-up de contexto, as duas recomendações a seguir devem ser consideradas:

  • Os controles devem ser altamente reconhecíveis e fornecer funcionalidades óbvias. Familiaridade é fundamental, pois rótulos e dicas de ferramenta não são expostos para controles de Mini-Toolbar.
  • Cada comando exposto por um controle deve ser apresentado em outro lugar na interface do usuário da faixa de opções. O Mini-Toolbar não dá suporte à navegação por teclado.

O exemplo a seguir demonstra a marcação básica de um elementominitoolbarque contém três controles de botão.

Nota

Um elemento MenuGroup é especificado para cada linha de controles na Minibarra de Ferramentas.

 

<MiniToolbar Name="MiniToolbar">
  <MenuGroup>
    <Button CommandName="cmdButton1" />
    <Button CommandName="cmdButton2" />
    <Button CommandName="cmdButton3" />
  </MenuGroup>
</MiniToolbar>

Menu de contexto

O exemplo a seguir demonstra a marcação básica de um elemento ContextMenu que contém três controles de botão.

Nota

Cada conjunto de controles no elemento MenuGroup é separado por uma barra horizontal no Menu de Contexto.

 

<ContextMenu Name="ContextMenu">
  <MenuGroup>
    <Button CommandName="cmdCut" />
    <Button CommandName="cmdCopy" />
    <Button CommandName="cmdPaste" />
  </MenuGroup>
</ContextMenu>

Embora um Pop-up de Contexto possa conter no máximo um de cada subcontrole, várias declarações de elementosContextMenueContextMenu são válidas. Isso permite que um aplicativo dê suporte a várias combinações de menu de contexto e controles Mini-Toolbar, com base em critérios definidos pelo aplicativo, como o contexto do workspace.

Para obter mais informações, consulte o elementoContextMap.

O exemplo a seguir demonstra a marcação básica para o elementoContextPopup.

<ContextPopup>
  <ContextPopup.MiniToolbars>
    <MiniToolbar Name="MiniToolbar">
      <MenuGroup>
        <Button CommandName="cmdButton1" />
        <Button CommandName="cmdButton2" />
        <Button CommandName="cmdButton3" />
      </MenuGroup>
    </MiniToolbar>
  </ContextPopup.MiniToolbars>
  <ContextPopup.ContextMenus>
    <ContextMenu Name="ContextMenu">
      <MenuGroup>
        <Button CommandName="cmdCut" />
        <Button CommandName="cmdCopy" />
        <Button CommandName="cmdPaste" />
      </MenuGroup>
    </ContextMenu>
  </ContextPopup.ContextMenus>
  <ContextPopup.ContextMaps>
    <ContextMap CommandName="cmdContextMap" ContextMenu="ContextMenu" MiniToolbar="MiniToolbar"/>
  </ContextPopup.ContextMaps>
</ContextPopup>

Código

Para invocar um pop-up de contexto, o método IUIContextualUI::ShowAtLocation é chamado quando a janela de nível superior do aplicativo Ribbon recebe uma notificação WM_CONTEXTMENU.

Este exemplo demonstra como lidar com a notificação de WM_CONTEXTMENU no método WndProc() do aplicativo Ribbon.

case WM_CONTEXTMENU:
  POINT pt;
  POINTSTOPOINT(pt, lParam);

  // ShowContextualUI method defined by the application.
  ShowContextualUI (pt, hWnd);
  break;

O exemplo a seguir demonstra como um aplicativo da Faixa de Opções pode mostrar o Pop-up de Contexto em um local de tela específico usando o método IUIContextualUI::ShowAtLocation.

GetCurrentContext() tem um valor de cmdContextMap conforme definido no exemplo de marcação anterior.

g_pApplication é uma referência à interface deIUIFramework.

HRESULT ShowContextualUI(POINT& ptLocation, HWND hWnd)
{
  GetDisplayLocation(ptLocation, hWnd);

  HRESULT hr = E_FAIL;

  IUIContextualUI* pContextualUI = NULL;
 
  if (SUCCEEDED(g_pFramework->GetView(
                                g_pApplication->GetCurrentContext(), 
                                IID_PPV_ARGS(&pContextualUI))))
  {
    hr = pContextualUI->ShowAtLocation(ptLocation.x, ptLocation.y);
    pContextualUI->Release();
  }

  return hr;
}

A referência a IUIContextualUI pode ser lançada antes que o Pop-up de Contexto seja descartado, conforme mostrado no exemplo anterior. No entanto, a referência deve ser liberada em algum momento para evitar vazamentos de memória.

Cuidado

O Mini-Toolbar tem um efeito de fade interno baseado na proximidade do ponteiro do mouse. Por esse motivo, é recomendável que o Mini-Toolbar seja exibido o mais próximo possível do ponteiro do mouse. Caso contrário, devido aos mecanismos de exibição conflitantes, o Mini-Toolbar pode não ser renderizado conforme o esperado.

 

Propriedades pop-up de contexto

Não há chaves de propriedade associadas ao controle pop-up de contexto.

biblioteca de controle da Estrutura da Faixa de Opções do Windows

de exemplo ContextPopup