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 ShowPopupMenuan. 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

CObject

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 CContextMenuManagerDatei 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
[in] 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
[in] 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.

Siehe auch

Hierarchiediagramm
Klassen
CWinAppEx-Klasse