Программирование >>  Перегруженные имена функций и идентификаторы 

1 ... 148 149 150 [ 151 ] 152 153 154 ... 210


library SAMPLLib

importlib( stdole32.tlb ); importlib( stdole2.tlb );

typedef enum {

SamplTypel = 1,

SamplType2 = 2 } SamplType;

object,

uuid(37A3AD1D-F9CC-11D3-8D3C-0000E8D9FD76), dual,

helpstring( ISamplObject Interface ), pointer default(unique)

interface ISamplObject : IDispatch

[propget, id(1)] HRESULT Prop([out, retval] SamplType *pVal);

[propput, id(1)] HRESULT Prop([in] SamplType

newVal);

[id(2)] HRESULT Method([in] VARIANT Var,[in] BSTR Str,[out, retval] ISamplObject** Obj);

uuid(37A3AD1E-F9CC-11D3-8D3C-0000E8D9FD76), helpstring( SamplObject Class )

coclass SamplObject

[default] interface ISamplObject;

После подключения соответствующей библиотеки типов с помощью директивы #import будут созданы два файла, которые генерируются в втходном каталоге проекта. Это фай sampl.tlh, содержащий описание классов, и файл sampl.tli, который содержит реализацию членов классов. Эти файлы будут включены



в проект автоматически. Ниже приведено содержимое этих файлов.

#pragma once

#pragma pack(push, 8)

#include <comdef.h>

namespace SAMPLLib {

Forward references and typedefs struct declspec (uuid( 37a3ad1d-f9cc-11d3-8d3c-0000e8d9fd76 )) /* dual interface */ ISamplObject; struct /* coclass */ SamplObject;

Smart pointer typedef declarations COM SMARTPTR TYPEDEF (ISamplObject, uuidof(ISamplObject));

Type library items enum SamplType

SamplType1 = 1, SamplType2 = 2

struct declspec(uuid( 37a3ad1d-f9cc-11d3-8d3c-

0000e8d9fd76 ))

ISamplObject : IDispatch

Property data

declspec(property(get=GetProp,put=PutProp)) enum SamplType Prop;

Wrapper methods for error-handling

enum SamplType GetProp ( );

void PutProp (enum SamplType pVal );

ISamplObjectPtr Method (const variant t & Var, bstr t

Str );

Raw methods provided by interface

virtual HRESULT stdcall get Prop (enum SamplType *



pVal) = 0 ;

virtual HRESULT stdcall put Prop (enum SamplType pVal)

= 0 ;

virtual HRESULT stdcall raw Method (VARIANT Var,BSTR

Str,struct ISamplObject** Obj) = 0 ; };

struct declspec(uuid( 37a3ad1e-f9cc-11d3-8d3c-

0000e8d9fd76 )) SamplObject;

#include debug\sampl.tli } namespace SAMPLLib #pragma pack(pop) #pragma once

interface ISamplObject wrapper method implementations

inline enum SamplType ISamplObject::GetProp ( ) { enum SamplType result; HRESULT hr = get Prop(& result);

if (FAILED( hr)) com issue errorex( hr, this, uuid-

of(this));

return result;

inline void ISamplObject::PutProp ( enum SamplType pVal ) { HRESULT hr = put Prop(pVal);

if (FAILED( hr)) com issue errorex( hr, this, uuid-

of(this)); }

inline ISamplObjectPtr ISamplObject::Method ( const vari-ant t & Var, bstr t Str ) {

struct ISamplObject * result;

HRESULT hr = raw Method(Var, Str, & result);

if (FAILED( hr)) com issue errorex( hr, this, uuid-

of(this));

return ISamplObjectPtr( result, false);



1 ... 148 149 150 [ 151 ] 152 153 154 ... 210

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика