CREMPOLY.H
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:3k
源码类别:

Windows编程

开发平台:

Visual C++

  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. class CRemPoly : public IUnknown {
  19. public:
  20.     static HRESULT Create(CLSID clsid, CRemPoly FAR* FAR*);
  21.     // IUnknown methods
  22.     //
  23.     STDMETHOD(QueryInterface)(REFIID riid, void FAR* FAR* ppvObj);
  24.     STDMETHOD_(unsigned long, AddRef)(void);
  25.     STDMETHOD_(unsigned long, Release)(void);
  26.     // Introduced methods
  27.     //
  28.     HRESULT Draw(void);
  29.     HRESULT Dump(void);
  30.     HRESULT Reset(void);
  31.     HRESULT AddPoint(short x, short y);
  32.     HRESULT EnumPoints(IEnumVARIANT FAR* FAR* ppenum);
  33.     HRESULT GetXOrigin(short FAR* pxorg);
  34.     HRESULT SetXOrigin(short xorg);
  35.     HRESULT GetYOrigin(short FAR* pyorg);
  36.     HRESULT SetYOrigin(short yorg);
  37.     HRESULT GetWidth(short FAR* pwidth);
  38.     HRESULT SetWidth(short width);
  39.     HRESULT get_red(short FAR* psRed);
  40.     HRESULT set_red(short sRed);
  41.     HRESULT get_green(short FAR* psGreen);
  42.     HRESULT set_green(short sGreen);
  43.     HRESULT get_blue(short FAR* psBlue);
  44.     HRESULT set_blue(short sBlue);
  45. private:
  46.     CRemPoly();
  47.     HRESULT get_i2(DISPID dispid, short FAR* ps);
  48.     HRESULT set_i2(DISPID dispid, short s);
  49.     unsigned long m_refs;
  50.     IDispatch FAR* m_pdisp;
  51.     // NOTE: this enumeration exists simply to allow us to symbolicly
  52.     // index the member name and id arrays (m_rgid and m_rgszMethods).
  53.     // This doesn't (necessarrily) have any connection to the vtable
  54.     // indices, it *only* needs to correspond correctly to the m_rgid
  55.     // and m_rgszMethods arrays.
  56.     //
  57.     enum CREMPOLY_METHODS {
  58. IMETH_CREMPOLY_DRAW = 0,
  59. IMETH_CREMPOLY_DUMP,
  60. IMETH_CREMPOLY_RESET,
  61. IMETH_CREMPOLY_ADDPOINT,
  62. IMETH_CREMPOLY_ENUMPOINTS,
  63. IMETH_CREMPOLY_GETXORIGIN,
  64. IMETH_CREMPOLY_SETXORIGIN,
  65. IMETH_CREMPOLY_GETYORIGIN,
  66. IMETH_CREMPOLY_SETYORIGIN,
  67. IMETH_CREMPOLY_GETWIDTH,
  68. IMETH_CREMPOLY_SETWIDTH,
  69. IMETH_CREMPOLY_GETRED,
  70. IMETH_CREMPOLY_SETRED,
  71. IMETH_CREMPOLY_GETGREEN,
  72. IMETH_CREMPOLY_SETGREEN,
  73. IMETH_CREMPOLY_GETBLUE,
  74. IMETH_CREMPOLY_SETBLUE,
  75. IMETH_CREMPOLY_MAX
  76.     };
  77.     // member IDs - these are used by IDispatch::Invoke to identify the
  78.     // method or property on the remote object we accessing.
  79.     //
  80.     DISPID m_rgdispid[IMETH_CREMPOLY_MAX];
  81.     // member names - these are used to learn the member IDs when we
  82.     // connect to the remote object.
  83.     //
  84.     static OLECHAR FAR* m_rgszMethods[IMETH_CREMPOLY_MAX];
  85. };