91 lines
2.6 KiB
C++
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];
|
|
};
|