Classe CAtlExeModuleT
Questa classe rappresenta il modulo per un'applicazione.
Sintassi
template <class T>
class ATL_NO_VTABLE CAtlExeModuleT : public CAtlModuleT<T>
Parametri
T
Classe derivata da CAtlExeModuleT
.
Membri
Costruttori pubblici
Nome | Descrizione |
---|---|
CAtlExeModuleT::CAtlExeModuleT | Costruttore. |
CAtlExeModuleT::~CAtlExeModuleT | Distruttore. |
Metodi pubblici
Nome | Descrizione |
---|---|
CAtlExeModuleT::InitializeCom | Inizializza COM. |
CAtlExeModuleT::P arseCommandLine | Analizza la riga di comando ed esegue la registrazione, se necessario. |
CAtlExeModuleT::P ostMessageLoop | Questo metodo viene chiamato immediatamente dopo l'uscita del ciclo di messaggi. |
CAtlExeModuleT::P reMessageLoop | Questo metodo viene chiamato immediatamente prima di immettere il ciclo di messaggi. |
CAtlExeModuleT::RegisterClassObjects | Registra l'oggetto classe. |
CAtlExeModuleT::RevokeClassObjects | Revoca l'oggetto classe. |
CAtlExeModuleT::Run | Questo metodo esegue il codice nel modulo EXE per inizializzare, eseguire il ciclo di messaggi e pulire. |
CAtlExeModuleT::RunMessageLoop | Questo metodo esegue il ciclo di messaggi. |
CAtlExeModuleT::UninitializeCom | Annulla l'inizializzazione di COM. |
CAtlExeModuleT::Unlock | Decrementa il conteggio dei blocchi del modulo. |
CAtlExeModuleT::WinMain | Questo metodo implementa il codice necessario per eseguire un file EXE. |
Membri dati pubblici
Nome | Descrizione |
---|---|
CAtlExeModuleT::m_bDelayShutdown | Flag che indica che deve essere presente un ritardo di arresto del modulo. |
CAtlExeModuleT::m_dwPause | Valore di pausa usato per assicurarsi che tutti gli oggetti vengano rilasciati prima dell'arresto. |
CAtlExeModuleT::m_dwTimeOut | Valore di timeout usato per ritardare lo scaricamento del modulo. |
Osservazioni:
CAtlExeModuleT
rappresenta il modulo per un'applicazione (EXE) e contiene codice che supporta la creazione di un file EXE, l'elaborazione della riga di comando, la registrazione di oggetti classe, l'esecuzione del ciclo di messaggi e la pulizia all'uscita.
Questa classe è progettata per migliorare le prestazioni quando gli oggetti COM nel server EXE vengono creati ed eliminati continuamente. Dopo il rilascio dell'ultimo oggetto COM, il file EXE attende una durata specificata dal membro dati CAtlExeModuleT::m_dwTimeOut . Se non è presente alcuna attività durante questo periodo (ovvero non vengono creati oggetti COM), viene avviato il processo di arresto.
Il membro dati CAtlExeModuleT::m_bDelayShutdown è un flag usato per determinare se l'exe deve usare il meccanismo definito in precedenza. Se è impostato su false, il modulo terminerà immediatamente.
Per altre informazioni sui moduli in ATL, vedere Classi di moduli ATL.
Gerarchia di ereditarietà
CAtlExeModuleT
Requisiti
Intestazione: atlbase.h
CAtlExeModuleT::CAtlExeModuleT
Costruttore.
CAtlExeModuleT() throw();
Osservazioni:
Se non è stato possibile inizializzare il modulo EXE, WinMain restituirà immediatamente senza ulteriori elaborazioni.
CAtlExeModuleT::~CAtlExeModuleT
Distruttore.
~CAtlExeModuleT() throw();
Osservazioni:
Libera tutte le risorse allocate.
CAtlExeModuleT::InitializeCom
Inizializza COM.
static HRESULT InitializeCom() throw();
Valore restituito
Restituisce S_OK in caso di esito positivo o errore HRESULT in caso di errore.
Osservazioni:
Questo metodo viene chiamato dal costruttore e può essere sottoposto a override per inizializzare COM in modo diverso dall'implementazione predefinita. L'implementazione predefinita chiama CoInitializeEx(NULL, COINIT_MULTITHREADED)
o CoInitialize(NULL)
dipende dalla configurazione del progetto.
L'override di questo metodo richiede in genere l'override di CAtlExeModuleT::UninitializeCom.
CAtlExeModuleT::m_bDelayShutdown
Flag che indica che deve essere presente un ritardo di arresto del modulo.
bool m_bDelayShutdown;
Osservazioni:
Per informazioni dettagliate, vedere Panoramica di CAtlExeModuleT.
CAtlExeModuleT::m_dwPause
Valore di pausa usato per assicurarsi che tutti gli oggetti siano passati prima dell'arresto.
DWORD m_dwPause;
Osservazioni:
Modificare questo valore dopo aver chiamato CAtlExeModuleT::InitializeCom per impostare il numero di millisecondi usati come valore di pausa per arrestare il server. Il valore predefinito è 1.000 millisecondi.
CAtlExeModuleT::m_dwTimeOut
Valore di timeout usato per ritardare lo scaricamento del modulo.
DWORD m_dwTimeOut;
Osservazioni:
Modificare questo valore dopo aver chiamato CAtlExeModuleT::InitializeCom per definire il numero di millisecondi usati come valore di timeout per arrestare il server. Il valore predefinito è 5000 millisecondi. Per altri dettagli, vedere Panoramica di CAtlExeModuleT .
CAtlExeModuleT::P arseCommandLine
Analizza la riga di comando ed esegue la registrazione, se necessario.
bool ParseCommandLine(LPCTSTR lpCmdLine, HRESULT* pnRetCode) throw();
Parametri
lpCmdLine
Riga di comando passata all'applicazione.
pnRetCode
HRESULT corrispondente alla registrazione (se è stata eseguita).
Valore restituito
Restituisce true se l'applicazione deve continuare a essere eseguita; in caso contrario, false.
Osservazioni:
Questo metodo viene chiamato da CAtlExeModuleT::WinMain e può essere sottoposto a override per gestire le opzioni della riga di comando. L'implementazione predefinita controlla gli argomenti della riga di comando /RegServer e /UnRegServer ed esegue la registrazione o l'annullamento della registrazione.
CAtlExeModuleT::P ostMessageLoop
Questo metodo viene chiamato immediatamente dopo l'uscita del ciclo di messaggi.
HRESULT PostMessageLoop() throw();
Valore restituito
Restituisce S_OK in caso di esito positivo o errore HRESULT in caso di errore.
Osservazioni:
Eseguire l'override di questo metodo per eseguire la pulizia personalizzata dell'applicazione. L'implementazione predefinita chiama CAtlExeModuleT::RevokeClassObjects.
CAtlExeModuleT::P reMessageLoop
Questo metodo viene chiamato immediatamente prima di immettere il ciclo di messaggi.
HRESULT PreMessageLoop(int nShowCmd) throw();
Parametri
nShowCmd
Valore passato come parametro nShowCmd in WinMain.
Valore restituito
Restituisce S_OK in caso di esito positivo o errore HRESULT in caso di errore.
Osservazioni:
Eseguire l'override di questo metodo per aggiungere codice di inizializzazione personalizzato per l'applicazione. L'implementazione predefinita registra gli oggetti classe.
CAtlExeModuleT::RegisterClassObjects
Registra l'oggetto classe con OLE in modo che altre applicazioni possano connettersi.
HRESULT RegisterClassObjects(DWORD dwClsContext, DWORD dwFlags) throw();
Parametri
dwClsContext
Specifica il contesto in cui deve essere eseguito l'oggetto classe. I valori possibili sono CLSCTX_INPROC_SERVER, CLSCTX_INPROC_HANDLER o CLSCTX_LOCAL_SERVER.
dwFlags
Determina i tipi di connessione all'oggetto classe. I valori possibili sono REGCLS_SINGLEUSE, REGCLS_MULTIPLEUSE o REGCLS_MULTI_SEPARATE.
Valore restituito
Restituisce S_OK in caso di esito positivo, S_FALSE se non sono presenti classi da registrare o un errore HRESULT in caso di errore.
CAtlExeModuleT::RevokeClassObjects
Rimuove l'oggetto classe.
HRESULT RevokeClassObjects() throw();
Valore restituito
Restituisce S_OK in caso di esito positivo, S_FALSE se non sono presenti classi da registrare o un errore HRESULT in caso di errore.
CAtlExeModuleT::Run
Questo metodo esegue il codice nel modulo EXE per inizializzare, eseguire il ciclo di messaggi e pulire.
HRESULT Run(int nShowCmd = SW_HIDE) throw();
Parametri
nShowCmd
Specifica la modalità di visualizzazione della finestra. Questo parametro può essere uno dei valori descritti nella sezione WinMain . Il valore predefinito è SW_HIDE.
Valore restituito
Restituisce S_OK in caso di esito positivo o errore HRESULT in caso di errore.
Osservazioni:
Questo metodo può essere sottoposto a override. Tuttavia, in pratica è preferibile eseguire l'override di CAtlExeModuleT::P reMessageLoop, CAtlExeModuleT::RunMessageLoop o CAtlExeModuleT::P ostMessageLoop .
CAtlExeModuleT::RunMessageLoop
Questo metodo esegue il ciclo di messaggi.
void RunMessageLoop() throw();
Osservazioni:
Questo metodo può essere sottoposto a override per modificare il comportamento del ciclo di messaggi.
CAtlExeModuleT::UninitializeCom
Annulla l'inizializzazione di COM.
static void UninitializeCom() throw();
Osservazioni:
Per impostazione predefinita, questo metodo chiama semplicemente CoUninitialize e viene chiamato dal distruttore. Eseguire l'override di questo metodo se si esegue l'override di CAtlExeModuleT::InitializeCom.
CAtlExeModuleT::Unlock
Decrementa il conteggio dei blocchi del modulo.
LONG Unlock() throw();
Valore restituito
Restituisce un valore che può essere utile per la diagnostica o il test.
CAtlExeModuleT::WinMain
Questo metodo implementa il codice necessario per eseguire un file EXE.
int WinMain(int nShowCmd) throw();
Parametri
nShowCmd
Specifica la modalità di visualizzazione della finestra. Questo parametro può essere uno dei valori descritti nella sezione WinMain .
Valore restituito
Restituisce il valore restituito dell'eseguibile.
Osservazioni:
Questo metodo può essere sottoposto a override. Se si esegue l'override di CAtlExeModuleT::P reMessageLoop, CAtlExeModuleT::P ostMessageLoop o CAtlExeModuleT::RunMessageLoop non offre una flessibilità sufficiente, è possibile eseguire l'override della WinMain
funzione usando questo metodo.
Vedi anche
Esempio ATLDuck
Classe CAtlModuleT
Classe CAtlDllModuleT
Cenni preliminari sulla classe