www.pudn.com > COM技术内幕配书源码.rar > CMPNT3.CPP


// 
// Cmpnt3.cpp - Component 3 
// 
#include  
 
#include "Iface.h" 
#include "Util.h" 
#include "CUnknown.h" // Base class for IUnknown 
#include "Cmpnt3.h" 
 
static inline void trace(char* msg) 
	{Util::Trace("Component 3", msg, S_OK) ;}  
static inline void trace(char* msg, HRESULT hr) 
	{Util::Trace("Component 3", msg, hr) ;} 
 
/////////////////////////////////////////////////////////// 
// 
// Interface IZ implementation 
// 
void __stdcall CC::Fz()  
{  
	trace("Fz") ; 
} 
 
// 
// Constructor 
// 
CC::CC(IUnknown* pUnknownOuter) 
: CUnknown(pUnknownOuter) 
{ 
	// Empty 
} 
 
// 
// Destructor 
// 
CC::~CC()  
{ 
	trace("Destroy self.") ; 
} 
 
// 
// NondelegatingQueryInterface implementation 
// 
HRESULT __stdcall 
	CC::NondelegatingQueryInterface(const IID& iid, void** ppv) 
{ 	 
	if (iid == IID_IZ) 
	{ 
		return FinishQI(static_cast(this), ppv) ; 
	} 
	else 
	{ 
		return CUnknown::NondelegatingQueryInterface(iid, ppv) ; 
	} 
} 
 
 
/////////////////////////////////////////////////////////// 
// 
// Creation function used by CFactory 
// 
HRESULT CC::CreateInstance(IUnknown* pUnknownOuter, 
                           CUnknown** ppNewComponent) 
{ 
	*ppNewComponent = new CC(pUnknownOuter) ; 
	return S_OK ; 
}