Pop-up de Contexto
Um Pop-up de Contexto é o controle principal na 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 pop-up de contexto
- Implementar o 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 sub-controles expostos por meio dos elementos de marcação ContextMenu e MiniToolbar , respectivamente:
- O ContextMenu expõe um menu de Comandos e galerias.
- A MiniToolbar expõe uma barra de ferramentas flutuante de vários comandos, galerias e controles complexos, como o 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 sub-controles constituintes.
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.
Observação
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 de estrutura da Faixa de Opções do Windows, o Pop-up de Contexto é implementado por meio de um componente de marcação que especifica os detalhes da apresentação e um componente de código que rege sua funcionalidade.
A tabela a seguir lista os controles compatíveis com cada subcontrole pop-up de contexto.
Control | Mini-Toolbar | Menu de contexto |
---|---|---|
Botão | x | x |
Caixa de seleção | x | x |
Caixa de combinação | x | |
Botão suspenso | x | x |
Seletor de cores suspenso | x | x |
Galeria suspensa | x | x |
Controle de fonte | x | |
Botão Ajuda | ||
Galeria na Faixa de Opções | ||
Controle giratório | ||
Botão Dividir | x | x |
Galeria de Botões Divididos | x | x |
Botão de alternância | x | x |
Marcação
Cada subcontrole pop-up de contexto deve ser declarado individualmente na marcação.
Mini-Toolbar
Ao adicionar controles a uma minibarra de ferramentas pop-up de contexto, as duas recomendações a seguir devem ser consideradas:
- Os controles devem ser altamente reconhecíveis e fornecer funcionalidade óbvia. Familiaridade é fundamental, pois rótulos e dicas de ferramenta não são expostos para controles 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 elemento MiniToolbar que contém três controles Button .
Observação
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 Button .
Observação
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 elemento ContextMenu e MiniToolbar na marcação ribbon são válidas. Isso permite que um aplicativo dê suporte a várias combinações de menu de contexto e controles de Mini-Toolbar, com base em critérios definidos pelo aplicativo, como o contexto do workspace.
Para obter mais informações, consulte o elemento ContextMap .
O exemplo a seguir demonstra a marcação básica para o elemento ContextPopup .
<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 da Faixa de Opções recebe uma notificação de 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 igual cmdContextMap
ao definido no exemplo de marcação anterior.
g_pApplication é uma referência à interface IUIFramework .
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 liberada antes que o Pop-up de Contexto seja ignorado, 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.
Tópicos relacionados