Condividi tramite


Classe CContextMenuManager

L'oggetto CContextMenuManager gestisce i menu di scelta rapida, noti anche come menu di scelta rapida.

Sintassi

class CContextMenuManager : public CObject

Membri

Costruttori pubblici

Nome Descrizione
CContextMenuManager::CContextMenuManager Costruisce un oggetto CContextMenuManager.
CContextMenuManager::~CContextMenuManager Distruttore.

Metodi pubblici

Nome Descrizione
CContextMenuManager::AddMenu Aggiunge un nuovo menu di scelta rapida.
CContextMenuManager::GetMenuById Restituisce un handle al menu associato all'ID risorsa specificato.
CContextMenuManager::GetMenuByName Restituisce un handle al menu che corrisponde al nome del menu specificato.
CContextMenuManager::GetMenuNames Restituisce un elenco di nomi di menu.
CContextMenuManager::LoadState Carica i menu di scelta rapida archiviati nel Registro di sistema di Windows.
CContextMenuManager::ResetState Cancella i menu di scelta rapida dalla gestione menu di scelta rapida.
CContextMenuManager::SaveState Salva i menu di scelta rapida nel Registro di sistema di Windows.
CContextMenuManager::SetDontCloseActiveMenu Controlla se il CContextMenuManager menu di scelta rapida attivo viene chiuso quando viene visualizzato un nuovo menu di scelta rapida.
CContextMenuManager::ShowPopupMenu Visualizza il menu di scelta rapida specificato.
CContextMenuManager::TrackPopupMenu Visualizza il menu di scelta rapida specificato. Restituisce l'indice del comando di menu selezionato.

Osservazioni:

CContextMenuManager gestisce i menu di scelta rapida e assicura che abbiano un aspetto coerente.

Non è consigliabile creare un CContextMenuManager oggetto manualmente. Il framework dell'applicazione crea l'oggetto CContextMenuManager . Tuttavia, è necessario chiamare CWinAppEx::InitContextMenuManager quando l'applicazione viene inizializzata. Dopo aver inizializzato la gestione del contesto, usare il metodo CWinAppEx::GetContextMenuManager per ottenere un puntatore al gestore del contesto per l'applicazione.

È possibile creare menu di scelta rapida in fase di esecuzione chiamando AddMenu. Se si desidera visualizzare il menu senza prima ricevere l'input dell'utente, chiamare ShowPopupMenu. TrackPopupMenu viene usato quando si vuole creare un menu e attendere l'input dell'utente. TrackPopupMenu restituisce l'indice del comando selezionato o 0 se l'utente è uscito senza selezionare nulla.

Può CContextMenuManager anche salvare e caricare lo stato nel Registro di sistema di Windows.

Esempio

Nell'esempio seguente viene illustrato come aggiungere un menu a un CContextMenuManager oggetto e come non chiudere il menu a comparsa attivo quando l'oggetto CContextMenuManager visualizza un nuovo menu a comparsa. Questo frammento di codice fa parte dell'esempio pagine personalizzate.

// The GetContextMenuManager method is inherited from the CWinAppEx class.
GetContextMenuManager()->AddMenu(_T("My menu"), IDR_CONTEXT_MENU);
GetContextMenuManager()->SetDontCloseActiveMenu(true);

Gerarchia di ereditarietà

CObject

CContextMenuManager

Requisiti

Intestazione: afxcontextmenumanager.h

CContextMenuManager::AddMenu

Aggiunge un nuovo menu di scelta rapida a CContextMenuManager.

BOOL AddMenu(
    UINT uiMenuNameResId,
    UINT uiMenuResId);

BOOL AddMenu(
    LPCTSTR lpszName,
    UINT uiMenuResId);

Parametri

uiMenuNameResId
[in] ID risorsa per una stringa contenente il nome del nuovo menu.

uiMenuResId
[in] ID risorsa del menu.

lpszName
[in] Stringa contenente il nome del nuovo menu.

Valore restituito

Diverso da zero se il metodo ha avuto esito positivo; 0 se il metodo ha esito negativo.

Osservazioni:

Questo metodo ha esito negativo se uiMenuResId non è valido o se un altro menu con lo stesso nome si trova già in CContextMenuManager.

CContextMenuManager::CContextMenuManager

Costruisce un oggetto CContextMenuManager .

CContextMenuManager();

Osservazioni:

Nella maggior parte dei casi, non è consigliabile creare manualmente un oggetto CContextMenuManager . Il framework dell'applicazione crea l'oggetto CContextMenuManager . È necessario chiamare CWinAppEx::InitContextMenuManager durante l'inizializzazione dell'applicazione. Per ottenere un puntatore al gestore del contesto, chiamare CWinAppEx::GetContextMenuManager.

CContextMenuManager::GetMenuById

Restituisce un handle al menu associato a un ID risorsa specificato.

HMENU GetMenuById(UINT nMenuResId) const;

Parametri

nMenuResId
[in] ID risorsa per il menu.

Valore restituito

Handle per il menu associato o NULL se il menu non viene trovato.

CContextMenuManager::GetMenuByName

Restituisce un handle a un menu specifico.

HMENU GetMenuByName(
    LPCTSTR lpszName,
    UINT* puiOrigResID = NULL) const;

Parametri

lpszName
[in] Stringa contenente il nome del menu da recuperare.

puiOrigResID
[out] Puntatore a un UINT. Questo parametro contiene l'ID risorsa del menu specificato, se trovato.

Valore restituito

Handle del menu che corrisponde al nome specificato da lpszName. NULL se non è presente alcun menu denominato lpszName.

Osservazioni:

Se questo metodo trova un menu che corrisponde a lpszName, GetMenuByName archivia l'ID risorsa del menu nel parametro puiOrigResID.

CContextMenuManager::GetMenuNames

Restituisce l'elenco dei nomi di menu aggiunti a CContextMenuManager.

void GetMenuNames(CStringList& listOfNames) const;

Parametri

listOfNames
[out] Riferimento a un parametro CStringList . Questo metodo scrive l'elenco dei nomi di menu in questo parametro.

CContextMenuManager::LoadState

Carica le informazioni associate alla classe CContextMenuManager dal Registro di sistema di Windows.

virtual BOOL LoadState(LPCTSTR lpszProfileName = NULL);

Parametri

lpszProfileName
[in] Stringa contenente il percorso relativo di una chiave del Registro di sistema.

Valore restituito

Diverso da zero se il metodo ha esito positivo; in caso contrario, 0.

Osservazioni:

Il parametro lpszProfileName non è il percorso assoluto per una voce del Registro di sistema. Si tratta di un percorso relativo aggiunto alla fine della chiave del Registro di sistema predefinita per l'applicazione. Per ottenere o impostare la chiave del Registro di sistema predefinita, usare rispettivamente i metodi CWinAppEx::GetRegistryBase e CWinAppEx::SetRegistryBase .

Usare il metodo CContextMenuManager::SaveState per salvare i menu di scelta rapida nel Registro di sistema.

CContextMenuManager::ResetState

Cancella tutti gli elementi dai menu di scelta rapida associati alla classe CContextMenuManager.

virtual BOOL ResetState();

Valore restituito

TRUE se il metodo ha esito positivo; FALSE se si verifica un errore.

Osservazioni:

Questo metodo cancella i menu a comparsa e li rimuove da CContextMenuManager.

CContextMenuManager::SaveState

Salva le informazioni associate alla classe CContextMenuManager nel Registro di sistema di Windows.

virtual BOOL SaveState(LPCTSTR lpszProfileName = NULL);

Parametri

lpszProfileName
[in] Stringa contenente il percorso relativo di una chiave del Registro di sistema.

Valore restituito

Diverso da zero se il metodo ha esito positivo; in caso contrario, 0.

Osservazioni:

Il parametro lpszProfileName non è il percorso assoluto per una voce del Registro di sistema. Si tratta di un percorso relativo aggiunto alla fine della chiave del Registro di sistema predefinita per l'applicazione. Per ottenere o impostare la chiave del Registro di sistema predefinita, usare rispettivamente i metodi CWinAppEx::GetRegistryBase e CWinAppEx::SetRegistryBase .

Usare il metodo CContextMenuManager::LoadState per caricare i menu di scelta rapida dal Registro di sistema.

CContextMenuManager::SetDontCloseActiveMenu

Controlla se CContextMenuManager chiude il menu a comparsa attivo quando visualizza un nuovo menu a comparsa.

void SetDontCloseActiveMenu (BOOL bSet = TRUE);

Parametri

bSet
[in] Parametro booleano che controlla se chiudere il menu a comparsa attivo. Il valore TRUE indica che il menu a comparsa attivo non è chiuso. FALSE indica che il menu a comparsa attivo è chiuso.

Osservazioni:

Per impostazione predefinita, chiude CContextMenuManager il menu a comparsa attivo.

CContextMenuManager::ShowPopupMenu

Visualizza il menu di scelta rapida specificato.

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

Parametri

uiMenuResId
[in] ID risorsa del menu visualizzato da questo metodo.

x
[in] Offset orizzontale per il menu di scelta rapida nelle coordinate client.

y
[in] Offset verticale per il menu di scelta rapida nelle coordinate client

pWndOwner
[in] Puntatore alla finestra padre del menu di scelta rapida.

bOwnMessage
[in] Parametro booleano che indica come vengono indirizzati i messaggi. Se bOwnMessage è FALSE, viene usato il routing MFC standard. In caso contrario, pWndOwner riceve i messaggi.

hmenuPopup
[in] Handle del menu che verrà visualizzato da questo metodo.

bAutoDestroy
[in] Parametro booleano che indica se il menu verrà eliminato automaticamente.

bRightAlign
[in] Parametro booleano che indica la modalità di allineamento delle voci di menu. Se bRightAlign è TRUE, il menu è allineato a destra per l'ordine di lettura da destra a sinistra.

Valore restituito

Il primo overload del metodo restituisce un valore diverso da zero se il metodo visualizza correttamente il menu; in caso contrario, 0. Il secondo overload del metodo restituisce un puntatore a CMFCPopupMenu se il menu di scelta rapida viene visualizzato correttamente; in caso contrario, NULL.

Osservazioni:

Questo metodo è simile al metodo CContextMenuManager::TrackPopupMenu in quanto entrambi i metodi visualizzano un menu di scelta rapida. Restituisce TrackPopupMenu tuttavia l'indice del comando di menu selezionato.

Se il parametro bAutoDestroy è FALSE, è necessario chiamare manualmente il metodo ereditato DestroyMenu per rilasciare le risorse di memoria. L'implementazione predefinita di ShowPopupMenu non usa il parametro bAutoDestroy. Viene fornito per l'uso futuro o per le classi personalizzate derivate dalla CContextMenuManager classe .

CContextMenuManager::TrackPopupMenu

Visualizza il menu di scelta rapida specificato e restituisce l'indice del comando di menu di scelta rapida selezionato.

virtual UINT TrackPopupMenu(
    HMENU hmenuPopup,
    int x,
    int y,
    CWnd* pWndOwner,
    BOOL bRightAlign = FALSE);

Parametri

hmenuPopup
[in] Handle del menu di scelta rapida visualizzato da questo metodo.

x
[in] Offset orizzontale per il menu di scelta rapida nelle coordinate client.

y
[in] Offset verticale per il menu di scelta rapida nelle coordinate client.

pWndOwner
[in] Puntatore alla finestra padre del menu di scelta rapida.

bRightAlign
[in] Parametro booleano che indica la modalità di allineamento delle voci di menu. Se bRightAlign è TRUE, il menu è allineato a destra per l'ordine di lettura da destra a sinistra. Se bRightAlign è FALSE, il menu viene allineato a sinistra per l'ordine di lettura da sinistra a destra.

Valore restituito

ID comando di menu del comando scelto dall'utente; 0 se l'utente chiude il menu di scelta rapida senza selezionare un comando di menu.

Osservazioni:

Questo metodo funziona come chiamata modale per visualizzare un menu di scelta rapida. L'applicazione non continuerà alla riga seguente nel codice finché l'utente non chiude il menu di scelta rapida o seleziona un comando. Un metodo alternativo che è possibile usare per visualizzare un menu di scelta rapida è CContextMenuManager::ShowPopupMenu. Questo metodo non è una chiamata modale e non restituirà l'ID del comando selezionato.

Vedi anche

Grafico della gerarchia
Classi
Classe CWinAppEx