Partilhar via


Classe CContextMenuManager

Observação

A biblioteca Microsoft Foundation Classes (MFC) continua a ser suportada. No entanto, já não estamos a adicionar funcionalidades nem a atualizar a documentação.

O CContextMenuManager objeto gere menus de atalho, também conhecidos como menus de contexto.

Sintaxe

class CContextMenuManager : public CObject

Membros

Construtores Públicos

Nome Description
CContextMenuManager::CContextMenuManager Constrói um CContextMenuManager objeto.
CContextMenuManager::~CContextMenuManager Destruidor.

Métodos Públicos

Nome Description
CContextMenuManager::AddMenu Adiciona um novo menu de atalhos.
CContextMenuManager::GetMenuById Devolve um handle ao menu associado ao ID de recurso fornecido.
CContextMenuManager::GetMenuByName Devolve um handle ao menu que corresponde ao nome fornecido.
CContextMenuManager::GetMenuNames Devolve uma lista de nomes dos menus.
CContextMenuManager::LoadState Carrega os menus de atalho armazenados no registo do Windows.
CContextMenuManager::ResetState Limpa os menus de atalhos do gestor de menu contextual.
CContextMenuManager::SaveState Guarda os menus de atalhos no registo do Windows.
CContextMenuManager::SetDontCloseActiveMenu Controla se fecha CContextMenuManager o menu de atalhos ativo quando aparece um novo menu de atalhos.
CContextMenuManager::ShowPopupMenu Mostra o menu de atalhos especificado.
CContextMenuManager::TrackPopupMenu Mostra o menu de atalhos especificado. Retorna o índice do comando de menu selecionado.

Observações

CContextMenuManager gere menus de atalhos e garante que têm uma aparência consistente.

Não deves criar um CContextMenuManager objeto manualmente. A estrutura da sua aplicação cria o CContextMenuManager objeto. No entanto, deve ligar para CWinAppEx::InitContextMenuManager quando a sua aplicação for inicializada. Depois de inicializar o gestor de contexto, use o método CWinAppEx::GetContextMenuManager para obter um ponteiro para o gestor de contexto da sua aplicação.

Podes criar menus de atalho em tempo de execução chamando AddMenu. Se quiser mostrar o menu sem primeiro receber a entrada do utilizador, ligue ShowPopupMenupara . TrackPopupMenu é usado quando se quer criar um menu e esperar pela entrada do utilizador. TrackPopupMenu devolve o índice do comando selecionado ou 0 se o utilizador saiu sem selecionar nada.

Também CContextMenuManager pode guardar e carregar o seu estado no registo do Windows.

Example

O exemplo seguinte demonstra como adicionar um menu a um CContextMenuManager objeto e como não fechar o menu pop-up ativo quando o CContextMenuManager objeto apresenta um novo menu pop-up. Este excerto de código faz parte do exemplo de Páginas Personalizadas.

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

Hierarquia de herança

CObject

CContextMenuManager

Requerimentos

Cabeçalho: afxcontextmenumanager.h

CContextMenuManager::AddMenu

Adiciona um novo menu de atalhos ao CContextMenuManager.

BOOL AddMenu(
    UINT uiMenuNameResId,
    UINT uiMenuResId);

BOOL AddMenu(
    LPCTSTR lpszName,
    UINT uiMenuResId);

Parâmetros

uiMenuNameResId
[dentro] Um ID de recurso para uma cadeia que contém o nome do novo menu.

uiMenuResId
[dentro] O ID do recurso do menu.

lpszName
[dentro] Uma cadeia que contém o nome do novo menu.

Valor de retorno

Não nulo se o método fosse bem-sucedido; 0 se o método falhar.

Observações

Este método falha se uiMenuResId for inválido ou se outro menu com o mesmo nome já estiver no CContextMenuManagerarquivo .

CContextMenuManager::CContextMenuManager

Constrói um objeto CContextMenuManager .

CContextMenuManager();

Observações

Na maioria dos casos, não deve criar um CContextMenuManager manualmente. A estrutura da sua aplicação cria o CContextMenuManager objeto. Deve ligar para CWinAppEx::InitContextMenuManager durante a inicialização da sua aplicação. Para obter um apontador para o gestor de contexto, ligue para CWinAppEx::GetContextMenuManager.

CContextMenuManager::GetMenuById

Devolve um handle ao menu associado a um determinado ID de recurso.

HMENU GetMenuById(UINT nMenuResId) const;

Parâmetros

nMenuResId
[dentro] O ID do recurso para o menu.

Valor de retorno

Um handle para o menu associado ou NULL , se o menu não for encontrado.

CContextMenuManager::GetMenuByName

Devolve uma alavanca a um menu específico.

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

Parâmetros

lpszName
[dentro] Uma cadeia que contém o nome do menu para recuperar.

puiOrigResID
[fora] Um indicador para um UINT. Este parâmetro contém o ID do recurso do menu especificado, caso seja encontrado.

Valor de retorno

Um nome no menu que corresponde ao nome especificado por lpszName. NULL se não houver um menu chamado lpszName.

Observações

Se este método encontrar um menu que corresponda ao lpszName, GetMenuByName armazena o ID do recurso do menu no parâmetro puiOrigResID.

CContextMenuManager::GetMenuNames

Devolve a lista de nomes de menus adicionados ao CContextMenuManager.

void GetMenuNames(CStringList& listOfNames) const;

Parâmetros

listaDeNomes
[fora] Uma referência a um parâmetro CStringList . Este método escreve a lista de nomes dos menus neste parâmetro.

CContextMenuManager::LoadState

Carrega a informação associada à Classe CContextMenuManager a partir do registo do Windows.

virtual BOOL LoadState(LPCTSTR lpszProfileName = NULL);

Parâmetros

lpszProfileName
[dentro] Uma cadeia que contém o caminho relativo de uma chave de registo.

Valor de retorno

Diferente de zero se o método for bem-sucedido; caso contrário, 0.

Observações

O parâmetro lpszProfileName não é o caminho absoluto para uma entrada de registo. É um caminho relativo que é adicionado ao final da chave padrão do registo da sua aplicação. Para obter ou definir a chave de registo predefinida, use os métodos CWinAppEx::GetRegistryBase e CWinAppEx::SetRegistryBase , respetivamente.

Use o método CContextMenuManager::SaveState para guardar os menus de atalho no registo.

CContextMenuManager::ResetState

Limpa todos os itens dos menus de atalho associados à classe CContextMenuManager.

virtual BOOL ResetState();

Valor de retorno

TRUE se o método for bem-sucedido; FALSE se ocorrer uma falha.

Observações

Este método limpa os menus pop-up e remove-os do CContextMenuManagerarquivo .

CContextMenuManager::SaveState

Guarda a informação associada à Classe CContextMenuManager no registo do Windows.

virtual BOOL SaveState(LPCTSTR lpszProfileName = NULL);

Parâmetros

lpszProfileName
[dentro] Uma cadeia que contém o caminho relativo de uma chave de registo.

Valor de retorno

Diferente de zero se o método for bem-sucedido; caso contrário, 0.

Observações

O parâmetro lpszProfileName não é o caminho absoluto para uma entrada de registo. É um caminho relativo que é adicionado ao final da chave padrão do registo da sua aplicação. Para obter ou definir a chave de registo predefinida, use os métodos CWinAppEx::GetRegistryBase e CWinAppEx::SetRegistryBase , respetivamente.

Use o método CContextMenuManager::LoadState para carregar os menus de atalho a partir do registo.

CContextMenuManager::SetDontCloseActiveMenu

Controla se o CContextMenuManager fecha o menu pop-up ativo quando aparece um novo menu pop-up.

void SetDontCloseActiveMenu (BOOL bSet = TRUE);

Parâmetros

bSet
[dentro] Um parâmetro booleano que controla se deve fechar o menu pop-up ativo. Um valor de TRUE indica que o menu pop-up ativo não está fechado. FALSE indica que o menu pop-up ativo está fechado.

Observações

Por defeito, fecha CContextMenuManager o menu pop-up ativo.

CContextMenuManager::ShowPopupMenu

Mostra o menu de atalhos especificado.

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

Parâmetros

uiMenuResId
[dentro] O ID do recurso do menu que este método irá mostrar.

x
[dentro] O deslocamento horizontal do menu de atalhos nas coordenadas do cliente.

y
[dentro] O deslocamento vertical do menu de atalho nas coordenadas do cliente

pWndOwner
[dentro] Um apontador para a janela principal do menu de atalhos.

bOwnMessage
[dentro] Um parâmetro booleano que indica como as mensagens são encaminhadas. Se o bOwnMessage for FALSO, é usado o encaminhamento MFC padrão. Caso contrário, o pWndOwner recebe as mensagens.

hmenuPopup
[dentro] O handle do menu que este método irá mostrar.

bAutoDestroy
[dentro] Um parâmetro booleano que indica se o menu será automaticamente destruído.

bRightAlign
[dentro] Um parâmetro booleano que indica como os itens do menu estão alinhados. Se o bRightAlign for VERDADEIRO, o menu está alinhado à direita para a ordem de leitura da direita para a esquerda.

Valor de retorno

A sobrecarga do primeiro método retorna diferente de zero se o método mostrar o menu com sucesso; caso contrário, 0. A sobrecarga do segundo método devolve um ponteiro para CMFCPopupMenu se o menu de atalho for exibido corretamente; caso contrário, NULL.

Observações

Este método assemelha-se ao método CContextMenuManager::TrackPopupMenu , pois ambos os métodos exibem um menu de atalho. No entanto, TrackPopupMenu devolve o índice do comando de menu selecionado.

Se o parâmetro bAutoDestroy for FALSO, deve chamar manualmente o método herdado DestroyMenu para libertar recursos de memória. A implementação padrão de ShowPopupMenu não utiliza o parâmetro bAutoDestroy. É fornecido para uso futuro ou para classes personalizadas derivadas da CContextMenuManager classe .

CContextMenuManager::TrackPopupMenu

Apresenta o menu de atalhos especificado e devolve o índice do comando selecionado no menu de atalho.

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

Parâmetros

hmenuPopup
[dentro] A alavanca do menu de atalho que este método apresenta.

x
[dentro] O deslocamento horizontal do menu de atalhos nas coordenadas do cliente.

y
[dentro] O deslocamento vertical para o menu de atalho nas coordenadas do cliente.

pWndOwner
[dentro] Um apontador para a janela principal do menu de atalhos.

bRightAlign
[dentro] Um parâmetro booleano que indica como os itens do menu estão alinhados. Se o bRightAlign for VERDADEIRO, o menu está alinhado à direita para a ordem de leitura da direita para a esquerda. Se o bRightAlign for FALSE, o menu está alinhado à esquerda para a ordem de leitura da esquerda para a direita.

Valor de retorno

O ID do comando do menu do comando que o utilizador escolhe; 0 se o utilizador fechar o menu de atalho sem selecionar um comando de menu.

Observações

Este método funciona como uma chamada modal para mostrar um menu de atalho. A aplicação não continuará até à linha seguinte no código até que o utilizador feche o menu de atalho ou selecione um comando. Um método alternativo que pode usar para mostrar um menu de atalhos é o CContextMenuManager::ShowPopupMenu. Esse método não é uma chamada modal e não devolverá o ID do comando selecionado.

Consulte também

Gráfico de Hierarquia
Classes
Classe CWinAppEx