|
|
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, void FAR* FAR* ppvObj);
39: STDMETHOD_(unsigned long, AddRef)(void);
40: STDMETHOD_(unsigned long, Release)(void);
41:
42: /* IDispatch methods */
43: STDMETHOD(GetTypeInfoCount)(unsigned int FAR* pcTypeInfo);
44:
45: STDMETHOD(GetTypeInfo)(
46: unsigned int iTypeInfo,
47: LCID lcid,
48: ITypeInfo FAR* FAR* ppTypeInfo);
49:
50: STDMETHOD(GetIDsOfNames)(
51: REFIID riid,
52: char FAR* FAR* rgszNames,
53: unsigned int cNames,
54: LCID lcid,
55: DISPID FAR* rgdispid);
56:
57: STDMETHOD(Invoke)(
58: DISPID dispidMember,
59: REFIID riid,
60: LCID lcid,
61: unsigned short wFlags,
62: DISPPARAMS FAR* pdispparams,
63: VARIANT FAR* pvarResult,
64: EXCEPINFO FAR* pexcepinfo,
65: unsigned int FAR* pwArgErr);
66:
67: /* Introduced methods */
68:
69: virtual short PASCAL GetX(void);
70: virtual void PASCAL SetX(short x);
71: virtual short PASCAL GetY(void);
72: virtual void PASCAL SetY(short y);
73:
74: private:
75: CPoint();
76:
77: unsigned long m_refs;
78:
79: short m_x;
80: short m_y;
81: };
82:
83:
84: // member DISPIDs
85: //
86: enum IDMEMBER_CPOINT {
87: IDMEMBER_CPOINT_GETX = 1,
88: IDMEMBER_CPOINT_SETX,
89: IDMEMBER_CPOINT_GETY,
90: IDMEMBER_CPOINT_SETY,
91: IDMEMBER_CPOINT_MAX
92: };
93:
94: // structure used to link together lists of points
95: //
96: struct POINTLINK {
97: POINTLINK FAR* next;
98: CPoint FAR* ppoint;
99: };
100:
101:
102: // The CPoint Class Factory
103: //
104: CLASS CPointCF : public IClassFactory
105: {
106: public:
107: static IClassFactory FAR* Create();
108:
109: /* IUnknown methods */
110: STDMETHOD(QueryInterface)(REFIID iid, void FAR* FAR* ppv);
111: STDMETHOD_(unsigned long, AddRef)(void);
112: STDMETHOD_(unsigned long, Release)(void);
113:
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:
123: private:
124: CPointCF();
125:
126: unsigned long m_refs;
127: };
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.