Поделиться через


Макросы реестра

Эти макросы определяют полезные библиотеки типов и объекты реестра.

Имя Описание
_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 (регистратор).

См. также

Макросы