Учебник по Visual C++ .Net


Использование макросов COM Разработчики - часть 3


STDMETHODIMP CoSayFactory::CreateInstance(LPUNKNOWN pUnk,

REFIID riid, void** ppv)

{

// Этот параметр управляет аггрегированием объектов СОМ,

// которое мы не поддерживаем if (pUnk)

return CLASS_E_NOAGGREGATION;

//=== Создание нового объекта и запрос его интерфейса

CoSay *pSay = new CoSay;

HRESULT hr = pSay->Query!nterface (riid, ppv);

if (FAILED(hr))

delete pSay;

return hr;

}

//=== Управление счетчиком фиксаций сервера в памяти

STDMETHODIMP CoSayFactory::LockServer(BOOL bLock)

{

if (bLock) // Если TRUE, то увеличиваем счетчик

++gLockCount;

else // Иначе — уменьшаем

--gLockCount; return S_OK;

}

Регистрация библиотеки типов

Библиотеку типов также надо регистрировать для того, чтобы клиент мог найти ее с помощью уникального идентификатора. Введите изменения в файл MyCom.reg в соответствии со схемой, приведенной ниже, но используя при этом ваши идеитификаторы, файловые адреса и помня о правилах переноса. Сохраните исправления и зарегистрируйте все перечисленные объекты, дважды щелкнув на файле MyCom.reg в окне Windows File Manager:

REGEDIT HKEY_CLASSES_ROOT\MyComTLib.CoSay\CLSID =

{9B865820-2FFA-lld5-98B4-OOE0293F01B2}

HKEY_CLASSES_ROOT\CLSID\

{9B865820-2FFA-lld5-98B4-OOE0293F01B2}

= MyComTLib.CoSay

HKEY_CLASSES_ROOT\CLSID\

{9B865820-2FFA-lld5-98B4-OOE0293F01B2}

\InprocServer32 =

D:\My Projects\MyComTLib\Debug\MyComTLib.dll'

HKEY_CLASSES_ROOT\CLSID\

{9B865820-2FFA-lld5-98B4-OOE0293F01B2}\TypeLib =

{0934DA90-608D-4107-9ECC-C7E828AD0928}

HKEY_CLASSES_ROOT\TypeLib\

{0934DA90-608D-4107-9ECC-C7E828AD0928}

= MyComTLib

HKEY_CLASSES_ROOT\TypeLib\

{0934DA90-608D-4107-9ECC-C7E828AD0928}

\1.0\0\Win32 =

D:\My Projects\MyComTLib\Debug\MyComTLib.tlb

После этого дайте команду Build > Rebuild Solution. При осуществлении компоновки (Linking) в окне Output должна появиться строка:

Creating library Debug/MyComTLib.lib

and object Debug/MyComTLib.exp

которая свидетельствует о том, что DEF-файл воспринят и участвует в построении проекта. Если вы не видите этой строки, то выполните шаги по настройке проекта, которые описаны выше в разделе «Файл описания DLL», и повторите процедуру построения. После этого сервер готов к использованию.




Начало  Назад  Вперед



Книжный магазин