myeventclass_tlb.h
来自「C++Builder高级应用开发指南随书源码」· C头文件 代码 · 共 243 行
H
243 行
// ************************************************************************ //
// WARNING
// -------
// The types declared in this file were generated from data read from a
// Type Library. If this type library is explicitly or indirectly (via
// another type library referring to this type library) re-imported, or the
// 'Refresh' command of the Type Library Editor activated while editing the
// Type Library, the contents of this file will be regenerated and all
// manual modifications will be lost.
// ************************************************************************ //
// C++ TLBWRTR : $Revision: 1.134.1.41 $
// File generated on 2001-9-18 19:13:06 from Type Library described below.
// ************************************************************************ //
// Type Lib: C:\Samples\COM\COM+ Event\MyEventClass.tlb (1)
// IID\LCID: {EF890811-53D2-4C98-9A4B-062E29CA95A2}\0
// Helpfile:
// DepndLst:
// (1) v2.0 stdole, (E:\WINNT\System32\stdole2.tlb)
// (2) v4.0 StdVCL, (E:\WINNT\System32\STDVCL40.DLL)
// ************************************************************************ //
#ifndef __MyEventClass_TLB_h__
#define __MyEventClass_TLB_h__
#pragma option push -b -w-inl
#include <utilcls.h>
#if !defined(__UTILCLS_H_VERSION) || (__UTILCLS_H_VERSION < 0x0500)
//
// The code generated by the TLIBIMP utility or the Import|TypeLibrary
// and Import|ActiveX feature of C++Builder rely on specific versions of
// the header file UTILCLS.H found in the INCLUDE\VCL directory. If an
// older version of the file is detected, you probably need an update/patch.
//
#error "This file requires a newer version of the header UTILCLS.H" \
"You need to apply an update/patch to your copy of C++Builder"
#endif
#include <olectl.h>
#include <ocidl.h>
#if defined(USING_ATLVCL) || defined(USING_ATL)
#if !defined(__TLB_NO_EVENT_WRAPPERS)
#include <atl/atlmod.h>
#endif
#endif
// *********************************************************************//
// Forward reference of some VCL types (to avoid including STDVCL.HPP)
// *********************************************************************//
namespace Stdvcl {class IStrings; class IStringsDisp;}
using namespace Stdvcl;
typedef TComInterface<IStrings> IStringsPtr;
typedef TComInterface<IStringsDisp> IStringsDispPtr;
namespace Myeventclass_tlb
{
// *********************************************************************//
// HelpString: MyEventClass Library
// Version: 1.0
// *********************************************************************//
// *********************************************************************//
// GUIDS declared in the TypeLibrary. Following prefixes are used:
// Type Libraries : LIBID_xxxx
// CoClasses : CLSID_xxxx
// DISPInterfaces : DIID_xxxx
// Non-DISP interfaces: IID_xxxx
// *********************************************************************//
extern __declspec (package) const GUID LIBID_MyEventClass;
extern __declspec (package) const GUID IID_IMyEventObj;
extern __declspec (package) const GUID CLSID_MyEventObj;
// *********************************************************************//
// Forward declaration of types defined in TypeLibrary
// *********************************************************************//
interface DECLSPEC_UUID("{9CD18B97-50D5-4D38-ADDD-EF816F656167}") IMyEventObj;
typedef TComInterface<IMyEventObj, &IID_IMyEventObj> IMyEventObjPtr;
// *********************************************************************//
// Declaration of CoClasses defined in Type Library
// (NOTE: Here we map each CoClass to its Default Interface)
//
// The LIBID_OF_ macro(s) map a LIBID_OF_CoClassName to the GUID of this
// TypeLibrary. It simplifies the updating of macros when CoClass name
// change.
// *********************************************************************//
typedef IMyEventObj MyEventObj;
typedef IMyEventObjPtr MyEventObjPtr;
#define LIBID_OF_MyEventObj (&LIBID_MyEventClass)
// *********************************************************************//
// Interface: IMyEventObj
// Flags: (4416) Dual OleAutomation Dispatchable
// GUID: {9CD18B97-50D5-4D38-ADDD-EF816F656167}
// *********************************************************************//
interface IMyEventObj : public IDispatch
{
public:
virtual HRESULT STDMETHODCALLTYPE OnDeposit(void) = 0; // [1]
virtual HRESULT STDMETHODCALLTYPE OnWithdraw(void) = 0; // [2]
#if !defined(__TLB_NO_INTERFACE_WRAPPERS)
#endif // __TLB_NO_INTERFACE_WRAPPERS
};
#if !defined(__TLB_NO_INTERFACE_WRAPPERS)
// *********************************************************************//
// SmartIntf: TCOMIMyEventObj
// Interface: IMyEventObj
// *********************************************************************//
template <class T /* IMyEventObj */ >
class TCOMIMyEventObjT : public TComInterface<IMyEventObj>, public TComInterfaceBase<IUnknown>
{
public:
TCOMIMyEventObjT() {}
TCOMIMyEventObjT(IMyEventObj *intf, bool addRef = false) : TComInterface<IMyEventObj>(intf, addRef) {}
TCOMIMyEventObjT(const TCOMIMyEventObjT& src) : TComInterface<IMyEventObj>(src) {}
TCOMIMyEventObjT& operator=(const TCOMIMyEventObjT& src) { Bind(src, true); return *this;}
HRESULT __fastcall OnDeposit(void);
HRESULT __fastcall OnWithdraw(void);
};
typedef TCOMIMyEventObjT<IMyEventObj> TCOMIMyEventObj;
// *********************************************************************//
// DispIntf: IMyEventObj
// Flags: (4416) Dual OleAutomation Dispatchable
// GUID: {9CD18B97-50D5-4D38-ADDD-EF816F656167}
// *********************************************************************//
template<class T>
class IMyEventObjDispT : public TAutoDriver<IMyEventObj>
{
public:
IMyEventObjDispT(){}
IMyEventObjDispT(IMyEventObj *pintf)
{
TAutoDriver<IMyEventObj>::Bind(pintf, false);
}
IMyEventObjDispT(IMyEventObjPtr pintf)
{
TAutoDriver<IMyEventObj>::Bind(pintf, true);
}
IMyEventObjDispT& operator=(IMyEventObj *pintf)
{
TAutoDriver<IMyEventObj>::Bind(pintf, false);
return *this;
}
IMyEventObjDispT& operator=(IMyEventObjPtr pintf)
{
TAutoDriver<IMyEventObj>::Bind(pintf, true);
return *this;
}
HRESULT BindDefault()
{
return OLECHECK(Bind(CLSID_MyEventObj));
}
HRESULT BindRunning()
{
return BindToActive(CLSID_MyEventObj);
}
HRESULT __fastcall OnDeposit();
HRESULT __fastcall OnWithdraw();
};
typedef IMyEventObjDispT<IMyEventObj> IMyEventObjDisp;
// *********************************************************************//
// SmartIntf: TCOMIMyEventObj
// Interface: IMyEventObj
// *********************************************************************//
template <class T> HRESULT __fastcall
TCOMIMyEventObjT<T>::OnDeposit(void)
{
return (*this)->OnDeposit();
}
template <class T> HRESULT __fastcall
TCOMIMyEventObjT<T>::OnWithdraw(void)
{
return (*this)->OnWithdraw();
}
// *********************************************************************//
// DispIntf: IMyEventObj
// Flags: (4416) Dual OleAutomation Dispatchable
// GUID: {9CD18B97-50D5-4D38-ADDD-EF816F656167}
// *********************************************************************//
template <class T> HRESULT __fastcall
IMyEventObjDispT<T>::OnDeposit()
{
_TDispID _dispid(*this, OLETEXT("OnDeposit"), DISPID(1));
return OleFunction(_dispid);
}
template <class T> HRESULT __fastcall
IMyEventObjDispT<T>::OnWithdraw()
{
_TDispID _dispid(*this, OLETEXT("OnWithdraw"), DISPID(2));
return OleFunction(_dispid);
}
// *********************************************************************//
// The following typedefs expose classes (named CoCoClassName) that
// provide static Create() and CreateRemote(LPWSTR machineName) methods
// for creating an instance of an exposed object. These functions can
// be used by client wishing to automate CoClasses exposed by this
// typelibrary.
// *********************************************************************//
// *********************************************************************//
// COCLASS DEFAULT INTERFACE CREATOR
// CoClass : MyEventObj
// Interface: TCOMIMyEventObj
// *********************************************************************//
typedef TCoClassCreatorT<TCOMIMyEventObj, IMyEventObj, &CLSID_MyEventObj, &IID_IMyEventObj> CoMyEventObj;
#endif // __TLB_NO_INTERFACE_WRAPPERS
}; // namespace Myeventclass_tlb
#if !defined(NO_IMPLICIT_NAMESPACE_USE)
using namespace Myeventclass_tlb;
#endif
#pragma option pop
#endif // __MyEventClass_TLB_h__
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?