home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Tricks of the Windows Gam…ming Gurus (2nd Edition)
/
Disc2.iso
/
msdn_vcb
/
samples
/
vc98
/
com
/
acdual
/
server
/
clikpnt.cpp
< prev
next >
Wrap
C/C++ Source or Header
|
1998-04-02
|
5KB
|
166 lines
// ClikPnt.cpp : implementation file
//
// This is a part of the Microsoft Foundation Classes C++ library.
// Copyright (C) 1992-1998 Microsoft Corporation
// All rights reserved.
//
// This source code is only intended as a supplement to the
// Microsoft Foundation Classes Reference and related
// electronic documentation provided with the library.
// See these sources for detailed information regarding the
// Microsoft Foundation Classes product.
#include "stdafx.h"
#include "AutoClik.h"
#include "ClikPnt.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CAutoClickPoint
IMPLEMENT_DYNCREATE(CAutoClickPoint, CCmdTarget)
CAutoClickPoint::CAutoClickPoint()
{
EnableAutomation();
// To keep the application running as long as an OLE automation
// object is active, the constructor calls AfxOleLockApp.
AfxOleLockApp();
}
CAutoClickPoint::~CAutoClickPoint()
{
// To terminate the application when all objects created with
// with OLE automation, the destructor calls AfxOleUnlockApp.
AfxOleUnlockApp();
}
void CAutoClickPoint::OnFinalRelease()
{
// When the last reference for an automation object is released
// OnFinalRelease is called. This implementation deletes the
// object. Add additional cleanup required for your object before
// deleting it from memory.
delete this;
}
BEGIN_MESSAGE_MAP(CAutoClickPoint, CCmdTarget)
//{{AFX_MSG_MAP(CAutoClickPoint)
// NOTE - the ClassWizard will add and remove mapping macros here.
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
BEGIN_DISPATCH_MAP(CAutoClickPoint, CCmdTarget)
//{{AFX_DISPATCH_MAP(CAutoClickPoint)
DISP_PROPERTY(CAutoClickPoint, "x", m_x, VT_I2)
DISP_PROPERTY(CAutoClickPoint, "y", m_y, VT_I2)
//}}AFX_DISPATCH_MAP
END_DISPATCH_MAP()
// DUAL_SUPPORT_START
// Original Code:
// // Note: we add support for IID_IAutoClickPoint to support typesafe binding
// // from VBA. This IID must match the GUID that is attached to the
// // dispinterface in the .ODL file.
//
// // {0368D830-A050-11CE-B0F3-00AA006C28B3}
// static const IID IID_IAutoClickPoint =
// { 0x368d830, 0xa050, 0x11ce, { 0xb0, 0xf3, 0x0, 0xaa, 0x0, 0x6c, 0x28, 0xb3 } };
//
// BEGIN_INTERFACE_MAP(CAutoClickPoint, CCmdTarget)
// INTERFACE_PART(CAutoClickPoint, IID_IAutoClickPoint, Dispatch)
// END_INTERFACE_MAP()
// Note: we add support for DIID_IAutoClickPoint to support typesafe binding
// from VBA. We add support for IID_IDualAutoClickPoint to support our
// dual interface. See ACDual.H for the definition of DIID_IAutoClickPoint
// and IID_IDualAutoClickPoint.
//
// DUAL_ERRORINFO_PART indicates we support OLE Automation
// error handling.
//
BEGIN_INTERFACE_MAP(CAutoClickPoint, CCmdTarget)
INTERFACE_PART(CAutoClickPoint, DIID_IAutoClickPoint, Dispatch)
INTERFACE_PART(CAutoClickPoint, IID_IDualAutoClickPoint, DualAutoClickPoint)
DUAL_ERRORINFO_PART(CAutoClickPoint)
END_INTERFACE_MAP()
// DUAL_SUPPORT_END
/////////////////////////////////////////////////////////////////////////////
// CAutoClickPoint message handlers
// DUAL_SUPPORT_START
// delegate standard IDispatch methods to MFC IDispatch implementation
DELEGATE_DUAL_INTERFACE(CAutoClickPoint, DualAutoClickPoint)
// Our method and property functions can generally just
// delegate back to the methods we generated using
// ClassWizard. However, if we set up properties to
// access variables directly, we will need to write the
// code to get/put the value into the variable.
STDMETHODIMP CAutoClickPoint::XDualAutoClickPoint::put_x(short newX)
{
METHOD_PROLOGUE(CAutoClickPoint, DualAutoClickPoint)
TRY_DUAL(IID_IDualAutoClickPoint)
{
pThis->m_x = newX;
return NOERROR;
}
CATCH_ALL_DUAL
}
STDMETHODIMP CAutoClickPoint::XDualAutoClickPoint::get_x(short FAR* retval)
{
METHOD_PROLOGUE(CAutoClickPoint, DualAutoClickPoint)
TRY_DUAL(IID_IDualAutoClickPoint)
{
*retval = pThis->m_x;
return NOERROR;
}
CATCH_ALL_DUAL
}
STDMETHODIMP CAutoClickPoint::XDualAutoClickPoint::put_y(short newY)
{
METHOD_PROLOGUE(CAutoClickPoint, DualAutoClickPoint)
TRY_DUAL(IID_IDualAutoClickPoint)
{
pThis->m_y = newY;
return NOERROR;
}
CATCH_ALL_DUAL
}
STDMETHODIMP CAutoClickPoint::XDualAutoClickPoint::get_y(short FAR* retval)
{
METHOD_PROLOGUE(CAutoClickPoint, DualAutoClickPoint)
TRY_DUAL(IID_IDualAutoClickPoint)
{
*retval = pThis->m_y;
return NOERROR;
}
CATCH_ALL_DUAL
}
// Implement ISupportErrorInfo to indicate we support the
// OLE Automation error handler.
IMPLEMENT_DUAL_ERRORINFO(CAutoClickPoint, IID_IDualAutoClickPoint)
// DUAL_SUPPORT_END