Compartilhar via


Classe CAtlExeModuleT

Essa classe representa o módulo para um aplicativo.

Sintaxe

template <class T>
class ATL_NO_VTABLE CAtlExeModuleT : public CAtlModuleT<T>

Parâmetros

T
Sua classe derivada de CAtlExeModuleT.

Membros

Construtores públicos

Nome Descrição
CAtlExeModuleT::CAtlExeModuleT O construtor .
CAtlExeModuleT::~CAtlExeModuleT O destruidor.

Métodos públicos

Nome Descrição
CAtlExeModuleT::InitializeCom Inicializa o COM.
CAtlExeModuleT::ParseCommandLine Analisa a linha de comando e executa o registro, se necessário.
CAtlExeModuleT::PostMessageLoop Esse método é chamado imediatamente após a saída do loop de mensagens.
CAtlExeModuleT::PreMessageLoop Esse método é chamado imediatamente antes de inserir o loop de mensagens.
CAtlExeModuleT::RegisterClassObjects Registra o objeto de classe.
CAtlExeModuleT::RevokeClassObjects Revoga o objeto de classe.
CAtlExeModuleT::Run Esse método executa o código no módulo EXE para inicializar, executar o loop de mensagem e limpar.
CAtlExeModuleT::RunMessageLoop Esse método executa o loop de mensagens.
CAtlExeModuleT::UninitializeCom Cancela a inicialização do COM.
CAtlExeModuleT::Unlock Diminui a contagem de bloqueio do módulo.
CAtlExeModuleT::WinMain Esse método implementa o código necessário para executar um EXE.

Membros de Dados Públicos

Nome Descrição
CAtlExeModuleT::m_bDelayShutdown Um sinalizador que indica que deve haver um atraso ao desligar o módulo.
CAtlExeModuleT::m_dwPause Um valor de pausa usado para garantir que todos os objetos sejam liberados antes do desligamento.
CAtlExeModuleT::m_dwTimeOut Um valor de tempo limite usado para atrasar o descarregamento do módulo.

Comentários

CAtlExeModuleT representa o módulo de um aplicativo (EXE) e contém código que dá suporte à criação de um EXE, ao processamento da linha de comando, ao registro de objetos de classe, à execução do loop de mensagem e à limpeza na saída.

Essa classe foi projetada para melhorar o desempenho quando objetos COM no servidor EXE são continuamente criados e destruídos. Depois que o último objeto COM é lançado, o EXE aguarda uma duração especificada pelo membro de dados CAtlExeModuleT::m_dwTimeOut. Se não houver atividade durante esse período (ou seja, nenhum objeto COM será criado), o processo de desligamento será iniciado.

O membro de dados CAtlExeModuleT::m_bDelayShutdown é um sinalizador usado para determinar se o EXE deve usar o mecanismo definido acima. Se for definido como false, o módulo será encerrado imediatamente.

Para obter mais informações sobre módulos na ATL, consulte Classes de módulo da ATL.

Hierarquia de herança

_ATL_MODULE

CAtlModule

CAtlModuleT

CAtlExeModuleT

Requisitos

Cabeçalho: atlbase.h

CAtlExeModuleT::CAtlExeModuleT

O construtor .

CAtlExeModuleT() throw();

Comentários

Se o módulo EXE não puder ser inicializado, o WinMain retornará imediatamente sem processamento adicional.

CAtlExeModuleT::~CAtlExeModuleT

O destruidor.

~CAtlExeModuleT() throw();

Comentários

Libera todos os recursos alocados.

CAtlExeModuleT::InitializeCom

Inicializa o COM.

static HRESULT InitializeCom() throw();

Valor de retorno

Retornará S_OK se houver êxito ou um erro HRESULT, em caso de falha.

Comentários

Esse método é chamado do construtor e pode ser substituído para inicializar o COM de uma forma diferente da implementação padrão. A implementação padrão chama CoInitializeEx(NULL, COINIT_MULTITHREADED) ou CoInitialize(NULL) dependendo da configuração do projeto.

Substituir esse método normalmente requer substituir CAtlExeModuleT::UninitializeCom.

CAtlExeModuleT::m_bDelayShutdown

Um sinalizador que indica que deve haver um atraso ao desligar o módulo.

bool m_bDelayShutdown;

Comentários

Veja mais detalhes em CAtlExeModuleT Overview.

CAtlExeModuleT::m_dwPause

Um valor de pausa usado para garantir que todos os objetos desapareçam antes do desligamento.

DWORD m_dwPause;

Comentários

Altere esse valor depois de chamar CAtlExeModuleT::InitializeCom para definir o número de milissegundos usados como o valor de pausa para desligar o servidor. O valor padrão é 1.000 milissegundos.

CAtlExeModuleT::m_dwTimeOut

Um valor de tempo limite usado para atrasar o descarregamento do módulo.

DWORD m_dwTimeOut;

Comentários

Altere esse valor depois de chamar CAtlExeModuleT::InitializeCom para definir o número de milissegundos usados como o valor de tempo limite para desligar o servidor. O valor padrão é 5.000 milissegundos. Veja mais detalhes em CAtlExeModuleT Overview.

CAtlExeModuleT::ParseCommandLine

Analisa a linha de comando e executa o registro, se necessário.

bool ParseCommandLine(LPCTSTR lpCmdLine, HRESULT* pnRetCode) throw();

Parâmetros

lpCmdLine
A linha de comando passada para o aplicativo.

pnRetCode
O HRESULT correspondente ao registro (se ocorreu).

Valor de retorno

Retornará true se o aplicativo deve continuar a ser executado. Caso contrário, false.

Comentários

Esse método é chamado de CAtlExeModuleT::WinMain e pode ser substituído para manipular comutadores de linha de comando. A implementação padrão verifica os argumentos de linha de comando /RegServer e /UnRegServer e executa o registro ou o cancelamento do registro.

CAtlExeModuleT::PostMessageLoop

Esse método é chamado imediatamente após a saída do loop de mensagens.

HRESULT PostMessageLoop() throw();

Valor de retorno

Retornará S_OK se houver êxito ou um erro HRESULT, em caso de falha.

Comentários

Substitua esse método para executar a limpeza personalizada do aplicativo. A implementação padrão chama CAtlExeModuleT::RevokeClassObjects.

CAtlExeModuleT::PreMessageLoop

Esse método é chamado imediatamente antes de inserir o loop de mensagens.

HRESULT PreMessageLoop(int nShowCmd) throw();

Parâmetros

nShowCmd
O valor passado como o parâmetro nShowCmd no WinMain.

Valor de retorno

Retornará S_OK se houver êxito ou um erro HRESULT, em caso de falha.

Comentários

Substitua este método para adicionar código de inicialização personalizada ao aplicativo. A implementação padrão registra os objetos de classe.

CAtlExeModuleT::RegisterClassObjects

Registra o objeto de classe com OLE para que outros aplicativos possam se conectar a ele.

HRESULT RegisterClassObjects(DWORD dwClsContext, DWORD dwFlags) throw();

Parâmetros

dwClsContext
Especifica o contexto no qual o objeto de classe deve ser executado. Os valores possíveis são CLSCTX_INPROC_SERVER, CLSCTX_INPROC_HANDLER ou CLSCTX_LOCAL_SERVER.

dwFlags
Determina os tipos de conexão com o objeto de classe. Os valores possíveis são REGCLS_SINGLEUSE, REGCLS_MULTIPLEUSE ou REGCLS_MULTI_SEPARATE.

Valor de retorno

Retorna S_OK com êxito, S_FALSE se não havia classes a serem registradas ou um erro HRESULT em caso de falha.

CAtlExeModuleT::RevokeClassObjects

Remove o objeto de classe.

HRESULT RevokeClassObjects() throw();

Valor de retorno

Retorna S_OK com êxito, S_FALSE se não havia classes a serem registradas ou um erro HRESULT em caso de falha.

CAtlExeModuleT::Run

Esse método executa o código no módulo EXE para inicializar, executar o loop de mensagem e limpar.

HRESULT Run(int nShowCmd = SW_HIDE) throw();

Parâmetros

nShowCmd
Especifica como a janela deve ser mostrada. Esse parâmetro pode ser um dos valores discutidos na seção WinMain. Defaults to SW_HIDE.

Valor de retorno

Retornará S_OK se houver êxito ou um erro HRESULT, em caso de falha.

Comentários

Esse método pode ser substituído. No entanto, na prática, é melhor substituir CAtlExeModuleT::PreMessageLoop, CAtlExeModuleT::RunMessageLoop ou CAtlExeModuleT::PostMessageLoop.

CAtlExeModuleT::RunMessageLoop

Esse método executa o loop de mensagens.

void RunMessageLoop() throw();

Comentários

Esse método pode ser substituído para alterar o comportamento do loop de mensagem.

CAtlExeModuleT::UninitializeCom

Cancela a inicialização do COM.

static void UninitializeCom() throw();

Comentários

Por padrão, esse método simplesmente chama CoUninitialize e é chamado do destruidor. Substitua esse método se você substituir CAtlExeModuleT::InitializeCom.

CAtlExeModuleT::Unlock

Diminui a contagem de bloqueio do módulo.

LONG Unlock() throw();

Valor de retorno

Retorna um valor que pode ser útil para diagnóstico ou teste.

CAtlExeModuleT::WinMain

Esse método implementa o código necessário para executar um EXE.

int WinMain(int nShowCmd) throw();

Parâmetros

nShowCmd
Especifica como a janela deve ser mostrada. Esse parâmetro pode ser um dos valores discutidos na seção WinMain.

Valor de retorno

Retorna o valor de retorno do executável.

Comentários

Esse método pode ser substituído. Se substituir CAtlExeModuleT::PreMessageLoop, CAtlExeModuleT::PostMessageLoop ou CAtlExeModuleT::RunMessageLoop não fornecer flexibilidade suficiente, é possível substituir a WinMain função usando esse método.

Confira também

ATLDuck Sample
Classe CAtlModuleT
Classe CAtlDllModuleT
Visão geral da aula