Architecture Net



         

явное определение интерфейса - часть 2


//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

CompEbook.ru ∆елезо, дизайн, обучение и другие




—одержание  Ќазад  ¬перед