Kontext-Popup
Ein Kontext-Popup ist das Prinzipalsteuerelement in der ContextPopup-Ansicht des Windows Menübandframeworks. Es handelt sich um ein umfangreiches Kontextmenüsystem, das nur vom Framework als Erweiterung für eine Menübandimplementierung verfügbar gemacht wird. Das Framework macht das Kontext-Popup nicht als unabhängiges Steuerelement verfügbar.
- Komponenten des Kontext-Popups
- Implementieren des Kontext-Popups
- Kontext-Popupeigenschaften
- Zugehörige Themen
Komponenten des Kontext-Popups
Das Kontext-Popup ist ein logischer Container für das Kontextmenü und Mini-Toolbar Untersteuerelemente, die über die ContextMenu- bzw. MiniToolbar-Markupelemente verfügbar gemacht werden:
- ContextMenu macht ein Menü mit Befehlen und Katalogen verfügbar.
- Die MiniToolbar macht eine unverankerte Symbolleiste verschiedener Befehle, Kataloge und komplexer Steuerelemente verfügbar, z. B. das Schriftartsteuerelement und das Kombinationsfeld.
Jedes Untersteuerelement kann höchstens einmal in einem Kontext-Popup angezeigt werden.
Der folgende Screenshot veranschaulicht das Kontext-Popup und die zugehörigen Untersteuerelemente.

Das Kontext-Popup ist rein konzeptionell und macht keine Benutzeroberflächenfunktionalität selbst verfügbar, z. B. Positionierung oder Größenanpassung.
Hinweis
Das Kontext-Popup wird in der Regel angezeigt, indem Sie mit der rechten Maustaste (oder über die Tastenkombination UMSCHALT+F10) auf ein objekt von Interesse klicken. Die Schritte, die zum Anzeigen des Kontext-Popups erforderlich sind, werden jedoch von der Anwendung definiert.
Implementieren des Kontext-Popups
Ähnlich wie bei anderen Windows Menüband-Frameworksteuerelementen wird das Kontext-Popup über eine Markupkomponente implementiert, die die Präsentationsdetails und eine Codekomponente angibt, die ihre Funktionalität steuert.
In der folgenden Tabelle sind die Steuerelemente aufgeführt, die von den einzelnen Kontext-Popup-Untersteuerelementen unterstützt werden.
| Control | Mini-Toolbar | Kontextmenü |
|---|---|---|
| Schaltfläche | x | x |
| Kontrollkästchen | x | x |
| Kombinationsfeld | x | |
| Dropdownschaltfläche | x | x |
| Dropdown-Farbwähler | x | x |
| Dropdownkatalog | x | x |
| Schriftartsteuerelement | x | |
| Hilfeschaltfläche | ||
| Katalog im Menüband | ||
| Spinner | ||
| Schaltfläche "Teilen" | x | x |
| Katalog mit geteilten Schaltflächen | x | x |
| Umschaltfläche | x | x |
Markup
Jedes Kontext-Popup-Untersteuerelement muss einzeln im Markup deklariert werden.
Mini-Toolbar
Beim Hinzufügen von Steuerelementen zu einer Kontext-Popup-Minisymbolleiste sollten die folgenden beiden Empfehlungen berücksichtigt werden:
- Steuerelemente sollten stark erkennbar sein und offensichtliche Funktionen bereitstellen. Vertrautheit ist entscheidend, da Bezeichnungen und QuickInfos nicht für Mini-Toolbar-Steuerelemente verfügbar gemacht werden.
- Jeder Befehl, der von einem -Steuerelement verfügbar gemacht wird, sollte an anderer Stelle auf der Menübandbenutzeroberfläche angezeigt werden. Die Mini-Toolbar unterstützt keine Tastaturnavigation.
Im folgenden Beispiel wird das grundlegende Markup für ein MiniToolbar-Element veranschaulicht, das drei Button-Steuerelemente enthält.
Hinweis
Ein MenuGroup-Element wird für jede Zeile von Steuerelementen in der Minisymbolleiste angegeben.
<MiniToolbar Name="MiniToolbar">
<MenuGroup>
<Button CommandName="cmdButton1" />
<Button CommandName="cmdButton2" />
<Button CommandName="cmdButton3" />
</MenuGroup>
</MiniToolbar>
Kontextmenü
Im folgenden Beispiel wird das grundlegende Markup für ein ContextMenu-Element veranschaulicht, das drei Button-Steuerelemente enthält.
Hinweis
Jede Gruppe von Steuerelementen im MenuGroup-Element wird durch eine horizontale Leiste im Kontextmenü getrennt.
<ContextMenu Name="ContextMenu">
<MenuGroup>
<Button CommandName="cmdCut" />
<Button CommandName="cmdCopy" />
<Button CommandName="cmdPaste" />
</MenuGroup>
</ContextMenu>
Obwohl ein Kontext-Popup höchstens eines jedes Untersteuerelements enthalten kann, sind mehrere ContextMenu- und MiniToolbar-Elementdeklarationen im Menübandmarkup gültig. Dadurch kann eine Anwendung verschiedene Kombinationen von Kontextmenü- und Mini-Toolbar-Steuerelementen unterstützen, basierend auf den von der Anwendung definierten Kriterien, z. B. dem Arbeitsbereichskontext.
Weitere Informationen finden Sie im ContextMap-Element.
Im folgenden Beispiel wird das grundlegende Markup für das ContextPopup-Element veranschaulicht.
<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>
Code
Um ein Kontext-Popup aufzurufen, wird die IUIContextualUI::ShowAtLocation-Methode aufgerufen, wenn das Fenster der obersten Ebene der Menübandanwendung eine WM _ CONTEXTMENU-Benachrichtigung empfängt.
In diesem Beispiel wird veranschaulicht, wie die WM _ CONTEXTMENU-Benachrichtigung in der WndProc()-Methode der Menübandanwendung behandelt wird.
case WM_CONTEXTMENU:
POINT pt;
POINTSTOPOINT(pt, lParam);
// ShowContextualUI method defined by the application.
ShowContextualUI (pt, hWnd);
break;
Im folgenden Beispiel wird veranschaulicht, wie eine Menübandanwendung das Kontext-Popup mithilfe der IUIContextualUI::ShowAtLocation-Methode an einer bestimmten Bildschirmposition anzeigen kann.
GetCurrentContext() hat den Wert , cmdContextMap wie im vorherigen Markupbeispiel definiert.
g _ pApplication ist ein Verweis auf die IUIFramework-Schnittstelle.
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;
}
Der Verweis auf IUIContextualUI kann freigegeben werden, bevor das Kontext-Popup verworfen wird, wie im vorherigen Beispiel gezeigt. Der Verweis muss jedoch zu einem bestimmten Zeitpunkt freigegeben werden, um Speicherverluste zu vermeiden.
Achtung
Die Mini-Toolbar hat einen integrierten Ausblendeffekt, der auf der Nähe des Mauszeigers basiert. Aus diesem Grund wird empfohlen, die Mini-Toolbar so nah wie möglich am Mauszeiger angezeigt werden. Andernfalls wird der Mini-Toolbar aufgrund der in Konfliktstehenden Anzeigemechanismen möglicherweise nicht wie erwartet gerendert.
Kontext-Popupeigenschaften
Dem Kontext-Popup-Steuerelement sind keine Eigenschaftenschlüssel zugeordnet.