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


Класс COleObjectFactory

Реализует фабрику класса OLE, которая создает OLE-объекты, такие как серверы, объекты автоматизации и документы.

Синтаксис

class COleObjectFactory : public CCmdTarget

Участники

Открытые конструкторы

Имя Описание
COleObjectFactory::COleObjectFactory Формирует объект COleObjectFactory.

Открытые методы

Имя Описание
COleObjectFactory::GetClassID Возвращает идентификатор класса OLE для объектов, которые создает фабрика.
COleObjectFactory::IsLicenseValid Определяет, действительна ли лицензия элемента управления.
COleObjectFactory::IsRegistered Указывает, зарегистрирована ли фабрика объектов в библиотеках DLL системы OLE.
COleObjectFactory::Register Регистрирует эту фабрику объектов с помощью библиотек DLL системы OLE.
COleObjectFactory::RegisterAll Регистрирует все фабрики объектов приложения с помощью библиотек DLL системы OLE.
COleObjectFactory::Revoke Отменяет регистрацию фабрики объектов в библиотеках DLL системы OLE.
COleObjectFactory::RevokeAll Отменяет регистрацию фабрик объектов приложения с помощью библиотек DLL системы OLE.
COleObjectFactory::UnregisterAll Отменяет регистрацию всех фабрик объектов приложения.
COleObjectFactory::UpdateRegistry Регистрирует эту фабрику объектов в системный реестр OLE.
COleObjectFactory::UpdateRegistryAll Регистрирует все фабрики объектов приложения с помощью системного реестра OLE.

Защищенные методы

Имя Описание
COleObjectFactory::GetLicenseKey Запрашивает уникальный ключ из библиотеки DLL элемента управления.
COleObjectFactory::OnCreateObject Вызывается платформой для создания нового объекта типа фабрики.
COleObjectFactory::VerifyLicenseKey Проверяет, соответствует ли ключ, внедренный в элемент управления, ключ, внедренный в контейнер.
COleObjectFactory::VerifyUserLicense Проверяет, лицензируется ли элемент управления для использования во время разработки.

Замечания

Класс COleObjectFactory имеет функции-члены для выполнения следующих функций:

  • Управление регистрацией объектов.

  • Обновление системного регистра OLE, а также регистрация во время выполнения, которая сообщает OLE, что объекты запущены и готовы к получению сообщений.

  • Принудительное лицензирование путем ограничения использования элемента управления лицензированным разработчикам во время разработки и лицензированного приложения во время выполнения.

  • Регистрация фабрик объектов управления в реестре системы OLE.

Дополнительные сведения о создании объектов см. в статьях " Объекты данных" и "Источники данных" (OLE) и "Объекты данных" и "Источники данных": создание и уничтожение. Дополнительные сведения о регистрации см. в статье "Регистрация".

Иерархия наследования

CObject

CCmdTarget

COleObjectFactory

Requirements

Заголовок: afxdisp.h

COleObjectFactory::COleObjectFactory

COleObjectFactory Создает объект, инициализирует его как незарегистрированную фабрику объектов и добавляет его в список фабрик.

COleObjectFactory(
    REFCLSID clsid,
    CRuntimeClass* pRuntimeClass,
    BOOL bMultiInstance,
    LPCTSTR lpszProgID);

COleObjectFactory(
    REFCLSID clsid,
    CRuntimeClass* pRuntimeClass,
    BOOL bMultiInstance,
    int nFlags,
    LPCTSTR lpszProgID);

Параметры

Clsid
Ссылка на идентификатор класса OLE, представленный фабрикой объектов.

pRuntimeClass
Указатель на класс времени выполнения объектов C++ этой фабрики может создать.

bMultiInstance
Указывает, может ли один экземпляр приложения поддерживать несколько экземпляров. Если значение TRUE, для каждого запроса для создания объекта запускается несколько экземпляров приложения.

nFlags
Содержит один или несколько следующих флагов:

  • afxRegDefault Задает модель потоков для ThreadingModel=Apartment.

  • afxRegInsertable Позволяет элементу управления отображаться в диалоговом окне "Вставка объекта " для объектов OLE.

  • afxRegApartmentThreading Задает модель потоков в реестре в ThreadingModel=Apartment.

  • afxRegFreeThreading Задает модель потоков в реестре в ThreadingModel=Free.

    Вы можете объединить два флага afxRegApartmentThreading и afxRegFreeThreading задать ThreadingModel=Оба. Дополнительные сведения о регистрации моделей потоков см . в разделе InprocServer32 в пакете SDK для Windows.

lpszProgID
Указатель на строку, содержащую словесный идентификатор программы, например Microsoft Excel.

Замечания

Однако для использования объекта необходимо зарегистрировать его.

Дополнительные сведения см. в разделе CLSID Key in the Windows SDK.

COleObjectFactory::GetClassID

Возвращает ссылку на идентификатор класса OLE, представленный этой фабрикой.

REFCLSID GetClassID() const;

Возвращаемое значение

Ссылка на идентификатор класса OLE, представленный этой фабрикой.

Замечания

Дополнительные сведения см. в разделе CLSID Key in the Windows SDK.

COleObjectFactory::GetLicenseKey

Запрашивает уникальный ключ лицензии из библиотеки DLL элемента управления и сохраняет его в BSTR, на который указывает pbstrKey.

virtual BOOL GetLicenseKey(
    DWORD dwReserved,
    BSTR* pbstrKey);

Параметры

dwReserved
Зарезервировано для последующего использования.

pbstrKey
Указатель на BSTR, который будет хранить ключ лицензии.

Возвращаемое значение

Ненулевое значение, если строка ключа лицензии не имеет значения NULL; в противном случае — 0.

Замечания

Реализация этой функции по умолчанию возвращает значение 0 и не сохраняет ничего в BSTR. Если вы используете MFC ActiveX ControlWizard для создания проекта, ControlWizard предоставляет переопределение, которое извлекает ключ лицензии элемента управления.

COleObjectFactory::IsLicenseValid

Определяет, действительна ли лицензия элемента управления.

BOOL IsLicenseValid();

Возвращаемое значение

Значение TRUE, если выполнено успешно; в противном случае значение false.

COleObjectFactory::IsRegistered

Возвращает ненулевое значение, если фабрика зарегистрирована в библиотеках DLL системы OLE.

virtual BOOL IsRegistered() const;

Возвращаемое значение

Ненулевое значение, если фабрика зарегистрирована; в противном случае — 0.

COleObjectFactory::OnCreateObject

Вызывается платформой для создания нового объекта.

virtual CCmdTarget* OnCreateObject();

Возвращаемое значение

Указатель на созданный объект. При сбое может возникать исключение памяти.

Замечания

Переопределите эту функцию, чтобы создать объект из другого объекта, отличного от CRuntimeClass , переданного конструктору.

COleObjectFactory::Register

Регистрирует эту фабрику объектов с помощью библиотек DLL системы OLE.

virtual BOOL Register();

Возвращаемое значение

Ненулевое значение, если фабрика успешно зарегистрирована; в противном случае — 0.

Замечания

Эта функция обычно вызывается CWinApp::InitInstance при запуске приложения.

COleObjectFactory::RegisterAll

Регистрирует все фабрики объектов приложения с помощью библиотек DLL системы OLE.

static BOOL PASCAL RegisterAll();

Возвращаемое значение

Ненулевое значение, если заводы успешно зарегистрированы; в противном случае — 0.

Замечания

Эта функция обычно вызывается CWinApp::InitInstance при запуске приложения.

COleObjectFactory::Revoke

Отменяет регистрацию фабрики объектов в библиотеках DLL системы OLE.

void Revoke();

Замечания

Платформа автоматически вызывает эту функцию до завершения работы приложения. При необходимости вызовите его из переопределения CWinApp::ExitInstance.

COleObjectFactory::RevokeAll

Отменяет все регистрации фабрик объектов приложения с помощью библиотек DLL системы OLE.

static void PASCAL RevokeAll();

Замечания

Платформа автоматически вызывает эту функцию до завершения работы приложения. При необходимости вызовите его из переопределения CWinApp::ExitInstance.

COleObjectFactory::UnregisterAll

Отменяет регистрацию всех фабрик объектов приложения.

static BOOL PASCAL UnregisterAll();

Возвращаемое значение

Значение TRUE, если успешно; в противном случае — FALSE.

COleObjectFactory::UpdateRegistry

Регистрирует все фабрики объектов приложения с помощью системного реестра OLE.

void UpdateRegistry(LPCTSTR lpszProgID = NULL);
virtual BOOL UpdateRegistry(BOOL bRegister);

Параметры

lpszProgID
Указатель на строку, содержащую удобочитаемый пользователем идентификатор программы, например Excel.Document.5.

bRegister
Определяет, должна ли быть зарегистрирована фабрика объектов класса элемента управления.

Замечания

Краткие обсуждения двух форм для этой функции:

  • UpdateRegistry(lpszProgID) регистрирует эту фабрику объектов в системном реестре OLE. Эта функция обычно вызывается CWinApp::InitInstance при запуске приложения.

  • UpdateRegistry(bRegister) Эта форма функции переопределяется. Если bRegister имеет значение TRUE, эта функция регистрирует класс управления в системный реестр. В противном случае он отменяет регистрацию класса.

    Если вы используете MFC ActiveX ControlWizard для создания проекта, ControlWizard предоставляет переопределение для этой чистой виртуальной функции.

COleObjectFactory::UpdateRegistryAll

Регистрирует все фабрики объектов приложения с помощью системного реестра OLE.

static BOOL PASCAL UpdateRegistryAll(BOOL bRegister = TRUE);

Параметры

bRegister
Определяет, должна ли быть зарегистрирована фабрика объектов класса элемента управления.

Возвращаемое значение

Ненулевое значение, если фабрики успешно обновлены; в противном случае — 0.

Замечания

Эта функция обычно вызывается CWinApp::InitInstance при запуске приложения.

COleObjectFactory::VerifyLicenseKey

Проверяет, лицензирован ли контейнер для использования элемента управления OLE.

virtual BOOL VerifyLicenseKey(BSTR bstrKey);

Параметры

bstrKey
BSTR, сохраняющий версию строки лицензии контейнера.

Возвращаемое значение

Ненулевое значение, если лицензия во время выполнения действительна; в противном случае — 0.

Замечания

Версия по умолчанию вызывает GetLicenseKey , чтобы получить копию строки лицензии элемента управления и сравнить ее со строкой в bstrKey. Если две строки совпадают, функция возвращает ненулевое значение; в противном случае возвращается значение 0.

Эту функцию можно переопределить, чтобы обеспечить настраиваемую проверку лицензии.

Функция VerifyUserLicense проверяет лицензию времени разработки.

COleObjectFactory::VerifyUserLicense

Проверяет лицензию на время разработки для элемента управления OLE.

virtual BOOL VerifyUserLicense();

Возвращаемое значение

Ненулевое значение, если лицензия времени разработки действительна; в противном случае — 0.

См. также

Класс CCmdTarget
Диаграмма иерархии
Класс COleTemplateServer