Создавать обертку Автоматизации для заказного объекта или примитива
1 Основанный ваш проект согласно шагам в “ Введение Файла Проекта ATL. ”
2 В файле заголовка объекта COM, включите axtempl.h (главное ActiveX файл заголовка шаблона Автоматизации) и файл (ы) заголовка для ваших заказных объектов или примитивов.
3 Изменяют образование из объекта COM или примитива, удаляя IDISPATCHIMPL часть образования и заменяя это со следующим кодом:
// Для заказного объекта.
//
public IAcadObjectDispatchImpl<CWrapperClass,
&CLSID_WrapperClass,IWrapperClass,
&IID_IWrapperClass,&LIBID_LIBRARYLib>
// For a custom entity.
//
public IAcadEntityDispatchImpl<CWrapperClass,
&CLSID_WrapperClass,IWrapperClass,
&IID_IWrapperClass,&LIBID_LIBRARYLib>
4 Добавляют следующие вхождения в COM_MAP:
COM_INTERFACE_ENTRY(IAcadBaseObject)
COM_INTERFACE_ENTRY(IAcadObject)
COM_INTERFACE_ENTRY(IAcadEntity) // For an entity only.
COM_INTERFACE_ENTRY(IRetrieveApplication)
COM_INTERFACE_ENTRY_IMPL(IConnectionPointContainer) // Only
// necessary to support events.
5 Добавляют следующую требуемую перегрузку к заголовку file:
// IAcadBaseObjectImpl
//
virtual HRESULT
CreateNewObject(
AcDbObjectId& objId,
TCHAR* entryName,
TCHAR* keyName);
Эта абстрактная функция, определенная в IACADBASEOBJECTIMPL шаблоне должна быть перегружена, чтобы позволить Вам добавлять заданные по умолчанию объекты к базе данных.
6 Осуществляют CreateNewObject () для любго объекта или определенного примитива.
Следующий пример показывает выполнение CreateNewObject () из AsdkSquareWrapper:
HRESULT CAsdkSquareWrapper::CreateNewObject(
AcDbObjectId& objId,
AcDbObjectId& ownerId,
TCHAR* keyName)
{
try
{
//AXEntityDocLock(ownerId);
Acad::ErrorStatus es;
AcDbObjectPointer<AsdkSquare> pSq;
if((es = pSq.create()) != Acad::eOk)
throw es;
AcDbDatabase* pDb = ownerId.database();
pSq->setDatabaseDefaults(pDb);
AcDbBlockTableRecordPointer
pBlockTableRecord(ownerId, AcDb::kForWrite);
if((es = pBlockTableRecord.openStatus()) != Acad::eOk)
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий