Udostępnij za pośrednictwem


Kontekst — menu podręczne

Kontekst — menu podręczne jest główną kontrolką w ContextPopup View struktury wstążki systemu Windows. Jest to rozbudowany system menu kontekstowego, który jest udostępniany tylko przez platformę jako rozszerzenie implementacji wstążki — platforma nie uwidacznia wyskakującego okienka kontekstowego jako niezależnej kontrolki.

Składniki okna podręcznego kontekstu

Kontekst podręczne jest kontenerem logicznym dla menu kontekstowego i Mini-Toolbar kontrolki podrzędne, które są widoczne odpowiednio za pośrednictwem ContextMenu i MiniToolbar elementów znaczników:

Każda kontrolka podrzędna może być wyświetlana co najwyżej raz w oknie podręcznym Kontekst.

Poniższy zrzut ekranu przedstawia okno podręczne kontekstu i jego składowe kontrolki podrzędne.

zrzut ekranu z objaśnień przedstawiającymi kontekstowe składniki interfejsu użytkownika wstążki.

Kontekst — menu podręczne jest wyłącznie koncepcyjne i nie uwidacznia żadnych funkcji interfejsu użytkownika, takich jak pozycjonowanie lub ustalanie rozmiaru.

Nuta

Okno podręczne kontekstowe jest zwykle wyświetlane przez kliknięcie prawym przyciskiem myszy (lub za pomocą skrótu klawiaturowego SHIFT+F10) na obiekcie zainteresowania. Jednak kroki wymagane do wyświetlenia okna podręcznego kontekstu są definiowane przez aplikację.

 

Implementowanie okna podręcznego kontekstu

Podobnie jak w przypadku innych kontrolek struktury wstążki systemu Windows, okno podręczne kontekstu jest implementowane za pośrednictwem składnika znaczników, który określa szczegóły prezentacji i składnik kodu, który rządzi jego funkcjonalnością.

W poniższej tabeli wymieniono kontrolki, które są obsługiwane przez każdą kontrolkę podrzędną kontekstową.

Kontrola Mini-Toolbar Menu kontekstowe
przycisk x x
pole wyboru x x
pola kombi x
przyciskDrop-Down x x
selektor kolorów Drop-Down x x
z galeriiDrop-Down x x
kontrolki czcionek x
przycisk Pomocy
z galeriiIn-Ribbon
pokrętła
przycisk podziału x x
Galeria przycisków podziału x x
przełącznik x x

 

Adiustacja

Każda kontrolka kontekstowa podrzędna musi być zadeklarowana indywidualnie w adiustacji.

Mini-Toolbar

Podczas dodawania kontrolek do mini-paska narzędzi kontekstowych należy wziąć pod uwagę następujące dwa zalecenia:

  • Kontrolki powinny być bardzo rozpoznawalne i zapewniać oczywiste funkcje. Znajomość jest kluczowa, ponieważ etykiety i etykietki narzędzi nie są widoczne dla kontrolek Mini-Toolbar.
  • Każde polecenie uwidocznione przez kontrolkę powinno być prezentowane w innym miejscu w interfejsie użytkownika wstążki. Mini-Toolbar nie obsługuje nawigacji za pomocą klawiatury.

W poniższym przykładzie przedstawiono podstawowy znacznik dla elementuMiniToolbar, który zawiera trzy kontrolki Button.

Nuta

Jeden element MenuGroup jest określony dla każdego wiersza kontrolek na mini-pasku narzędzi.

 

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

Menu kontekstowe

W poniższym przykładzie przedstawiono podstawowy znacznik dla elementu ContextMenu, który zawiera trzy kontrolki Button.

Nuta

Każdy zestaw kontrolek w MenuGroup element jest oddzielony poziomym paskiem w menu kontekstowym.

 

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

Mimo że okno podręczne kontekstu może zawierać co najwyżej jedną z każdej kontrolki podrzędnej, wiele ContextMenu i MiniToolbar deklaracje elementów w znaczniku wstążki są prawidłowe. Dzięki temu aplikacja może obsługiwać różne kombinacje menu kontekstowego i kontrolek Mini-Toolbar na podstawie kryteriów zdefiniowanych przez aplikację, takich jak kontekst obszaru roboczego.

Aby uzyskać więcej informacji, zobacz element ContextMap.

W poniższym przykładzie przedstawiono podstawowy znacznik dla elementu 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>

Kod

Aby wywołać okno podręczne kontekstu, metoda IUIContextualUI::ShowAtLocation jest wywoływana, gdy okno najwyższego poziomu aplikacji wstążki otrzyma powiadomienie WM_CONTEXTMENU.

W tym przykładzie pokazano, jak obsługiwać powiadomienie WM_CONTEXTMENU w metodzie WndProc() aplikacji wstążki.

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

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

W poniższym przykładzie pokazano, jak aplikacja wstążki może wyświetlić okno podręczne kontekstu w określonej lokalizacji ekranu przy użyciu metody IUIContextualUI::ShowAtLocation.

Element GetCurrentContext() ma wartość cmdContextMap zdefiniowaną w poprzednim przykładzie znaczników.

g_pApplication jest odwołaniem do interfejsuIUIFramework.

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;
}

Odwołanie do IUIContextualUI można zwolnić przed odrzuceniem okna podręcznego kontekstu, jak pokazano w poprzednim przykładzie. Jednak odwołanie musi zostać wydane w pewnym momencie, aby uniknąć przecieków pamięci.

Ostrożność

Mini-Toolbar ma wbudowany efekt zanikania, który opiera się na sąsiedztwie wskaźnika myszy. Z tego powodu zaleca się, aby Mini-Toolbar być wyświetlane jak najbliżej wskaźnika myszy, jak to możliwe. W przeciwnym razie ze względu na sprzeczne mechanizmy wyświetlania Mini-Toolbar mogą nie być renderowane zgodnie z oczekiwaniami.

 

Właściwości menu podręcznego kontekstu

Nie ma żadnych kluczy właściwości skojarzonych z kontrolką Kontekst — menu podręczne.

biblioteka kontrolek struktury wstążki systemu Windows

przykładowe contextPopup