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
- de Marcação
- de código
- 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.
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.
Tópicos relacionados