Udostępnij za pośrednictwem


Klasa CAtlExeModuleT

Ta klasa reprezentuje moduł dla aplikacji.

Składnia

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

Parametry

T
Klasa pochodzi z klasy CAtlExeModuleT.

Członkowie

Konstruktory publiczne

Nazwa/nazwisko opis
CAtlExeModuleT::CAtlExeModuleT Konstruktor.
CAtlExeModuleT::~CAtlExeModuleT Destruktora.

Metody publiczne

Nazwa/nazwisko opis
CAtlExeModuleT::InitializeCom Inicjuje com.
CAtlExeModuleT::P arseCommandLine Analizuje wiersz polecenia i wykonuje rejestrację w razie potrzeby.
CAtlExeModuleT::P ostMessageLoop Ta metoda jest wywoływana natychmiast po zakończeniu pętli komunikatów.
CAtlExeModuleT::P reMessageLoop Ta metoda jest wywoływana bezpośrednio przed wprowadzeniem pętli komunikatów.
CAtlExeModuleT::RegisterClassObjects Rejestruje obiekt klasy.
CAtlExeModuleT::RevokeClassObjects Odwołuje obiekt klasy.
CAtlExeModuleT::Run Ta metoda wykonuje kod w module EXE, aby zainicjować, uruchomić pętlę komunikatów i wyczyścić.
CAtlExeModuleT::RunMessageLoop Ta metoda wykonuje pętlę komunikatu.
CAtlExeModuleT::UninitializeCom Uninitializes COM.
CAtlExeModuleT::Unlock Dekrementuje liczbę blokad modułu.
CAtlExeModuleT::WinMain Ta metoda implementuje kod wymagany do uruchomienia pliku EXE.

Publiczne elementy członkowskie danych

Nazwa/nazwisko opis
CAtlExeModuleT::m_bDelayShutdown Flaga wskazująca, że powinno nastąpić opóźnienie zamknięcia modułu.
CAtlExeModuleT::m_dwPause Wartość wstrzymania używana do zapewnienia, że wszystkie obiekty zostaną zwolnione przed zamknięciem.
CAtlExeModuleT::m_dwTimeOut Wartość limitu czasu używana do opóźnienia zwolnienia modułu.

Uwagi

CAtlExeModuleT reprezentuje moduł dla aplikacji (EXE) i zawiera kod, który obsługuje tworzenie pliku EXE, przetwarzanie wiersza polecenia, rejestrowanie obiektów klas, uruchamianie pętli komunikatów i czyszczenie po zakończeniu.

Ta klasa została zaprojektowana w celu zwiększenia wydajności, gdy obiekty COM na serwerze EXE są stale tworzone i niszczone. Po wydaniu ostatniego obiektu COM plik EXE czeka na czas określony przez element członkowski danych CAtlExeModuleT::m_dwTimeOut . Jeśli w tym okresie nie ma żadnych działań (czyli nie są tworzone żadne obiekty COM), proces zamykania jest inicjowany.

Element członkowski danych CAtlExeModuleT::m_bDelayShutdown jest flagą używaną do określenia, czy plik EXE powinien używać mechanizmu zdefiniowanego powyżej. Jeśli zostanie ustawiona wartość false, moduł zakończy się natychmiast.

Aby uzyskać więcej informacji na temat modułów w atl, zobacz ATL Module Classes (Klasy modułów ATL).

Hierarchia dziedziczenia

_ATL_MODULE

Catlmodule

CAtlModuleT

CAtlExeModuleT

Wymagania

Nagłówek: atlbase.h

CAtlExeModuleT::CAtlExeModuleT

Konstruktor.

CAtlExeModuleT() throw();

Uwagi

Jeśli nie można zainicjować modułu EXE, funkcja WinMain natychmiast powróci bez dalszego przetwarzania.

CAtlExeModuleT::~CAtlExeModuleT

Destruktora.

~CAtlExeModuleT() throw();

Uwagi

Zwalnia wszystkie przydzielone zasoby.

CAtlExeModuleT::InitializeCom

Inicjuje com.

static HRESULT InitializeCom() throw();

Wartość zwracana

Zwraca S_OK powodzenia lub błąd HRESULT w przypadku niepowodzenia.

Uwagi

Ta metoda jest wywoływana z konstruktora i może zostać zastąpiona w celu zainicjowania modelu COM w sposób inny niż domyślna implementacja. Domyślna implementacja wywołuje wywołania CoInitializeEx(NULL, COINIT_MULTITHREADED) lub CoInitialize(NULL) w zależności od konfiguracji projektu.

Zastąpienie tej metody zwykle wymaga zastąpienia CAtlExeModuleT::UninitializeCom.

CAtlExeModuleT::m_bDelayShutdown

Flaga wskazująca, że powinno nastąpić opóźnienie zamknięcia modułu.

bool m_bDelayShutdown;

Uwagi

Aby uzyskać szczegółowe informacje, zobacz Omówienie CAtlExeModuleT.

CAtlExeModuleT::m_dwPause

Wartość wstrzymania używana do zapewnienia, że wszystkie obiekty zostały zamknięte przed zamknięciem.

DWORD m_dwPause;

Uwagi

Zmień tę wartość po wywołaniu metody CAtlExeModuleT::InitializeCom , aby ustawić liczbę milisekund używanych jako wartość wstrzymania dla zamykania serwera. Wartość domyślna to 1000 milisekund.

CAtlExeModuleT::m_dwTimeOut

Wartość limitu czasu używana do opóźnienia zwolnienia modułu.

DWORD m_dwTimeOut;

Uwagi

Zmień tę wartość po wywołaniu klasy CAtlExeModuleT::InitializeCom , aby zdefiniować liczbę milisekund używanych jako wartość limitu czasu zamknięcia serwera. Wartość domyślna to 5000 milisekund. Aby uzyskać więcej informacji, zobacz Omówienie CAtlExeModuleT.

CAtlExeModuleT::P arseCommandLine

Analizuje wiersz polecenia i wykonuje rejestrację w razie potrzeby.

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

Parametry

lpCmdLine
Wiersz polecenia przekazany do aplikacji.

pnRetCode
HRESULT odpowiadający rejestracji (jeśli miało to miejsce).

Wartość zwracana

Zwraca wartość true, jeśli aplikacja powinna nadal działać, w przeciwnym razie wartość false.

Uwagi

Ta metoda jest wywoływana z CAtlExeModuleT::WinMain i może zostać zastąpiona do obsługi przełączników wiersza polecenia. Domyślna implementacja sprawdza /RegServer i /UnRegServer argumenty wiersza polecenia i wykonuje rejestrację lub wyrejestrowanie.

CAtlExeModuleT::P ostMessageLoop

Ta metoda jest wywoływana natychmiast po zakończeniu pętli komunikatów.

HRESULT PostMessageLoop() throw();

Wartość zwracana

Zwraca S_OK powodzenia lub błąd HRESULT w przypadku niepowodzenia.

Uwagi

Zastąpij tę metodę, aby wykonać niestandardowe oczyszczanie aplikacji. Domyślna implementacja wywołuje klasy CAtlExeModuleT::RevokeClassObjects.

CAtlExeModuleT::P reMessageLoop

Ta metoda jest wywoływana bezpośrednio przed wprowadzeniem pętli komunikatów.

HRESULT PreMessageLoop(int nShowCmd) throw();

Parametry

nShowCmd
Wartość przekazana jako parametr nShowCmd w systemie WinMain.

Wartość zwracana

Zwraca S_OK powodzenia lub błąd HRESULT w przypadku niepowodzenia.

Uwagi

Zastąpij tę metodę, aby dodać niestandardowy kod inicjowania dla aplikacji. Domyślna implementacja rejestruje obiekty klasy.

CAtlExeModuleT::RegisterClassObjects

Rejestruje obiekt klasy w obiekcie OLE, aby inne aplikacje mogły się z nim łączyć.

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

Parametry

dwClsContext
Określa kontekst, w którym ma zostać uruchomiony obiekt klasy. Możliwe wartości to CLSCTX_INPROC_SERVER, CLSCTX_INPROC_HANDLER lub CLSCTX_LOCAL_SERVER.

Dwflags
Określa typy połączeń z obiektem klasy. Możliwe wartości to REGCLS_SINGLEUSE, REGCLS_MULTIPLEUSE lub REGCLS_MULTI_SEPARATE.

Wartość zwracana

Zwraca S_OK powodzenia, S_FALSE jeśli nie było klas do zarejestrowania lub błąd HRESULT w przypadku niepowodzenia.

CAtlExeModuleT::RevokeClassObjects

Usuwa obiekt klasy.

HRESULT RevokeClassObjects() throw();

Wartość zwracana

Zwraca S_OK powodzenia, S_FALSE jeśli nie było klas do zarejestrowania lub błąd HRESULT w przypadku niepowodzenia.

CAtlExeModuleT::Run

Ta metoda wykonuje kod w module EXE, aby zainicjować, uruchomić pętlę komunikatów i wyczyścić.

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

Parametry

nShowCmd
Określa sposób wyświetlania okna. Ten parametr może być jedną z wartości omówionych w sekcji WinMain . Wartość domyślna to SW_HIDE.

Wartość zwracana

Zwraca S_OK powodzenia lub błąd HRESULT w przypadku niepowodzenia.

Uwagi

Tę metodę można zastąpić. Jednak w praktyce lepiej zastąpić CAtlExeModuleT::P reMessageLoop, CAtlExeModuleT::RunMessageLoop lub CAtlExeModuleT::P ostMessageLoop.

CAtlExeModuleT::RunMessageLoop

Ta metoda wykonuje pętlę komunikatu.

void RunMessageLoop() throw();

Uwagi

Tę metodę można zastąpić, aby zmienić zachowanie pętli komunikatów.

CAtlExeModuleT::UninitializeCom

Uninitializes COM.

static void UninitializeCom() throw();

Uwagi

Domyślnie ta metoda po prostu wywołuje metodę CoUninitialize i jest wywoływana z destruktora. Zastąpuj tę metodę, jeśli zastąpisz metodę CAtlExeModuleT::InitializeCom.

CAtlExeModuleT::Unlock

Dekrementuje liczbę blokad modułu.

LONG Unlock() throw();

Wartość zwracana

Zwraca wartość, która może być przydatna do diagnostyki lub testowania.

CAtlExeModuleT::WinMain

Ta metoda implementuje kod wymagany do uruchomienia pliku EXE.

int WinMain(int nShowCmd) throw();

Parametry

nShowCmd
Określa sposób wyświetlania okna. Ten parametr może być jedną z wartości omówionych w sekcji WinMain .

Wartość zwracana

Zwraca wartość zwracaną pliku wykonywalnego.

Uwagi

Tę metodę można zastąpić. Jeśli zastąpienie CAtlExeModuleT::P reMessageLoop, CAtlExeModuleT::P ostMessageLoop lub CAtlExeModuleT::RunMessageLoop nie zapewnia wystarczającej elastyczności, można zastąpić WinMain funkcję przy użyciu tej metody.

Zobacz też

Przykład ATLDuck
Klasa CAtlModuleT
Klasa CAtlDllModuleT
Omówienie klasy