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

Windows编程

开发平台:

Visual C++

  1. /*** 
  2. *cpoint.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. *  Definition of the CPoint class.
  14. *
  15. *  The CPoint object exposes two properties for programatic access
  16. *  via the IDispatch interface.
  17. *
  18. *  properties:
  19. *    X  - the 'x' coordinate of the point
  20. *    Y  - the 'y' coordinate of the point
  21. *
  22. *Implementation Notes:
  23. *
  24. *****************************************************************************/
  25. #ifndef CLASS
  26. #ifdef __TURBOC__
  27. #define CLASS class huge
  28. #else
  29. #define CLASS class FAR
  30. #endif
  31. #endif
  32. class CPoly;
  33. CLASS CPoint : public IDispatch {
  34.     friend class CPoly;
  35. public:
  36.     static CPoint FAR* Create();
  37.     /* IUnknown methods */
  38.     STDMETHOD(QueryInterface)(REFIID riid, void FAR* FAR* ppvObj);
  39.     STDMETHOD_(unsigned long, AddRef)(void);
  40.     STDMETHOD_(unsigned long, Release)(void);
  41.     /* IDispatch methods */
  42.     STDMETHOD(GetTypeInfoCount)(unsigned int FAR* pcTypeInfo);
  43.     STDMETHOD(GetTypeInfo)(
  44.       unsigned int iTypeInfo,
  45.       LCID lcid,
  46.       ITypeInfo FAR* FAR* ppTypeInfo);
  47.     STDMETHOD(GetIDsOfNames)(
  48.       REFIID riid,
  49.       OLECHAR FAR* FAR* rgszNames,
  50.       unsigned int cNames,
  51.       LCID lcid,
  52.       DISPID FAR* rgdispid);
  53.     STDMETHOD(Invoke)(
  54.       DISPID dispidMember,
  55.       REFIID riid,
  56.       LCID lcid,
  57.       unsigned short wFlags,
  58.       DISPPARAMS FAR* pdispparams,
  59.       VARIANT FAR* pvarResult,
  60.       EXCEPINFO FAR* pexcepinfo,
  61.       unsigned int FAR* pwArgErr);
  62.     /* Introduced methods */
  63.     virtual short METHODCALLTYPE EXPORT GetX(void);
  64.     virtual void  METHODCALLTYPE EXPORT SetX(short x);
  65.     virtual short METHODCALLTYPE EXPORT GetY(void);
  66.     virtual void  METHODCALLTYPE EXPORT SetY(short y);
  67. private:
  68.     CPoint();
  69.     unsigned long m_refs;
  70.     short m_x;
  71.     short m_y;
  72.     ITypeInfo FAR* m_ptinfo;
  73. };
  74. // member DISPIDs
  75. //
  76. enum IDMEMBER_CPOINT {
  77.     IDMEMBER_CPOINT_GETX = 1,
  78.     IDMEMBER_CPOINT_SETX,
  79.     IDMEMBER_CPOINT_GETY,
  80.     IDMEMBER_CPOINT_SETY,
  81.     IDMEMBER_CPOINT_MAX
  82. };
  83. // member indices - this is an enumeration of all members on CPoint
  84. //
  85. enum IMETH_CPOINT {
  86.     IMETH_CPOINT_QUERYINTERFACE = 0,
  87.     IMETH_CPOINT_ADDREF,
  88.     IMETH_CPOINT_RELEASE,
  89.     IMETH_CPOINT_GETTYPEINFOCOUNT,
  90.     IMETH_CPOINT_GETTYPEINFO,
  91.     IMETH_CPOINT_GETIDSOFNAMES,
  92.     IMETH_CPOINT_INVOKE,
  93.     IMETH_CPOINT_GETX,
  94.     IMETH_CPOINT_SETX,
  95.     IMETH_CPOINT_GETY,
  96.     IMETH_CPOINT_SETY
  97. };
  98. // structure used to link together lists of points
  99. //
  100. struct POINTLINK {
  101.     POINTLINK FAR* next;
  102.     CPoint FAR* ppoint;
  103. };
  104. // The CPoint Class Factory
  105. //
  106. CLASS CPointCF : public IClassFactory
  107. {
  108. public:
  109.     static IClassFactory FAR* Create();
  110.     /* IUnknown methods */
  111.     STDMETHOD(QueryInterface)(REFIID iid, void FAR* FAR* ppv);
  112.     STDMETHOD_(unsigned long, AddRef)(void);
  113.     STDMETHOD_(unsigned long, Release)(void);
  114.     /* IClassFactory methods */
  115.     STDMETHOD(CreateInstance)(
  116.       IUnknown FAR* pUnkOuter, REFIID iid, void FAR* FAR* ppv);
  117. #ifdef _MAC
  118.     STDMETHOD(LockServer)(unsigned long fLock);
  119. #else
  120.     STDMETHOD(LockServer)(BOOL fLock);
  121. #endif
  122. private:
  123.     CPointCF();
  124.     unsigned long m_refs;
  125. };