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