CContextMenuManager-Klasse
Das CContextMenuManager
Objekt verwaltet Kontextmenüs, auch als Kontextmenüs bezeichnet.
Syntax
class CContextMenuManager : public CObject
Member
Öffentliche Konstruktoren
Name | Beschreibung |
---|---|
CContextMenuManager::CContextMenuManager | Erstellt ein CContextMenuManager -Objekt. |
CContextMenuManager::~CContextMenuManager |
Destruktor. |
Öffentliche Methoden
Name | Beschreibung |
---|---|
CContextMenuManager::AddMenu | Fügt ein neues Kontextmenü hinzu. |
CContextMenuManager::GetMenuById | Gibt ein Handle für das Menü zurück, das der bereitgestellten Ressourcen-ID zugeordnet ist. |
CContextMenuManager::GetMenuByName | Gibt ein Handle an das Menü zurück, das dem angegebenen Menünamen entspricht. |
CContextMenuManager::GetMenuNames | Gibt eine Liste von Menünamen zurück. |
CContextMenuManager::LoadState | Lädt Kontextmenüs, die in der Windows-Registrierung gespeichert sind. |
CContextMenuManager::ResetState | Löscht die Kontextmenüs aus dem Kontextmenü-Manager. |
CContextMenuManager::SaveState | Speichert Kontextmenüs in der Windows-Registrierung. |
CContextMenuManager::SetDontCloseActiveMenu | Steuert, ob das CContextMenuManager aktive Kontextmenü geschlossen wird, wenn ein neues Kontextmenü angezeigt wird. |
CContextMenuManager::ShowPopupMenu | Zeigt das angegebene Kontextmenü an. |
CContextMenuManager::TrackPopupMenu | Zeigt das angegebene Kontextmenü an. Gibt den Index des ausgewählten Menübefehls zurück. |
Hinweise
CContextMenuManager
verwaltet Kontextmenüs und stellt sicher, dass sie ein einheitliches Erscheinungsbild aufweisen.
Sie sollten ein CContextMenuManager
Objekt nicht manuell erstellen. Das Framework Ihrer Anwendung erstellt das CContextMenuManager
Objekt. Sie sollten jedoch CWinAppEx::InitContextMenuManager aufrufen, wenn Ihre Anwendung initialisiert wird. Verwenden Sie nach der Initialisierung des Kontext-Managers die Methode CWinAppEx::GetContextMenuManager , um einen Zeiger auf den Kontext-Manager für Ihre Anwendung abzurufen.
Sie können Kontextmenüs zur Laufzeit erstellen, indem Sie aufrufen AddMenu
. Wenn Sie das Menü anzeigen möchten, ohne zuerst Benutzereingaben zu erhalten, rufen Sie ShowPopupMenu
an. TrackPopupMenu
wird verwendet, wenn Sie ein Menü erstellen und auf die Benutzereingabe warten möchten. TrackPopupMenu
gibt den Index des ausgewählten Befehls oder 0 zurück, wenn der Benutzer beendet wurde, ohne etwas auszuwählen.
Der CContextMenuManager
Status kann auch in der Windows-Registrierung gespeichert und geladen werden.
Beispiel
Im folgenden Beispiel wird das Hinzufügen eines Menüs zu einem CContextMenuManager
Objekt und das Schließen des aktiven Popupmenüs beim CContextMenuManager
Anzeigen eines neuen Popupmenüs veranschaulicht. Dieser Codeausschnitt ist Teil des Beispiels "Benutzerdefinierte Seiten".
// The GetContextMenuManager method is inherited from the CWinAppEx class.
GetContextMenuManager()->AddMenu(_T("My menu"), IDR_CONTEXT_MENU);
GetContextMenuManager()->SetDontCloseActiveMenu(true);
Vererbungshierarchie
CContextMenuManager
Anforderungen
Header: afxcontextmenumanager.h
CContextMenuManager::AddMenu
Fügt dem CContextMenuManager ein neues Kontextmenü hinzu.
BOOL AddMenu(
UINT uiMenuNameResId,
UINT uiMenuResId);
BOOL AddMenu(
LPCTSTR lpszName,
UINT uiMenuResId);
Parameter
uiMenuNameResId
[in] Eine Ressourcen-ID für eine Zeichenfolge, die den Namen für das neue Menü enthält.
uiMenuResId
[in] Die Menüressourcen-ID.
lpszName
[in] Eine Zeichenfolge, die den Namen für das neue Menü enthält.
Rückgabewert
Nonzero, wenn die Methode erfolgreich war; 0, wenn die Methode fehlschlägt.
Hinweise
Diese Methode schlägt fehl, wenn uiMenuResId ungültig ist oder ein anderes Menü mit demselben Namen bereits in der CContextMenuManager
Datei enthalten ist.
CContextMenuManager::CContextMenuManager
Erstellt ein CContextMenuManager -Objekt.
CContextMenuManager();
Hinweise
In den meisten Fällen sollten Sie keinen manuellen Erstellen CContextMenuManager
. Das Framework Ihrer Anwendung erstellt das CContextMenuManager
Objekt. Sie sollten CWinAppEx::InitContextMenuManager während der Initialisierung Ihrer Anwendung aufrufen. Rufen Sie CWinAppEx::GetContextMenuManager auf, um einen Zeiger auf den Kontext-Manager abzurufen.
CContextMenuManager::GetMenuById
Gibt ein Handle für das Menü zurück, das einer bestimmten Ressourcen-ID zugeordnet ist.
HMENU GetMenuById(UINT nMenuResId) const;
Parameter
nMenuResId
[in] Die Ressourcen-ID für das Menü.
Rückgabewert
Ein Handle für das zugeordnete Menü oder NULL
wenn das Menü nicht gefunden wird.
CContextMenuManager::GetMenuByName
Gibt ein Handle zu einem bestimmten Menü zurück.
HMENU GetMenuByName(
LPCTSTR lpszName,
UINT* puiOrigResID = NULL) const;
Parameter
lpszName
[in] Eine Zeichenfolge, die den Namen des abzurufenden Menüs enthält.
puiOrigResID
[out] Ein Zeiger auf einen UINT. Dieser Parameter enthält die Ressourcen-ID des angegebenen Menüs, falls gefunden.
Rückgabewert
Ein Handle für das Menü, das dem Namen entspricht, der durch lpszName angegeben wurde. NULL, wenn kein Menü namens lpszName vorhanden ist.
Hinweise
Wenn diese Methode ein Menü findet, das lpszName entspricht, GetMenuByName
speichert die Menüressourcen-ID im Parameter puiOrigResID.
CContextMenuManager::GetMenuNames
Gibt die Liste der Menünamen zurück, die dem CContextMenuManager hinzugefügt wurden.
void GetMenuNames(CStringList& listOfNames) const;
Parameter
listOfNames
[out] Ein Verweis auf einen CStringList-Parameter . Diese Methode schreibt die Liste der Menünamen in diesen Parameter.
CContextMenuManager::LoadState
Lädt Informationen, die der CContextMenuManager-Klasse aus der Windows-Registrierung zugeordnet sind.
virtual BOOL LoadState(LPCTSTR lpszProfileName = NULL);
Parameter
lpszProfileName
[Eingabe] Eine Zeichenfolge, die den relativen Pfad eines Registrierungsschlüssels enthält
Rückgabewert
Nonzero, wenn die Methode erfolgreich ist; andernfalls 0.
Hinweise
Der parameter lpszProfileName ist nicht der absolute Pfad für einen Registrierungseintrag. Es handelt sich um einen relativen Pfad, der am Ende des Standardregistrierungsschlüssels für Ihre Anwendung hinzugefügt wird. Verwenden Sie zum Abrufen oder Festlegen des Standardregistrierungsschlüssels die Methoden CWinAppEx::GetRegistryBase und CWinAppEx::SetRegistryBase .
Verwenden Sie die Methode CContextMenuManager::SaveState , um die Kontextmenüs in der Registrierung zu speichern.
CContextMenuManager::ResetState
Löscht alle Elemente aus den Kontextmenüs, die der CContextMenuManager-Klasse zugeordnet sind.
virtual BOOL ResetState();
Rückgabewert
TRUE, wenn die Methode erfolgreich ist; FALSE, wenn ein Fehler auftritt.
Hinweise
Diese Methode löscht die Popupmenüs und entfernt sie aus dem CContextMenuManager
.
CContextMenuManager::SaveState
Speichert Informationen, die der CContextMenuManager-Klasse zugeordnet sind, in der Windows-Registrierung.
virtual BOOL SaveState(LPCTSTR lpszProfileName = NULL);
Parameter
lpszProfileName
[Eingabe] Eine Zeichenfolge, die den relativen Pfad eines Registrierungsschlüssels enthält
Rückgabewert
Nonzero, wenn die Methode erfolgreich ist; andernfalls 0.
Hinweise
Der parameter lpszProfileName ist nicht der absolute Pfad für einen Registrierungseintrag. Es handelt sich um einen relativen Pfad, der am Ende des Standardregistrierungsschlüssels für Ihre Anwendung hinzugefügt wird. Verwenden Sie zum Abrufen oder Festlegen des Standardregistrierungsschlüssels die Methoden CWinAppEx::GetRegistryBase und CWinAppEx::SetRegistryBase .
Verwenden Sie die Methode CContextMenuManager::LoadState , um die Kontextmenüs aus der Registrierung zu laden.
CContextMenuManager::SetDontCloseActiveMenu
Steuert, ob der CContextMenuManager das aktive Popupmenü schließt, wenn es ein neues Popupmenü anzeigt.
void SetDontCloseActiveMenu (BOOL bSet = TRUE);
Parameter
bSet
[in] Ein boolescher Parameter, der steuert, ob das aktive Popupmenü geschlossen werden soll. Ein Wert von TRUE gibt an, dass das aktive Popupmenü nicht geschlossen ist. FALSE gibt an, dass das aktive Popupmenü geschlossen ist.
Hinweise
Standardmäßig wird das CContextMenuManager
aktive Popupmenü geschlossen.
CContextMenuManager::ShowPopupMenu
Zeigt das angegebene Kontextmenü an.
virtual BOOL ShowPopupMenu(
UINT uiMenuResId,
int x,
int y,
CWnd* pWndOwner,
BOOL bOwnMessage = FALSE,
BOOL bRightAlign = FALSE);
virtual CMFCPopupMenu* ShowPopupMenu(
HMENU hmenuPopup,
int x,
int y,
CWnd* pWndOwner,
BOOL bOwnMessage = FALSE,
BOOL bAutoDestroy = TRUE,
BOOL bRightAlign = FALSE);
Parameter
uiMenuResId
[in] Die Ressourcen-ID des Menüs, das diese Methode anzeigt.
x
[in] Der horizontale Offset für das Kontextmenü in Clientkoordinaten.
y
[in] Der vertikale Offset für das Kontextmenü in Clientkoordinaten
pWndOwner
[in] Ein Zeiger auf das übergeordnete Fenster des Kontextmenüs.
bOwnMessage
[in] Ein boolescher Parameter, der angibt, wie Nachrichten weitergeleitet werden. Wenn bOwnMessage FALSCH ist, wird standardmäßiges MFC-Routing verwendet. Andernfalls empfängt pWndOwner die Nachrichten.
hmenuPopup
[in] Das Handle des Menüs, das von dieser Methode angezeigt wird.
bAutoDestroy
[in] Ein boolescher Parameter, der angibt, ob das Menü automatisch zerstört wird.
bRightAlign
[in] Ein boolescher Parameter, der angibt, wie die Menüelemente ausgerichtet werden. Wenn bRightAlign WAHR ist, wird das Menü für die Leserichtung von rechts nach links rechts ausgerichtet.
Rückgabewert
Die erste Methodenüberladung gibt nonzero zurück, wenn die Methode das Menü erfolgreich anzeigt. andernfalls 0. Die zweite Methodenüberladung gibt einen Zeiger auf CMFCPopupMenu zurück, wenn das Kontextmenü ordnungsgemäß angezeigt wird; andernfalls NULL.
Hinweise
Diese Methode ähnelt der Methode "CContextMenuManager::TrackPopupMenuMenu ", in der beide Methoden ein Kontextmenü anzeigen. TrackPopupMenu
Gibt jedoch den Index des ausgewählten Menübefehls zurück.
Wenn der Parameter "bAutoDestroy " FALSCH ist, müssen Sie die geerbte DestroyMenu
Methode manuell aufrufen, um Speicherressourcen freizugeben. Die Standardimplementierung verwendet ShowPopupMenu
nicht den Parameter "bAutoDestroy". Sie wird für die zukünftige Verwendung oder für benutzerdefinierte Klassen bereitgestellt, die von der CContextMenuManager
Klasse abgeleitet sind.
CContextMenuManager::TrackPopupMenu
Zeigt das angegebene Kontextmenü an und gibt den Index des ausgewählten Kontextmenübefehls zurück.
virtual UINT TrackPopupMenu(
HMENU hmenuPopup,
int x,
int y,
CWnd* pWndOwner,
BOOL bRightAlign = FALSE);
Parameter
hmenuPopup
[in] Das Handle des Kontextmenüs, das von dieser Methode angezeigt wird.
x
[in] Der horizontale Offset für das Kontextmenü in Clientkoordinaten.
y
[in] Der vertikale Offset für das Kontextmenü in Clientkoordinaten.
pWndOwner
[in] Ein Zeiger auf das übergeordnete Fenster des Kontextmenüs.
bRightAlign
[in] Ein boolescher Parameter, der angibt, wie Menüelemente ausgerichtet werden. Wenn bRightAlign WAHR ist, wird das Menü für die Leserichtung von rechts nach links rechts ausgerichtet. Wenn bRightAlign FALSCH ist, wird das Menü für die Leserichtung von links nach rechts links ausgerichtet.
Rückgabewert
Die Menübefehls-ID des Befehls, den der Benutzer auswählt; 0, wenn der Benutzer das Kontextmenü schließt, ohne einen Menübefehl auszuwählen.
Hinweise
Diese Methode fungiert als modaler Aufruf zum Anzeigen eines Kontextmenüs. Die Anwendung wird erst dann mit der folgenden Codezeile fortfahren, wenn der Benutzer entweder das Kontextmenü schließt oder einen Befehl auswählt. Eine alternative Methode, mit der Sie ein Kontextmenü anzeigen können, ist CContextMenuManager::ShowPopupMenuMenu. Diese Methode ist kein modaler Aufruf und gibt die ID des ausgewählten Befehls nicht zurück.