3,248
社区成员




#include "stdafx.h"
class ICom2Interface1: public IUnknown
{
public:
virtual void _stdcall Function1() = 0;
virtual void _stdcall Function2() = 0;
};
class ICom2Interface2: public IUnknown
{
public:
virtual void _stdcall Function1() = 0;
virtual void _stdcall Function2() = 0;
};
class CComponetObj : public CCmdTarget
{
DECLARE_DYNCREATE(CComponetObj)
CComponetObj();
protected:
virtual ~CComponetObj();
public:
BEGIN_INTERFACE_PART (TmpObj1, ICom2Interface1)
INIT_INTERFACE_PART (CComponetObj, TmpObj1)
STDMETHOD_(void,Function1)();
STDMETHOD_(void,Function2)();
END_INTERFACE_PART_STATIC(TmpObj1)
BEGIN_INTERFACE_PART (TmpObj2, ICom2Interface2)
INIT_INTERFACE_PART (CComponetObj, TmpObj2)
STDMETHOD_(void,Function1)();
STDMETHOD_(void,Function2)();
END_INTERFACE_PART_STATIC(TmpObj2)
DECLARE_MESSAGE_MAP()
DECLARE_INTERFACE_MAP()
DECLARE_OLECREATE(CComponetObj)
};
// {037439C0-3F86-4309-A129-B3E8E6E94B2F}
extern "C" const GUID IID_ICom2Interface1 =
{ 0x37439c0, 0x3f86, 0x4309, { 0xa1, 0x29, 0xb3, 0xe8, 0xe6, 0xe9, 0x4b, 0x2f } };
// {167722E4-EDF3-4ea8-B085-3A82B2BF8AF1}
extern "C" const GUID IID_ICom2Interface2 =
{ 0x167722e4, 0xedf3, 0x4ea8, { 0xb0, 0x85, 0x3a, 0x82, 0xb2, 0xbf, 0x8a, 0xf1 } };
IMPLEMENT_DYNAMIC(CComponetObj, CCmdTarget)
IMPLEMENT_OLECREATE(CComponetObj, "COM_2.Object",
0xe3ee73ee, 0xced5, 0x429b, 0x9a, 0x6f, 0x9d, 0x32, 0xe1, 0x17, 0x6b, 0x8c);
CComponetObj::CComponetObj()
{
wprintf (L"Constructing CComponetObj!\r\n");
}
CComponetObj::~CComponetObj()
{
}
BEGIN_MESSAGE_MAP(CComponetObj, CCmdTarget)
END_MESSAGE_MAP()
BEGIN_INTERFACE_MAP(CComponetObj, CCmdTarget)
INTERFACE_PART (CComponetObj, IID_ICom2Interface1, TmpObj1)
INTERFACE_PART (CComponetObj, IID_ICom2Interface2, TmpObj2)
END_INTERFACE_MAP()
STDMETHODIMP_(ULONG) CComponetObj::XTmpObj1::AddRef()
{
METHOD_PROLOGUE_EX_(CComponetObj, TmpObj1)
return (ULONG)pThis->ExternalAddRef();
}
STDMETHODIMP_(ULONG) CComponetObj::XTmpObj1::Release()
{
METHOD_PROLOGUE_EX_(CComponetObj, TmpObj1)
return (ULONG)pThis->ExternalRelease();
}
STDMETHODIMP CComponetObj::XTmpObj1::QueryInterface(REFIID iid, LPVOID * ppv)
{
METHOD_PROLOGUE_EX_(CComponetObj, TmpObj1)
return (HRESULT)pThis->ExternalQueryInterface(&iid, ppv);
}
STDMETHODIMP_(void) CComponetObj::XTmpObj1::Function1()
{
METHOD_PROLOGUE_EX_(CComponetObj, TmpObj1)
wprintf (L"ICom2Interface1->Function1 has been called.\r\n");
}
STDMETHODIMP_(void) CComponetObj::XTmpObj1::Function2()
{
METHOD_PROLOGUE_EX_(CComponetObj, TmpObj1)
wprintf (L"ICom2Interface1->Function2 has been called.\r\n");
}
STDMETHODIMP_(ULONG) CComponetObj::XTmpObj2::AddRef()
{
METHOD_PROLOGUE_EX_(CComponetObj, TmpObj2)
return (ULONG)pThis->ExternalAddRef();
}
STDMETHODIMP_(ULONG) CComponetObj::XTmpObj2::Release()
{
METHOD_PROLOGUE_EX_(CComponetObj, TmpObj2)
return (ULONG)pThis->ExternalRelease();
}
STDMETHODIMP CComponetObj::XTmpObj2::QueryInterface(REFIID iid, LPVOID * ppv)
{
METHOD_PROLOGUE_EX_(CComponetObj, TmpObj2)
return (HRESULT)pThis->ExternalQueryInterface(&iid, ppv);
}
STDMETHODIMP_(void) CComponetObj::XTmpObj2::Function1()
{
METHOD_PROLOGUE_EX_(CComponetObj, TmpObj2)
printf ("ICom2Interface2->Function1 has been called.\r\n");
}
STDMETHODIMP_(void) CComponetObj::XTmpObj2::Function2()
{
METHOD_PROLOGUE_EX_(CComponetObj, TmpObj2)
printf ("ICom2Interface2->Function2 has been called.\r\n");
}