home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / msdn_vcb / samples / vc98 / sdk / com / oleaut / dispdemo / crempoly.h < prev    next >
C/C++ Source or Header  |  1997-10-05  |  3KB  |  96 lines

  1. /*** 
  2. *crempoly.h
  3. *
  4. *  This is a part of the Microsoft Source Code Samples.
  5. *
  6. *  Copyright (C) 1992-1997 Microsoft Corporation. All rights reserved.
  7. *
  8. *  This source code is only intended as a supplement to Microsoft Development
  9. *  Tools and/or WinHelp documentation.  See these sources for detailed
  10. *  information regarding the Microsoft samples programs.
  11. *
  12. *Purpose:
  13. *  This file defines the CRemPoly remote polygon object.
  14. *
  15. *Implementation Notes:
  16. *
  17. *****************************************************************************/
  18.  
  19. class CRemPoly : public IUnknown {
  20. public:
  21.     static HRESULT Create(CLSID clsid, CRemPoly FAR* FAR*);
  22.  
  23.     // IUnknown methods
  24.     //
  25.     STDMETHOD(QueryInterface)(REFIID riid, void FAR* FAR* ppvObj);
  26.     STDMETHOD_(unsigned long, AddRef)(void);
  27.     STDMETHOD_(unsigned long, Release)(void);
  28.  
  29.     // Introduced methods
  30.     //
  31.     HRESULT Draw(void);
  32.     HRESULT Dump(void);
  33.     HRESULT Reset(void);
  34.     HRESULT AddPoint(short x, short y);
  35.     HRESULT EnumPoints(IEnumVARIANT FAR* FAR* ppenum);
  36.     HRESULT GetXOrigin(short FAR* pxorg);
  37.     HRESULT SetXOrigin(short xorg);
  38.     HRESULT GetYOrigin(short FAR* pyorg);
  39.     HRESULT SetYOrigin(short yorg);
  40.     HRESULT GetWidth(short FAR* pwidth);
  41.     HRESULT SetWidth(short width);
  42.  
  43.     HRESULT get_red(short FAR* psRed);
  44.     HRESULT set_red(short sRed);
  45.     HRESULT get_green(short FAR* psGreen);
  46.     HRESULT set_green(short sGreen);
  47.     HRESULT get_blue(short FAR* psBlue);
  48.     HRESULT set_blue(short sBlue);
  49.  
  50. private:
  51.     CRemPoly();
  52.  
  53.     HRESULT get_i2(DISPID dispid, short FAR* ps);
  54.     HRESULT set_i2(DISPID dispid, short s);
  55.  
  56.     unsigned long m_refs;
  57.     IDispatch FAR* m_pdisp;
  58.  
  59.     // NOTE: this enumeration exists simply to allow us to symbolicly
  60.     // index the member name and id arrays (m_rgid and m_rgszMethods).
  61.     // This doesn't (necessarrily) have any connection to the vtable
  62.     // indices, it *only* needs to correspond correctly to the m_rgid
  63.     // and m_rgszMethods arrays.
  64.     //
  65.     enum CREMPOLY_METHODS {
  66.     IMETH_CREMPOLY_DRAW = 0,
  67.     IMETH_CREMPOLY_DUMP,
  68.     IMETH_CREMPOLY_RESET,
  69.     IMETH_CREMPOLY_ADDPOINT,
  70.     IMETH_CREMPOLY_ENUMPOINTS,
  71.     IMETH_CREMPOLY_GETXORIGIN,
  72.     IMETH_CREMPOLY_SETXORIGIN,
  73.     IMETH_CREMPOLY_GETYORIGIN,
  74.     IMETH_CREMPOLY_SETYORIGIN,
  75.     IMETH_CREMPOLY_GETWIDTH,
  76.     IMETH_CREMPOLY_SETWIDTH,
  77.     IMETH_CREMPOLY_GETRED,
  78.     IMETH_CREMPOLY_SETRED,
  79.     IMETH_CREMPOLY_GETGREEN,
  80.     IMETH_CREMPOLY_SETGREEN,
  81.     IMETH_CREMPOLY_GETBLUE,
  82.     IMETH_CREMPOLY_SETBLUE,
  83.     IMETH_CREMPOLY_MAX
  84.     };
  85.  
  86.     // member IDs - these are used by IDispatch::Invoke to identify the
  87.     // method or property on the remote object we accessing.
  88.     //
  89.     DISPID m_rgdispid[IMETH_CREMPOLY_MAX];
  90.  
  91.     // member names - these are used to learn the member IDs when we
  92.     // connect to the remote object.
  93.     //
  94.     static OLECHAR FAR* m_rgszMethods[IMETH_CREMPOLY_MAX];
  95. };
  96.