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
.
Elementy członkowskie
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
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