ObjectARX, AutoCAD. Среда программирования библиотеки C++

Создание Файла Системного реестра


Для вашего сервера COM, чтобы быть полностью функциональный, все компоненты и их соответствующие интерфейсы должны быть зарегистрированы с системой. Кроме того, библиотека типов должна также быть зарегистрирована так, чтобы это могло использоваться, чтобы осуществить IDISPATCH для ваших компонентов.

Вхождения системного реестра типично создаются в течение инсталляции вашего программного обеспечения.

Ниже Вас найдет, что информация помогает создает файл системного реестра (.reg), который является высоко полезным и идентифицирует минимальное количество информации, требуемой для вашего сервера COM.

Общий формат (использование compoly.reg как пример):

REGEDIT

; type library entries

HKEY_CLASSES_ROOT\TypeLib\{uuid of type library}

HKEY_CLASSES_ROOT\TypeLib\{uuid of type library}\1.0 =

compoly 1.0 Type Library HKEY_CLASSES_ROOT\TypeLib\

{uuid of type library}\1.0\HELPDIR = x:\some\path\to

HKEY_CLASSES_ROOT\TypeLib\{uuid of type library}\1.0\0\win32 =

x:\some\path\to\compoly.tlb

HKEY_CLASSES_ROOT\TypeLib\{uuid of type library}\1.0\9\win32 =



x:\some\path\to\compoly.tlb

; coclass entries

HKEY_CLASSES_ROOT\CLSID\{uuid of coclass} = ComPolygon Class

HKEY_CLASSES_ROOT\CLSID\{uuid of coclass}\InProcServer32 =

x:\some\path\to\compoly.dll

; interface entries

HKEY_CLASSES_ROOT\Interface\{uuid of interface} =

IComPolygon Interface

HKEY_CLASSES_ROOT\Interface\{uuid of interface}\TypeLib =

{uuid of type library}

HKEY_CLASSES_ROOT\Interface\{uuid of interface}\ProxyStubClsid32 =

{00020424-0000-0000-C000-000000000046}

Последние две секции повторятся для каждого coclass и связывать с помощью интерфейса в вашей библиотеке типов. Файл IDL имел обыкновение формировать библиотеку типов, будет содержать весь uuids, который Вы должны заполнить пробелы выше. Ниже прокомментированы выборки от compoly.idl, которые идентифицируют каждый uuid.

[

// uuid of type lib.

//

uuid(45C7F028-CD9A-11D1-A2BD-080009DC639A),

version(1.0),

helpstring("compoly 1.0 Type Library")

]

library COMPOLYLib

{

// ... Code cut out for brevity.

// IComPolygon interface

[

object,

// uuid of interface

//

uuid(45C7F035-CD9A-11D1-A2BD-080009DC639A),

dual,

helpstring("IComPolygon Interface"),

pointer_default(unique)

]

interface IComPolygon : IAcadEntity

{

// ... Code cut out for brevity.

};

// ... Code cut out for brevity.

// ComPolygon coclass

[

// uuid of coclass

//

uuid(45C7F036-CD9A-11D1-A2BD-080009DC639A),

helpstring("ComPolygon Class"),

noncreatable

]

coclass ComPolygon

{

[default] interface IComPolygon;

[source] interface IAcadObjectEvents;

};

};



Содержание раздела