Класс CAtlExeModuleT
Этот класс представляет модуль для приложения.
Синтаксис
template <class T>
class ATL_NO_VTABLE CAtlExeModuleT : public CAtlModuleT<T>
Параметры
T
Класс, производный от CAtlExeModuleT
.
Участники
Открытые конструкторы
Имя | Описание |
---|---|
CAtlExeModuleT::CAtlExeModuleT | Конструктор. |
CAtlExeModuleT::~CAtlExeModuleT | Деструктор |
Открытые методы
Имя | Описание |
---|---|
CAtlExeModuleT::InitializeCom | Инициализирует COM. |
CAtlExeModuleT::P arseCommandLine | Анализирует командную строку и выполняет регистрацию при необходимости. |
CAtlExeModuleT::P ostMessageLoop | Этот метод вызывается сразу после завершения цикла сообщений. |
CAtlExeModuleT::P reMessageLoop | Этот метод вызывается непосредственно перед вводом цикла сообщений. |
CAtlExeModuleT::RegisterClassObjects | Регистрирует объект класса. |
CAtlExeModuleT::RevokeClassObjects | Отменяет объект класса. |
CAtlExeModuleT::Run | Этот метод выполняет код в модуле EXE для инициализации, запуска цикла сообщений и очистки. |
CAtlExeModuleT::RunMessageLoop | Этот метод выполняет цикл сообщений. |
CAtlExeModuleT::UninitializeCom | Неинициализирует COM. |
CAtlExeModuleT::Unlock | Уменьшает количество блокировок модуля. |
CAtlExeModuleT::WinMain | Этот метод реализует код, необходимый для запуска EXE. |
Открытые члены данных
Имя | Описание |
---|---|
CAtlExeModuleT::m_bDelayShutdown | Флаг, указывающий на задержку завершения работы модуля. |
CAtlExeModuleT::m_dwPause | Значение приостановки, используемое для обеспечения освобождения всех объектов перед завершением работы. |
CAtlExeModuleT::m_dwTimeOut | Значение времени ожидания, используемое для задержки выгрузки модуля. |
Замечания
CAtlExeModuleT
представляет модуль для приложения (EXE) и содержит код, который поддерживает создание EXE-файла, обработку командной строки, регистрацию объектов класса, выполнение цикла сообщений и очистку при выходе.
Этот класс предназначен для повышения производительности при постоянном создании и уничтожении COM-объектов на сервере EXE. После освобождения последнего com-объекта EXE ожидает длительности, указанной членом данных CAtlExeModuleT::m_dwTimeOut данных. Если в течение этого периода действия нет (т. е. не создаются com-объекты), запускается процесс завершения работы.
Элемент данных CAtlExeModuleT::m_bDelayShutdown используется для определения того, должен ли EXE использовать механизм, определенный выше. Если задано значение false, модуль завершится немедленно.
Дополнительные сведения о модулях в ATL см. в разделе "Классы модулей ATL".
Иерархия наследования
CAtlExeModuleT
Требования
Заголовок: atlbase.h
CAtlExeModuleT::CAtlExeModuleT
Конструктор.
CAtlExeModuleT() throw();
Замечания
Если модуль EXE не удалось инициализировать, WinMain немедленно возвращается без дальнейшей обработки.
CAtlExeModuleT::~CAtlExeModuleT
Деструктор
~CAtlExeModuleT() throw();
Замечания
Освобождает все выделенные ресурсы.
CAtlExeModuleT::InitializeCom
Инициализирует COM.
static HRESULT InitializeCom() throw();
Возвращаемое значение
Возвращает S_OK при успешном выполнении или ошибку HRESULT при сбое.
Замечания
Этот метод вызывается из конструктора и может быть переопределен для инициализации COM способом, отличным от реализации по умолчанию. Реализация по умолчанию вызывает CoInitializeEx(NULL, COINIT_MULTITHREADED)
или CoInitialize(NULL)
зависит от конфигурации проекта.
Для переопределения этого метода обычно требуется переопределение CAtlExeModuleT::UninitializeCom.
CAtlExeModuleT::m_bDelayShutdown
Флаг, указывающий на задержку завершения работы модуля.
bool m_bDelayShutdown;
Замечания
Дополнительные сведения см. в обзоре CAtlExeModuleT.
CAtlExeModuleT::m_dwPause
Значение приостановки, используемое для обеспечения того, чтобы все объекты исчезли перед завершением работы.
DWORD m_dwPause;
Замечания
Измените это значение после вызова CAtlExeModuleT::InitializeCom , чтобы задать количество миллисекундах, используемых в качестве значения приостановки для завершения работы сервера. Значение по умолчанию — 1000 миллисекунда.
CAtlExeModuleT::m_dwTimeOut
Значение времени ожидания, используемое для задержки выгрузки модуля.
DWORD m_dwTimeOut;
Замечания
Измените это значение после вызова CAtlExeModuleT::InitializeCom , чтобы определить количество миллисекундах, используемых в качестве значения времени ожидания для завершения работы сервера. Значение по умолчанию — 5000 миллисекунд. Дополнительные сведения см. в обзоре CAtlExeModuleT.
CAtlExeModuleT::P arseCommandLine
Анализирует командную строку и выполняет регистрацию при необходимости.
bool ParseCommandLine(LPCTSTR lpCmdLine, HRESULT* pnRetCode) throw();
Параметры
lpCmdLine
Командная строка, переданная приложению.
pnRetCode
HRESULT, соответствующий регистрации (если это произошло).
Возвращаемое значение
Возвращает значение true, если приложение должно продолжать работать, в противном случае — значение false.
Замечания
Этот метод вызывается из CAtlExeModuleT::WinMain и может быть переопределен для обработки коммутаторов командной строки. Реализация по умолчанию проверяет аргументы командной строки /RegServer и /UnRegServer и выполняет регистрацию или отмену регистрации.
CAtlExeModuleT::P ostMessageLoop
Этот метод вызывается сразу после завершения цикла сообщений.
HRESULT PostMessageLoop() throw();
Возвращаемое значение
Возвращает S_OK при успешном выполнении или ошибку HRESULT при сбое.
Замечания
Переопределите этот метод, чтобы выполнить очистку пользовательского приложения. Реализация по умолчанию вызывает CAtlExeModuleT::RevokeClassObjects.
CAtlExeModuleT::P reMessageLoop
Этот метод вызывается непосредственно перед вводом цикла сообщений.
HRESULT PreMessageLoop(int nShowCmd) throw();
Параметры
nShowCmd
Значение, переданное в качестве параметра nShowCmd в WinMain.
Возвращаемое значение
Возвращает S_OK при успешном выполнении или ошибку HRESULT при сбое.
Замечания
Переопределите этот метод, чтобы добавить пользовательский код инициализации для приложения. Реализация по умолчанию регистрирует объекты класса.
CAtlExeModuleT::RegisterClassObjects
Регистрирует объект класса с помощью OLE, чтобы к нему могли подключаться другие приложения.
HRESULT RegisterClassObjects(DWORD dwClsContext, DWORD dwFlags) throw();
Параметры
dwClsContext
Указывает контекст, в котором должен выполняться объект класса. Возможные значения: CLSCTX_INPROC_SERVER, CLSCTX_INPROC_HANDLER или CLSCTX_LOCAL_SERVER.
dwFlags
Определяет типы подключений к объекту класса. Возможные значения: REGCLS_SINGLEUSE, REGCLS_MULTIPLEUSE или REGCLS_MULTI_SEPARATE.
Возвращаемое значение
Возвращает S_OK при успешном выполнении, S_FALSE, если не было классов для регистрации или ошибки HRESULT при сбое.
CAtlExeModuleT::RevokeClassObjects
Удаляет объект класса.
HRESULT RevokeClassObjects() throw();
Возвращаемое значение
Возвращает S_OK при успешном выполнении, S_FALSE, если не было классов для регистрации или ошибки HRESULT при сбое.
CAtlExeModuleT::Run
Этот метод выполняет код в модуле EXE для инициализации, запуска цикла сообщений и очистки.
HRESULT Run(int nShowCmd = SW_HIDE) throw();
Параметры
nShowCmd
Указывает способ отображения окна. Этот параметр может быть одним из значений, рассмотренных в разделе WinMain . По умолчанию SW_HIDE.
Возвращаемое значение
Возвращает S_OK при успешном выполнении или ошибку HRESULT при сбое.
Замечания
Этот метод можно переопределить. Однако на практике лучше переопределить CAtlExeModuleT::P reMessageLoop, CAtlExeModuleT::RunMessageLoop или CAtlExeModuleT::P ostMessageLoop.
CAtlExeModuleT::RunMessageLoop
Этот метод выполняет цикл сообщений.
void RunMessageLoop() throw();
Замечания
Этот метод можно переопределить, чтобы изменить поведение цикла сообщений.
CAtlExeModuleT::UninitializeCom
Неинициализирует COM.
static void UninitializeCom() throw();
Замечания
По умолчанию этот метод просто вызывает CoUninitialize и вызывается из деструктора. Переопределите этот метод, если переопределить CAtlExeModuleT::InitializeCom.
CAtlExeModuleT::Unlock
Уменьшает количество блокировок модуля.
LONG Unlock() throw();
Возвращаемое значение
Возвращает значение, которое может быть полезно для диагностика или тестирования.
CAtlExeModuleT::WinMain
Этот метод реализует код, необходимый для запуска EXE.
int WinMain(int nShowCmd) throw();
Параметры
nShowCmd
Указывает способ отображения окна. Этот параметр может быть одним из значений, рассмотренных в разделе WinMain .
Возвращаемое значение
Возвращает возвращаемое значение исполняемого файла.
Замечания
Этот метод можно переопределить. Если переопределение CAtlExeModuleT::P reMessageLoop, CAtlExeModuleT::P ostMessageLoop или CAtlExeModuleT::RunMessageLoop не обеспечивает достаточной гибкости, можно переопределить WinMain
функцию с помощью этого метода.
См. также
Пример ATLDuck
Класс CAtlModuleT
Класс CAtlDllModuleT
Общие сведения о классе