|
|
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.