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


         

В файле IDL, добавьте importlib


throw es;

if((es = pBlockTableRecord->appendAcDbEntity(objId, pSq.object())) != Acad::eOk)

throw es;

}

catch(const Acad::ErrorStatus)

{

//To become more sophisticated

//

return Error(L"Failed to create square",

IID_IAsdkSquareWrapper, E_FAIL);

}

return S_OK;

}

7 В файле IDL, добавьте importlib ("c:\ACAD\acad.tlb"); после importlib stdole32.tlb и importlib stdole2.tlb. Удостоверитесь, чтобы использовать правильный путь, который соответствует вашей инсталляции AutoCAD.

8 Перемещают acad.tlb секцию в вершину файла IDL и перемещают ваш заказной объектный код так, чтобы это было в пределах той секции.

ОБРАТИТЕ ВНИМАНИЕ, что  модификации файла IDL заставят компилятор выпускать предупреждение, заявляющее, что интерфейс не соответствует. Вы можете игнорировать это сообщение.

9 Изменяют{*заменяют*} образование в файле IDL от IDISPATCH до IACADOBJECT для заказного объекта или IACADENTITY для заказного примитива.

10 В секции файла IDL, который соответствует вашей обертке coclass, добавьте [источник] связывают с помощью интерфейса IACADOBJECTEVENTS; после [заданной по умолчанию] линии, чтобы поддерживать события. Файл IDL будет теперь казаться подобным следующему коду:

import "oaidl.idl";

import "ocidl.idl";

[

uuid(800F70A1-6DE9-11D2-A7A6-0060B0872457),

version(1.0),

helpstring("AsdkSquareLib 1.0 Type Library")

]

library ASDKSQUARELIBLib

{

importlib("stdole32.tlb");

importlib("stdole2.tlb");

importlib("v:\acad\acad2000\acad.tlb");

[

object,

uuid(800F70AD-6DE9-11D2-A7A6-0060B0872457),

dual,

helpstring("IAsdkSquareWrapper Interface"),

pointer_default(unique)

]

interface IAsdkSquareWrapper : IAcadEntity

{

[propget, id(1), helpstring("property Number")]

HRESULT Number([out, retval] short *pVal);

[propput, id(1), helpstring("property Number")]

HRESULT Number([in] short newVal);

};

[

uuid(800F70AE-6DE9-11D2-A7A6-0060B0872457),


Содержание  Назад  Вперед