Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Das Windows-Menübandframework (Menüband) bietet die Möglichkeit, den Status einer Vielzahl von Benutzereinstellungen und Einstellungen für anwendungsübergreifende Sitzungen beizubehalten.
- Einführung
- Eine vorhersagbare Erfahrung
- Menübandeinstellungen speichern
- Ribbon-Einstellungen laden
- Verwandte Themen
Einleitung
Verschiedene Aspekte eines Menübands, einschließlich Konfigurations- und Interaktionseinstellungen, können von einem Benutzer zur Laufzeit angepasst werden, um die Benutzerfreundlichkeit und Produktivität zu verbessern. Das Menüband-Framework bietet die Funktionalität, um diese Einstellungen über Sitzungen der Anwendung hinweg beizubehalten, indem zwei Methoden verwendet werden, die in der Implementierung der IUIRibbon-Schnittstelle definiert sind: IUIRibbon::LoadSettingsFromStream und IUIRibbon::SaveSettingsToStream.
Eine vorhersagbare Erfahrung
Die Richtlinien für die Menüband-Benutzeroberfläche empfehlen, dass Menübandanwendungen den Status des Menübands (abgesehen von der letzten ausgewählten Registerkarte) beibehalten sollten, um die vorhersehbarste Benutzererfahrung zu ermöglichen, wenn die Anwendung geschlossen wird. Auf diese Weise können beim Starten der gleichen Anwendung die Einstellungen und Anpassungen aus der vorherigen Sitzung wiederhergestellt werden, und der Benutzer kann erwarten, dass er weiterhin auf die gleiche Weise mit der Anwendung interagiert wie sie es verlassen.
Einstellungen der Multifunktionsleiste, die zur Laufzeit geändert und über Anwendungssitzungen hinweg beibehalten werden können, werden im Befehls-Kontextmenü aufgeführt. Dazu gehören:
Befehle, die vom Benutzer zur Schnellzugriff-Symbolleiste hinzugefügt wurden. Wird durch ein IUICollection-Objekt über den UI_PKEY_ItemsSource Eigenschaftenschlüssel angegeben.
Der folgende Screenshot zeigt den Kontextmenübefehl "Zur Symbolleiste für den Schnellzugriff hinzufügen ".
Der bevorzugte Andockzustand der Schnellzugriffs-Symbolleiste. Wird durch den UI_CONTROLDOCK Wert des UI_PKEY_QuickAccessToolbarDock Eigenschaftenschlüssels angegeben.
Dieser Screenshot zeigt die Symbolleiste für den Schnellzugriff an der Standardposition in der Titelleiste der Anwendung und den Befehl 'Symbolleiste für den Schnellzugriff unter dem Menüband anzeigen' im Kontextmenü.
Dieser Screenshot zeigt die Symbolleiste für den Schnellzugriff unterhalb des Menübands.
Der minimierte Zustand des Menübands, wie er durch den booleschen Wert des UI_PKEY_Minimized-Eigenschaftsschlüssels spezifiziert ist.
Hinweis
Der minimierte Zustand des Menübands entspricht nicht dem eingeklappter Zustand des Menübands. Wenn das Menüband im reduzierten Zustand ist, ist es vollständig ausgeblendet und kann nicht interagiert werden. Das Framework ruft diesen Zustand automatisch auf, wenn das Anwendungsfenster horizontal oder vertikal verkleinert wird, bis das Menüband den Anwendungsarbeitsbereich verdeckt. Das Framework stellt das Menüband wieder her, wenn die Größe des Anwendungsfensters erhöht wird.
Dieser Screenshot zeigt den Befehl "Menüband minimieren" im Kontextmenü.
Dieser Screenshot zeigt ein minimiertes Menüband.
Menübandeinstellungen speichern
Die IUIRibbon::SaveSettingsToStream-Methode schreibt eine binäre Darstellung des permanenten Menübandzustands (im vorherigen Abschnitt beschrieben) in ein IStream-Objekt . Die Anwendung speichert dann den Inhalt des IStream-Objekts in einer Datei oder der Windows-Registrierung.
Das folgende Beispiel zeigt den grundlegenden Code, der erforderlich ist, um den Menübandzustand mithilfe der IUIRibbon::SaveSettingsToStream-Methode in ein IStream-Objekt zu schreiben.
// pRibbon - Pointer to the IUIRibbon interface
// ppStatusStream - Pointer to the location of a newly created IStream object
HRESULT CApplication::SaveRibbonStatusToStream(
__in IUIRibbon *pRibbon,
__out IStream **ppStatusStream)
{
HRESULT hr = E_FAIL;
*ppStatusStream = NULL;
IStream* pStream;
if (SUCCEEDED(hr = CreateStreamOnHGlobal(
NULL, // Internally allocate a new shared memory.
FALSE, // Free hGlobal after IStream object released.
&pStream)))
{
if (SUCCEEDED(hr = pRibbon->SaveSettingsToStream(*ppStatusStream)))
{
pStream->AddRef();
*ppStatusStream = pStream;
}
pStream->Release();
}
return hr;
}
Menübandeinstellungen laden
Die IUIRibbon::LoadSettingsFromStream-Methode wird verwendet, um die permanenten Menübandstatusinformationen abzurufen, die von der IUIRibbon::SaveSettingsToStream-Methode als IStream-Objekt gespeichert sind. Die Informationen im IStream-Objekt werden auf die Menüband-Benutzeroberfläche angewendet, wenn die Anwendung initialisiert wird.
Im folgenden Beispiel wird der grundlegende Code veranschaulicht, der zum Laden des Menübandzustands aus einem IStream-Objekt mit der IUIRibbon::LoadSettingsFromStream-Methode erforderlich ist.
// pRibbon - Pointer to the IUIRibbon interface
// pStatusStream - Pointer to the IStream object that contains the Ribbon state information
HRESULT CApplication::LoadRibbonStatusFromStream(
__in IUIRibbon *pRibbon,
__in IStream *pStatusStream)
{
HRESULT hr = E_FAIL;
if (pStatusStream)
{
// Set the stream position to the beginning first.
LARGE_INTEGER liStart = {0, 0};
ULARGE_INTEGER ulActual;
pStatusStream->Seek(liStart, STREAM_SEEK_SET, &ulActual);
hr = pRibbon->LoadSettingsFromStream(pStatusStream);
}
return hr;
}
Für eine optimale Leistung sollte die IUIRibbon::LoadSettingsFromStream-Methode aus der IUIApplication::OnViewChanged-Rückruffunktion während der Frameworkinitialisierungsphase aufgerufen werden, wie im folgenden Beispiel gezeigt.
IFACEMETHODIMP CMyRibbonApplication::OnViewChanged(
UINT nViewID,
__in UI_VIEWTYPE typeID,
__in IUnknown* pView,
UI_VIEWVERB verb,
INT iReasonCode)
{
HRESULT hr = E_NOTIMPL;
if (UI_VIEWVERB_CREATE == verb)
{
IUIRibbon* pRibbon = NULL;
hr = pView->QueryInterface(IID_PPV_ARGS(&pRibbon));
if (SUCCEEDED(hr))
{
hr = _LoadRibbonSettings(pRibbon);
pRibbon->Release();
}
}
return hr;
}
HRESULT CMyRibbonApplication::_LoadRibbonSettings(IUIRibbon* pRibbon)
{
...
pRibbon->LoadSettingsFromStream(pStream);
...
}
Mehrere Instanzen derselben Menübandframeworkanwendung können jeden Menübandstatus unabhängig als separate IStream-Objekte oder als Gruppe über ein einzelnes IStream-Objekt verwalten.
Bei der Synchronisierung des Menübandzustands über eine Gruppe von Anwendungsinstanzen muss jedes Fenster auf oberster Ebene eine WM_ACTIVATE Benachrichtigung überwachen. Das deaktivierte Fenster der obersten Ebene speichert den Menübandzustand mithilfe der IUIRibbon::SaveSettingsToStream-Methode , und das aktivierte Fenster der obersten Ebene lädt den Menübandstatus mithilfe der IUIRibbon::LoadSettingsFromStream-Methode .
Zugehörige Themen