Макросы реестра
Эти макросы определяют полезные библиотеки типов и объекты реестра.
Имя | Описание |
---|---|
_ATL_STATIC_REGISTRY | Указывает, что код регистрации объекта должен находиться в объекте, чтобы избежать зависимости от ATL.DLL. |
DECLARE_LIBID | Предоставляет способ получения libid библиотеки типов ATL. |
DECLARE_NO_REGISTRY | Избегает регистрации ATL по умолчанию. |
DECLARE_REGISTRY | Вводит или удаляет запись основного объекта в системном реестре. |
DECLARE_REGISTRY_APPID_RESOURCEID | Указывает сведения, необходимые для автоматической регистрации идентификатора приложения. |
DECLARE_REGISTRY_RESOURCE | Находит именованный ресурс и запускает скрипт реестра в нем. |
DECLARE_REGISTRY_RESOURCEID | Находит ресурс, определяемый идентификатором, и запускает скрипт реестра в нем. |
Требования
Заголовок: atlcom.h
_ATL_STATIC_REGISTRY
Символ, указывающий, что код регистрации объекта должен находиться в объекте, чтобы избежать зависимости от ATL.DLL.
#define _ATL_STATIC_REGISTRY
Замечания
При определении ATL_STATIC_REGISTRY следует использовать следующий код:
#ifdef _ATL_STATIC_REGISTRY
#include <statreg.h>
#endif
DECLARE_LIBID
Предоставляет способ получения libid библиотеки типов ATL.
DECLARE_LIBID( libid )
Параметры
libid
GUID библиотеки типов.
Замечания
Используйте DECLARE_LIBID в производном CAtlModuleT
классе.
Пример
Проекты ATL, созданные мастером, не связаны с атрибутами, будут иметь пример использования этого макроса.
DECLARE_NO_REGISTRY
Используйте DECLARE_NO_REGISTRY, если вы хотите избежать регистрации ATL по умолчанию для класса, в котором отображается этот макрос.
DECLARE_NO_REGISTRY()
DECLARE_REGISTRY
Вводит регистрацию стандартного класса в системный реестр или удаляет его из системного реестра.
DECLARE_REGISTRY(
class,
pid,
vpid,
nid,
flags )
Параметры
class
[in] Включен для обратной совместимости.
pid
[in] LPCTSTR, который является идентификатором программы для конкретной версии.
vpid
[in] LPCTSTR, который является идентификатором программы, независимой от версии.
nid
[in] UINT, который является индексом строки ресурса в реестре для использования в качестве описания программы.
flags
[in] DWORD, содержащий модель потоков программы в реестре. Должно быть одним из следующих значений: THREADFLAGS_APARTMENT, THREADFLAGS_BOTH или AUTPRXFLAG.
Замечания
Стандартная регистрация состоит из CLSID, идентификатора программы, идентификатора независимой от версии программы, строки описания и модели потока.
При создании объекта или элемента управления с помощью мастера добавления классов ATL мастер автоматически реализует поддержку реестра на основе скриптов и добавляет макрос DECLARE_REGISTRY_RESOURCEID в файлы. Если вы не хотите поддерживать реестр на основе скриптов, необходимо заменить этот макрос DECLARE_REGISTRY. DECLARE_REGISTRY в реестр вставляет только пять основных разделов, описанных выше. Необходимо вручную написать код, чтобы вставить другие разделы в реестр.
DECLARE_REGISTRY_APPID_RESOURCEID
Указывает сведения, необходимые для автоматической регистрации идентификатора приложения.
DECLARE_REGISTRY_APPID_RESOURCEID(
resid,
appid )
Параметры
живут
Идентификатор ресурса файла rgs, содержащего сведения об идентификаторе приложения.
appid
Идентификатор GUID.
Замечания
Используйте DECLARE_REGISTRY_APPID_RESOURCEID в производном CAtlModuleT
классе.
Пример
Классы, добавленные в проекты ATL с помощью мастера добавления кода класса, будут иметь пример использования этого макроса.
DECLARE_REGISTRY_RESOURCE
Возвращает именованный ресурс, содержащий файл реестра, и запускает скрипт, чтобы ввести объекты в системный реестр или удалить их из системного реестра.
DECLARE_REGISTRY_RESOURCE( x )
Параметры
x
[in] Строковый идентификатор ресурса.
Замечания
При создании объекта или элемента управления с помощью мастера проектов ATL мастер автоматически реализует поддержку реестра на основе скриптов и добавляет макрос DECLARE_REGISTRY_RESOURCEID, аналогичный DECLARE_REGISTRY_RESOURCE файлам.
Вы можете статически связаться с компонентом реестра ATL (регистратором) для оптимизированного доступа к реестру. Чтобы статически связаться с кодом регистратора, добавьте следующую строку в файл pch.h (stdafx.h в Visual Studio 2017 и более ранних версиях):
#define _ATL_STATIC_REGISTRY
Если вы хотите, чтобы ATL заменял значения во время выполнения, не указывайте макрос DECLARE_REGISTRY_RESOURCE или DECLARE_REGISTRY_RESOURCEID. Вместо этого создайте массив структур, где каждая запись содержит заполнитель переменной _ATL_REGMAP_ENTRIES
, в паре со значением для замены заполнителя во время выполнения. Затем вызовите CAtlModule::UpdateRegistryFromResourceD или CAtlModule::UpdateRegistryFromResourceS, передав массив. При этом все значения замены в структурах добавляются на _ATL_REGMAP_ENTRIES
карту замены регистратора.
Дополнительные сведения о заменяемых параметрах и скриптах см. в статье Компонент реестра ATL (регистратор).
DECLARE_REGISTRY_RESOURCEID
То же, что и DECLARE_REGISTRY_RESOURCE , за исключением того, что он использует созданный мастером UINT для идентификации ресурса, а не строкового имени.
DECLARE_REGISTRY_RESOURCEID( x )
Параметры
x
[in] Созданный мастером идентификатор ресурса.
Замечания
При создании объекта или элемента управления с помощью мастера проектов ATL мастер автоматически реализует поддержку реестра на основе скриптов и добавляет макрос DECLARE_REGISTRY_RESOURCEID в файлы.
Вы можете статически связаться с компонентом реестра ATL (регистратором) для оптимизированного доступа к реестру. Чтобы статически связаться с кодом регистратора, добавьте следующую строку в файл stdafx.h (pch.h в Visual Studio 2019 и более поздних версиях):
#define _ATL_STATIC_REGISTRY
Если вы хотите, чтобы ATL заменял значения во время выполнения, не указывайте макрос DECLARE_REGISTRY_RESOURCE или DECLARE_REGISTRY_RESOURCEID. Вместо этого создайте массив структур, где каждая запись содержит заполнитель переменной _ATL_REGMAP_ENTRIES
, в паре со значением для замены заполнителя во время выполнения. Затем вызовите CAtlModule::UpdateRegistryFromResourceD или CAtlModule::UpdateRegistryFromResourceS, передав массив. При этом все значения замены в структурах добавляются на _ATL_REGMAP_ENTRIES
карту замены регистратора.
Дополнительные сведения о заменяемых параметрах и скриптах см. в статье Компонент реестра ATL (регистратор).