Иллюстрированный самоучитель по Architecture .NET

Явное определение интерфейса

Это сделало пример более наглядным для ситуации, когда приходится использовать существующий клиент, разработанный на основе модели компонентных объектов Microsoft (СОМ), без каких-либо его изменений. Другими словами, мы создали компонент на управляемом C++, который будет использоваться в качестве компонента на основе модели компонентных объектов Microsoft (COM) существующим клиентом, построенным на основе модели компонентных объектов Microsoft (COM), без повторной компиляции.

//COMClientOfManagedClass.срр
#include <unknwn.h> ttinclude <iostream.h>
// (8D48DE87-048E-466e-95C3-06F3C21FCEAA}
static const GUID CLSID_ManagedClass =
// статическая константа
{
Ox8D48DE87, Ox048E, Ox466e,
{
0x95, ОхСЗ, 0x06, OxF3, OxC2, OxlF, OxCE, OxAA
}
};
// {C3894DE3-F5D6-46fe-84C7-C6DDOE801C86}
static const GUID IID_IManagedClass =
// статическая константа
{
OxC3894DE3, OxF5D6, Ox46fe,
{
0x84, OxC7, OxC6, OxDD, OxOE, 0x80, OxlC, 0x86)
};
class IManagedClass: public IDispatch
{
public:
virtual HRESULT _stdcall AddEmUp(// виртуальный
long a,
long b,
long* psum) = 0;
};
void main()
{
HRESULT hResult; IManagedClass *pimc;
hResult = (reinitialize (NULL); // ПУСТОЙ УКАЗАТЕЛЬ
if (hResult!= S_OK) return;
hResult = CoCreatelnstance (
CLSID_ManagedClass,
NULL, // ПУСТОЙ УКАЗАТЕЛЬ
CLSCTX_ALL,
IID_IManagedClass,
(void **) Spimc);
if (hResult == REGDB_E_CLASSNOTREG) cout
"ERROR: CLSID is not properly registered.\n"
// "ОШИБКА: CLSID должным образом не зарегистрирован \п"
flush; // сброс
if (hResult == S_OK) {
cout "CoCreatelnstance succeeded.\n"
flush; long sum; // сумма
hResult = pimc › AddEmUp(3, 4, &sum); // должно быть 6
if (hResult == S_OK)
cout << "AddEmUp(3.4) is: " << sum << endl << flush; // "сумма
endl сброс; pimc › Release();
}
CoUninitialize ();
}

Ниже приведена выдача этой программы:

CoCreatelnstance succeeded.
AddEmUp(3.4) is: 7
Press any key to continue
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.