Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Замечание
Библиотека активных шаблонов (ATL) продолжает поддерживаться. Однако мы больше не добавляем функции или обновляем документацию.
Этот класс представляет модуль для приложения.
Синтаксис
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
Общие сведения о классе