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