|
|
1.1 root 1: /***
2: *crempoly.h
3: *
4: * Copyright (C) 1992, Microsoft Corporation. All Rights Reserved.
5: * Information Contained Herein Is Proprietary and Confidential.
6: *
7: *Purpose:
8: * This file defines the CRemPoly remote polygon object.
9: *
10: *Implementation Notes:
11: *
12: *****************************************************************************/
13:
14:
15: class CRemPoint : public IUnknown {
16: public:
17: static CRemPoint FAR* Create(void);
18:
19: // standard IUnknown methods
20: STDMETHOD(QueryInterface)(REFIID riid, void FAR* FAR* ppvObj);
21: STDMETHOD_(unsigned long, AddRef)(void);
22: STDMETHOD_(unsigned long, Release)(void);
23:
24: short GetX();
25: void SetX(short x);
26: short GetY();
27: void SetY(short y);
28:
29: private:
30: CRemPoint() { m_refs = 0; }
31:
32: unsigned long m_refs;
33: IDispatch FAR* m_pdisp;
34: };
35:
36:
37: class CRemPoly : public IUnknown {
38: public:
39: static HRESULT Create(CLSID clsid, CRemPoly FAR* FAR*);
40:
41: // IUnknown methods
42: //
43: STDMETHOD(QueryInterface)(REFIID riid, void FAR* FAR* ppvObj);
44: STDMETHOD_(unsigned long, AddRef)(void);
45: STDMETHOD_(unsigned long, Release)(void);
46:
47: // Introduced methods
48: //
49: HRESULT Draw(void);
50: HRESULT Dump(void);
51: HRESULT Reset(void);
52: HRESULT AddPoint(short x, short y);
53: HRESULT EnumPoints(IEnumVARIANT FAR* FAR* ppenum);
54: HRESULT GetXOrigin(short FAR* pxorg);
55: HRESULT SetXOrigin(short xorg);
56: HRESULT GetYOrigin(short FAR* pyorg);
57: HRESULT SetYOrigin(short yorg);
58: HRESULT GetWidth(short FAR* pwidth);
59: HRESULT SetWidth(short width);
60:
61: HRESULT get_red(short FAR* psRed);
62: HRESULT set_red(short sRed);
63: HRESULT get_green(short FAR* psGreen);
64: HRESULT set_green(short sGreen);
65: HRESULT get_blue(short FAR* psBlue);
66: HRESULT set_blue(short sBlue);
67:
68: private:
69: CRemPoly();
70:
71: HRESULT get_i2(DISPID dispid, short FAR* ps);
72: HRESULT set_i2(DISPID dispid, short s);
73:
74: unsigned long m_refs;
75: IDispatch FAR* m_pdisp;
76:
77: // NOTE: this enumeration exists simply to allow us to symbolicly
78: // index the member name and id arrays (m_rgid and m_rgszMethods).
79: // This doesn't (necessarrily) have any connection to the vtable
80: // indices, it *only* needs to correspond correctly to the m_rgid
81: // and m_rgszMethods arrays.
82: //
83: enum CREMPOLY_METHODS {
84: IMETH_CREMPOLY_DRAW = 0,
85: IMETH_CREMPOLY_DUMP,
86: IMETH_CREMPOLY_RESET,
87: IMETH_CREMPOLY_ADDPOINT,
88: IMETH_CREMPOLY_ENUMPOINTS,
89: IMETH_CREMPOLY_GETXORIGIN,
90: IMETH_CREMPOLY_SETXORIGIN,
91: IMETH_CREMPOLY_GETYORIGIN,
92: IMETH_CREMPOLY_SETYORIGIN,
93: IMETH_CREMPOLY_GETWIDTH,
94: IMETH_CREMPOLY_SETWIDTH,
95: IMETH_CREMPOLY_GETRED,
96: IMETH_CREMPOLY_SETRED,
97: IMETH_CREMPOLY_GETGREEN,
98: IMETH_CREMPOLY_SETGREEN,
99: IMETH_CREMPOLY_GETBLUE,
100: IMETH_CREMPOLY_SETBLUE,
101: IMETH_CREMPOLY_MAX
102: };
103:
104: // member IDs - these are used by IDispatch::Invoke to identify the
105: // method or property on the remote object we accessing.
106: //
107: DISPID m_rgdispid[IMETH_CREMPOLY_MAX];
108:
109: // member names - these are used to learn the member IDs when we
110: // connect to the remote object.
111: //
112: static char FAR* m_rgszMethods[IMETH_CREMPOLY_MAX];
113: };
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.