|
|
1.1 ! root 1: /*** ! 2: *cpoint.h ! 3: * ! 4: * Copyright (C) 1992, Microsoft Corporation. All Rights Reserved. ! 5: * Information Contained Herein Is Proprietary and Confidential. ! 6: * ! 7: *Purpose: ! 8: * Definition of the CPoint class. ! 9: * ! 10: * The CPoint object exposes two properties for programatic access ! 11: * via the IDispatch interface. ! 12: * ! 13: * properties: ! 14: * X - the 'x' coordinate of the point ! 15: * Y - the 'y' coordinate of the point ! 16: * ! 17: *Implementation Notes: ! 18: * ! 19: *****************************************************************************/ ! 20: ! 21: #ifndef CLASS ! 22: #ifdef __TURBOC__ ! 23: #define CLASS class huge ! 24: #else ! 25: #define CLASS class FAR ! 26: #endif ! 27: #endif ! 28: ! 29: class CPoly; ! 30: ! 31: CLASS CPoint : public IDispatch { ! 32: friend class CPoly; ! 33: ! 34: public: ! 35: static CPoint FAR* Create(); ! 36: ! 37: /* IUnknown methods */ ! 38: STDMETHOD(QueryInterface)(REFIID riid, LPVOID FAR* ppvObj); ! 39: STDMETHOD_(ULONG, AddRef)(void); ! 40: STDMETHOD_(ULONG, Release)(void); ! 41: ! 42: /* IDispatch methods */ ! 43: STDMETHOD(GetTypeInfoCount)(UINT FAR* pcTypeInfo); ! 44: ! 45: STDMETHOD(GetTypeInfo)( ! 46: UINT iTypeInfo, ! 47: LCID lcid, ! 48: ITypeInfo FAR* FAR* ppTypeInfo); ! 49: ! 50: STDMETHOD(GetIDsOfNames)( ! 51: REFIID riid, ! 52: char FAR* FAR* rgszNames, ! 53: UINT cNames, ! 54: LCID lcid, ! 55: DISPID FAR* rgdispid); ! 56: ! 57: STDMETHOD(Invoke)( ! 58: LONG dispidMember, ! 59: REFIID riid, ! 60: LCID lcid, ! 61: WORD wFlags, ! 62: DISPPARAMS FAR* pdispparams, ! 63: VARIANT FAR* pvarResult, ! 64: EXCEPINFO FAR* pexcepinfo, ! 65: UINT FAR* pwArgErr); ! 66: ! 67: /* Introduced methods */ ! 68: ! 69: virtual short METHODCALLTYPE EXPORT GetX(void); ! 70: virtual void METHODCALLTYPE EXPORT SetX(short x); ! 71: virtual short METHODCALLTYPE EXPORT GetY(void); ! 72: virtual void METHODCALLTYPE EXPORT SetY(short y); ! 73: ! 74: private: ! 75: CPoint(); ! 76: ~CPoint(); ! 77: ! 78: ULONG m_refs; ! 79: ! 80: short m_x; ! 81: short m_y; ! 82: ! 83: ITypeInfo FAR* m_ptinfo; ! 84: }; ! 85: ! 86: // member DISPIDs ! 87: // ! 88: enum IDMEMBER_CPOINT { ! 89: IDMEMBER_CPOINT_GETX = 1, ! 90: IDMEMBER_CPOINT_SETX, ! 91: IDMEMBER_CPOINT_GETY, ! 92: IDMEMBER_CPOINT_SETY, ! 93: IDMEMBER_CPOINT_MAX ! 94: }; ! 95: ! 96: // member indices - this is an enumeration of all members on CPoint ! 97: // ! 98: enum IMETH_CPOINT { ! 99: IMETH_CPOINT_QUERYINTERFACE = 0, ! 100: IMETH_CPOINT_ADDREF, ! 101: IMETH_CPOINT_RELEASE, ! 102: IMETH_CPOINT_GETTYPEINFOCOUNT, ! 103: IMETH_CPOINT_GETTYPEINFO, ! 104: IMETH_CPOINT_GETIDSOFNAMES, ! 105: IMETH_CPOINT_INVOKE, ! 106: ! 107: IMETH_CPOINT_GETX, ! 108: IMETH_CPOINT_SETX, ! 109: IMETH_CPOINT_GETY, ! 110: IMETH_CPOINT_SETY ! 111: }; ! 112: ! 113: // structure used to link together lists of points ! 114: // ! 115: struct POINTLINK { ! 116: POINTLINK FAR* next; ! 117: CPoint FAR* ppoint; ! 118: }; ! 119: ! 120: // The CPoint Class Factory ! 121: // ! 122: CLASS CPointCF : public IClassFactory ! 123: { ! 124: public: ! 125: static IClassFactory FAR* Create(); ! 126: ! 127: /* IUnknown methods */ ! 128: STDMETHOD(QueryInterface)(REFIID iid, void FAR* FAR* ppv); ! 129: STDMETHOD_(ULONG, AddRef)(void); ! 130: STDMETHOD_(ULONG, Release)(void); ! 131: ! 132: /* IClassFactory methods */ ! 133: STDMETHOD(CreateInstance)( ! 134: IUnknown FAR* pUnkOuter, REFIID iid, void FAR* FAR* ppv); ! 135: STDMETHOD(LockServer)(BOOL fLock); ! 136: ! 137: private: ! 138: CPointCF(); ! 139: ~CPointCF(); ! 140: ! 141: ULONG m_refs; ! 142: };
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.