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




Добавьте Поддержку Системного реестра и Новый Объект COM ATL


1 Добавляют следующую функцию инициализации системного реестра к AsdkDesignCenterSamp.cpp. Эта функция основает системный реестр, основанный на ресурсах системного реестра, которые будут добавлены в более позднем шаге.

void registerAppInfo(HINSTANCE hInstance)

{

USES_CONVERSION;

HRESULT hRes = S_OK;

CComPtr<IRegistrar> p;

hRes = CoCreateInstance(CLSID_Registrar, NULL,

CLSCTX_INPROC_SERVER, IID_IRegistrar, (void**)&p);

if(SUCCEEDED(hRes))

{

// Get the AutoCAD Product key from the

// registry into a CString.

//

CString csProdKey = acrxProductKey();

// Use CStrings to obtain the authorization

// stamp from the registry.

//

CString csPath = "SOFTWARE\\Autodesk\\AutoCAD\\R15.0\\";

CString csStamp = csProdKey.Right(csProdKey.GetLength()

- csPath.GetLength());

_TCHAR szRegKey[_MAX_PATH];

_tcscpy(szRegKey, csStamp);

LPOLESTR pszId = T2OLE("AUTH");

// do a runtime swap of the registry key value.

//

p->AddReplacement(pszId, T2OLE(szRegKey));

_TCHAR szModule[_MAX_PATH];

GetModuleFileName(hInstance, szModule, _MAX_PATH);

LPCOLESTR szType = OLESTR("REGISTRY");

LPOLESTR pszModule = T2OLE(szModule);

// Pull the registry entries from the resource ID.

//

hRes = p->ResourceRegister(pszModule, IDR_REGISTRY1,

szType);

if(FAILED(hRes))

AfxMessageBox("Error registering the app info.");

}

}

2 Теперь добавляют новый Объект ATL, который поддержит интерфейс IAcDcContentView.

В Visual C++, выберите Вставку, Новый Объект ATL. В диалоге выбирают Объекты и выбирают Простой Объект. Нажмите Next, и введите имя для Объекта ATL. Для этого примера, назовите это AsdkDcContent. Теперь выберите позицию табуляции Names, и щелчок поддерживает ISupportErrorInfo. Нажмите OK, чтобы создать объект.

3 Затем мы должны добавить некоторую информацию системного реестра к секции ресурса проекта. Сначала создайте новый файл по имени AsdkDesignCenterSamp .rgs. Следующая распечатка должна быть изменена для вашего определенного проекта, где ID класса (CLSID) должен быть скопирован с вашего файла IDL. Используйте CLSID, который соответствует интерфейсу IAsdkDcContent. Так как они - значения GUID, они отличны для каждого нового проекта. Также для других проектов, Вы будете должны изменить секции расширений и также добавлять имя вашего определенного класса. Снова, этот пример использует AsdkDcContent.




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