Фабрики классов и прослушивание
Чтобы создать экземпляр элемента управления OLE, приложение контейнера вызывает функцию-член фабрики классов элемента. Так как элемент управления является фактическим объектом OLE, фабрика классов отвечает за создание экземпляров элемента управления. Каждый класс управления OLE должен иметь фабрику классов.
Еще одной важной особенностью элементов управления OLE является их способность применять лицензию. ControlWizard позволяет включить лицензирование во время создания проекта управления. Дополнительные сведения о лицензировании элементов управления см. в статье ActiveX Controls: Licensing An ActiveX Control.
В следующей таблице перечислены несколько макросов и функций, используемых для объявления и реализации фабрики классов элемента управления и лицензии элемента управления.
Фабрики классов и прослушивание
Макрос или функция | Description |
---|---|
DECLARE_OLECREATE_EX |
Объявляет фабрику классов для страницы элемента управления OLE или свойства. |
IMPLEMENT_OLECREATE_EX |
Реализует функцию элемента управления GetClassID и объявляет экземпляр фабрики классов. |
BEGIN_OLEFACTORY |
Начинает объявление любых функций лицензирования. |
END_OLEFACTORY |
Заканчивает объявление любых функций лицензирования. |
AfxVerifyLicFile |
Проверяет, лицензируется ли элемент управления для использования на определенном компьютере. |
DECLARE_OLECREATE_EX
Объявляет фабрику классов и GetClassID
функцию-член класса элемента.
DECLARE_OLECREATE_EX(class_name)
Параметры
class_name
Имя класса элемента управления.
Замечания
Используйте этот макрос в файле заголовка класса элемента управления для элемента управления, который не поддерживает лицензирование.
Обратите внимание, что этот макрос служит той же цели, что и следующий пример кода:
BEGIN_OLEFACTORY(CMyAxCtrl)
END_OLEFACTORY(CMyAxCtrl)
Требования
Заголовок afxctl.h
IMPLEMENT_OLECREATE_EX
Реализует фабрику классов элемента управления и GetClassID
функцию-член класса элемента.
IMPLEMENT_OLECREATE_EX(
class_name,
external_name,
l,
w1,
w2,
b1,
b2,
b3,
b4,
b5,
b6,
b7,
b8)
Параметры
class_name
Имя класса страницы свойств элемента управления.
external_name
Имя объекта, предоставляемое приложениям.
l
, w1
, w2
b1
b2
b3
b4
b5
b6
b7
b8
Компоненты класса CLSID
. Дополнительные сведения об этих параметрах см. в разделе "Примечания".IMPLEMENT_OLECREATE
Замечания
Этот макрос должен отображаться в файле реализации для любого класса элемента управления, использующего DECLARE_OLECREATE_EX
макрос или BEGIN_OLEFACTORY
END_OLEFACTORY
макросы. Внешнее имя — это идентификатор элемента управления OLE, который предоставляется другим приложениям. Контейнеры используют это имя для запроса объекта этого класса элемента управления.
Требования
Заголовок afxctl.h
BEGIN_OLEFACTORY
Начинает объявление фабрики классов в файле заголовка класса элемента управления.
BEGIN_OLEFACTORY(class_name)
Параметры
class_name
Указывает имя класса элемента управления, фабрика классов которого это.
Замечания
Объявления функций лицензирования фабрики классов должны начинаться сразу после BEGIN_OLEFACTORY
.
Требования
Заголовок afxctl.h
END_OLEFACTORY
Заканчивает объявление фабрики классов элемента управления.
END_OLEFACTORY(class_name)
Параметры
class_name
Имя класса управления, фабрика классов которого это.
Требования
Заголовок afxctl.h
AfxVerifyLicFile
Вызовите эту функцию, чтобы убедиться, что файл лицензии с pszLicFileName
именем является допустимым для элемента управления OLE.
BOOL AFXAPI AfxVerifyLicFile(
HINSTANCE hInstance,
LPCTSTR pszLicFileName,
LPOLESTR pszLicFileContents,
UINT cch = -1);
Параметры
hInstance
Дескриптор экземпляра библиотеки DLL, связанной с лицензированным элементом управления.
pszLicFileName
Указывает на строку символов, завершающую значение NULL, содержащую имя файла лицензии.
pszLicFileContents
Указывает на последовательность байтов, которая должна соответствовать последовательности, найденной в начале файла лицензии.
cch
Число символов в pszLicFileContents.
Возвращаемое значение
Nonzero, если файл лицензии существует и начинается с последовательности символов в pszLicFileContents; в противном случае — 0.
Замечания
Если cch
значение равно -1, эта функция использует следующее:
_tcslen(pszLicFileContents);
Требования
Заголовок afxctl.h