diff options
Diffstat (limited to 'private/oleauto/sample/dispdemo/crempoly.h')
-rw-r--r-- | private/oleauto/sample/dispdemo/crempoly.h | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/private/oleauto/sample/dispdemo/crempoly.h b/private/oleauto/sample/dispdemo/crempoly.h new file mode 100644 index 000000000..087df0251 --- /dev/null +++ b/private/oleauto/sample/dispdemo/crempoly.h @@ -0,0 +1,90 @@ +/*** +*crempoly.h +* +* Copyright (C) 1992-1994, 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(CLSID clsid, 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* psRed); + HRESULT set_red(short sRed); + HRESULT get_green(short FAR* psGreen); + HRESULT set_green(short sGreen); + HRESULT get_blue(short FAR* psBlue); + HRESULT set_blue(short sBlue); + +private: + CRemPoly(); + + HRESULT get_i2(DISPID dispid, short FAR* ps); + HRESULT set_i2(DISPID dispid, short s); + + 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]; +}; |