NT4/private/oleauto/tests/common/crempoly.h
2020-09-30 17:12:29 +02:00

91 lines
2.6 KiB
C++

/***
*crempoly.h
*
* Copyright (C) 1992, Microsoft Corporation. All Rights Reserved.
* Information Contained Herein Is Proprietary and Confidential.
*
*Purpose:
* This file defines the CRemPoly remote polygon object.
*
*Implementation Notes:
*
*****************************************************************************/
class CRemPoly : public IUnknown {
public:
static HRESULT Create(OLECHAR FAR* szProgID, CRemPoly FAR* FAR*);
// IUnknown methods
//
STDMETHOD(QueryInterface)(REFIID riid, void FAR* FAR* ppvObj);
STDMETHOD_(unsigned long, AddRef)(void);
STDMETHOD_(unsigned long, Release)(void);
// Introduced methods
//
HRESULT Draw(void);
HRESULT Dump(void);
HRESULT Reset(void);
HRESULT AddPoint(short x, short y);
HRESULT EnumPoints(IEnumVARIANT FAR* FAR* ppenum);
HRESULT GetXOrigin(short FAR* pxorg);
HRESULT SetXOrigin(short xorg);
HRESULT GetYOrigin(short FAR* pyorg);
HRESULT SetYOrigin(short yorg);
HRESULT GetWidth(short FAR* pwidth);
HRESULT SetWidth(short width);
HRESULT get_red(short FAR* pred);
HRESULT set_red(short red);
HRESULT get_green(short FAR* pgreen);
HRESULT set_green(short green);
HRESULT get_blue(short FAR* pblue);
HRESULT set_blue(short blue);
private:
CRemPoly();
HRESULT get_i2(DISPID dispid, short FAR* ps);
HRESULT set_i2(DISPID dispid, short);
unsigned long m_refs;
IDispatch FAR* m_pdisp;
// NOTE: this enumeration exists simply to allow us to symbolicly
// index the member name and id arrays (m_rgid and m_rgszMethods).
// This doesn't (necessarrily) have any connection to the vtable
// indices, it *only* needs to correspond correctly to the m_rgid
// and m_rgszMethods arrays.
//
enum CREMPOLY_METHODS {
IMETH_CREMPOLY_DRAW = 0,
IMETH_CREMPOLY_DUMP,
IMETH_CREMPOLY_RESET,
IMETH_CREMPOLY_ADDPOINT,
IMETH_CREMPOLY_ENUMPOINTS,
IMETH_CREMPOLY_GETXORIGIN,
IMETH_CREMPOLY_SETXORIGIN,
IMETH_CREMPOLY_GETYORIGIN,
IMETH_CREMPOLY_SETYORIGIN,
IMETH_CREMPOLY_GETWIDTH,
IMETH_CREMPOLY_SETWIDTH,
IMETH_CREMPOLY_GETRED,
IMETH_CREMPOLY_SETRED,
IMETH_CREMPOLY_GETGREEN,
IMETH_CREMPOLY_SETGREEN,
IMETH_CREMPOLY_GETBLUE,
IMETH_CREMPOLY_SETBLUE,
IMETH_CREMPOLY_MAX
};
// member IDs - these are used by IDispatch::Invoke to identify the
// method or property on the remote object we accessing.
//
DISPID m_rgdispid[IMETH_CREMPOLY_MAX];
// member names - these are used to learn the member IDs when we
// connect to the remote object.
//
static OLECHAR FAR* m_rgszMethods[IMETH_CREMPOLY_MAX];
};