1 <!DOCTYPE HTML PUBLIC
"-//W3C//DTD HTML 4.0 Transitional//EN">
2 <html><head><meta http-equiv=
"Content-Type" content=
"text/html;charset=iso-8859-1">
3 <title>wxactivex.h Source File
</title>
4 <link href=
"doxygen.css" rel=
"stylesheet" type=
"text/css">
6 <!-- Generated by Doxygen 1.3-rc3 -->
8 <a class=
"qindex" href=
"index.html">Main Page
</a> <a class=
"qindex" href=
"namespaces.html">Namespace List
</a> <a class=
"qindex" href=
"hierarchy.html">Class Hierarchy
</a> <a class=
"qindex" href=
"classes.html">Alphabetical List
</a> <a class=
"qindex" href=
"annotated.html">Data Structures
</a> <a class=
"qindex" href=
"files.html">File List
</a> <a class=
"qindex" href=
"functions.html">Data Fields
</a> <a class=
"qindex" href=
"globals.html">Globals
</a> </center>
9 <hr><h1>wxactivex.h
</h1><a href=
"wxactivex_8h.html">Go to the documentation of this file.
</a><div class=
"fragment"><pre>00001
10 00005 <span class=
"preprocessor">#ifndef WX_ACTIVE_X
</span>
11 00006 <span class=
"preprocessor"></span><span class=
"preprocessor">#define WX_ACTIVE_X
</span>
12 00007 <span class=
"preprocessor"></span><span class=
"preprocessor">#pragma warning( disable :
4101 4786)
</span>
13 00008 <span class=
"preprocessor"></span><span class=
"preprocessor">#pragma warning( disable :
4786)
</span>
14 00009 <span class=
"preprocessor"></span>
16 00011 <span class=
"preprocessor">#include
<wx/setup.h
></span>
17 00012 <span class=
"preprocessor">#include
<wx/wx.h
></span>
18 00013 <span class=
"preprocessor">#include
<wx/variant.h
></span>
19 00014 <span class=
"preprocessor">#include
<wx/datetime.h
></span>
20 00015 <span class=
"preprocessor">#include
<oleidl.h
></span>
21 00016 <span class=
"preprocessor">#include
<exdisp.h
></span>
22 00017 <span class=
"preprocessor">#include
<docobj.h
></span>
23 00018 <span class=
"preprocessor">#include
<iostream
></span>
24 00019 <span class=
"preprocessor">#include
<vector
></span>
25 00020 <span class=
"preprocessor">#include
<map
></span>
26 00021 <span class=
"keyword">using
</span> <span class=
"keyword">namespace
</span>std;
28 <a name=
"l00024"></a><a class=
"code" href=
"namespaceNS__wxActiveX.html">00024</a> <span class=
"keyword">namespace
</span>NS_wxActiveX
30 <a name=
"l00029"></a><a class=
"code" href=
"structNS__wxActiveX_1_1less__wxStringI.html">00029</a> <span class=
"keyword">struct
</span><a class=
"code" href=
"structNS__wxActiveX_1_1less__wxStringI.html">less_wxStringI
</a>
32 00031 <span class=
"keywordtype">bool
</span> operator()(
<span class=
"keyword">const
</span> wxString
& x,
<span class=
"keyword">const
</span> wxString
& y)
<span class=
"keyword"> const
</span>
33 00032 <span class=
"keyword"> </span>{
34 00033 <span class=
"keywordflow">return
</span> x.CmpNoCase(y)
< 0;
40 <a name=
"l00045"></a><a class=
"code" href=
"classwxAutoOleInterface.html">00045</a> <span class=
"keyword">template
</span> <<span class=
"keyword">class
</span> I
> <span class=
"keyword">class
</span><a class=
"code" href=
"classwxAutoOleInterface.html">wxAutoOleInterface
</a>
42 00047 <span class=
"keyword">protected
</span>:
45 00050 <span class=
"keyword">public
</span>:
46 <a name=
"l00053"></a><a class=
"code" href=
"classwxAutoOleInterface.html#a0">00053</a> <span class=
"keyword">explicit
</span> <a class=
"code" href=
"classwxAutoOleInterface.html#a0">wxAutoOleInterface
</a>(I *pInterface = NULL) : m_interface(pInterface) {}
48 <a name=
"l00056"></a><a class=
"code" href=
"classwxAutoOleInterface.html#a1">00056</a> <a class=
"code" href=
"classwxAutoOleInterface.html#a0">wxAutoOleInterface
</a>(REFIID riid, IUnknown *pUnk) : m_interface(NULL)
50 00058 <a class=
"code" href=
"classwxAutoOleInterface.html#a9">QueryInterface
</a>(riid, pUnk);
52 <a name=
"l00061"></a><a class=
"code" href=
"classwxAutoOleInterface.html#a2">00061</a> <a class=
"code" href=
"classwxAutoOleInterface.html#a0">wxAutoOleInterface
</a>(REFIID riid, IDispatch *pDispatch) : m_interface(NULL)
54 00063 <a class=
"code" href=
"classwxAutoOleInterface.html#a9">QueryInterface
</a>(riid, pDispatch);
57 <a name=
"l00067"></a><a class=
"code" href=
"classwxAutoOleInterface.html#a3">00067</a> <a class=
"code" href=
"classwxAutoOleInterface.html#a0">wxAutoOleInterface
</a>(REFCLSID clsid, REFIID riid) : m_interface(NULL)
59 00069 <a class=
"code" href=
"classwxAutoOleInterface.html#a10">CreateInstance
</a>(clsid, riid);
62 <a name=
"l00073"></a><a class=
"code" href=
"classwxAutoOleInterface.html#a4">00073</a> <a class=
"code" href=
"classwxAutoOleInterface.html#a0">wxAutoOleInterface
</a>(
<span class=
"keyword">const
</span> <a class=
"code" href=
"classwxAutoOleInterface.html">wxAutoOleInterface
<I
></a>& ti) : m_interface(NULL)
64 00075 <a class=
"code" href=
"classwxAutoOleInterface.html#a5">operator =
</a>(ti);
67 <a name=
"l00079"></a><a class=
"code" href=
"classwxAutoOleInterface.html#a5">00079</a> <a class=
"code" href=
"classwxAutoOleInterface.html">wxAutoOleInterface
<I
></a>& <a class=
"code" href=
"classwxAutoOleInterface.html#a5">operator =
</a>(
<span class=
"keyword">const
</span> <a class=
"code" href=
"classwxAutoOleInterface.html">wxAutoOleInterface
<I
></a>& ti)
69 00081 <span class=
"keywordflow">if
</span> (ti.
<a class=
"code" href=
"classwxAutoOleInterface.html#n0">m_interface
</a>)
70 00082 ti.
<a class=
"code" href=
"classwxAutoOleInterface.html#n0">m_interface
</a>-
>AddRef();
71 00083 <a class=
"code" href=
"classwxAutoOleInterface.html#a8">Free
</a>();
72 00084 m_interface = ti.
<a class=
"code" href=
"classwxAutoOleInterface.html#n0">m_interface
</a>;
73 00085 <span class=
"keywordflow">return
</span> *
<span class=
"keyword">this
</span>;
76 <a name=
"l00090"></a><a class=
"code" href=
"classwxAutoOleInterface.html#a6">00090</a> <a class=
"code" href=
"classwxAutoOleInterface.html">wxAutoOleInterface
<I
></a>& <a class=
"code" href=
"classwxAutoOleInterface.html#a5">operator =
</a>(I *
&ti)
78 00092 <a class=
"code" href=
"classwxAutoOleInterface.html#a8">Free
</a>();
79 00093 m_interface = ti;
80 00094 <span class=
"keywordflow">return
</span> *
<span class=
"keyword">this
</span>;
83 <a name=
"l00098"></a><a class=
"code" href=
"classwxAutoOleInterface.html#a7">00098</a> <a class=
"code" href=
"classwxAutoOleInterface.html#a7">~wxAutoOleInterface
</a>()
85 00100 <a class=
"code" href=
"classwxAutoOleInterface.html#a8">Free
</a>();
89 <a name=
"l00105"></a><a class=
"code" href=
"classwxAutoOleInterface.html#a8">00105</a> <span class=
"keyword">inline
</span> <span class=
"keywordtype">void
</span> <a class=
"code" href=
"classwxAutoOleInterface.html#a8">Free
</a>()
91 00107 <span class=
"keywordflow">if
</span> (m_interface)
92 00108 m_interface-
>Release();
93 00109 m_interface = NULL;
96 <a name=
"l00113"></a><a class=
"code" href=
"classwxAutoOleInterface.html#a9">00113</a> HRESULT
<a class=
"code" href=
"classwxAutoOleInterface.html#a9">QueryInterface
</a>(REFIID riid, IUnknown *pUnk)
98 00115 <a class=
"code" href=
"classwxAutoOleInterface.html#a8">Free
</a>();
99 00116 wxASSERT(pUnk != NULL);
100 00117 <span class=
"keywordflow">return
</span> pUnk-
>QueryInterface(riid, (
<span class=
"keywordtype">void
</span> **)
&m_interface);
103 <a name=
"l00121"></a><a class=
"code" href=
"classwxAutoOleInterface.html#a10">00121</a> HRESULT
<a class=
"code" href=
"classwxAutoOleInterface.html#a10">CreateInstance
</a>(REFCLSID clsid, REFIID riid)
105 00123 <a class=
"code" href=
"classwxAutoOleInterface.html#a8">Free
</a>();
106 00124 <span class=
"keywordflow">return
</span> CoCreateInstance(clsid, NULL, CLSCTX_ALL, riid, (
<span class=
"keywordtype">void
</span> **)
&m_interface);
110 <a name=
"l00129"></a><a class=
"code" href=
"classwxAutoOleInterface.html#a11">00129</a> <span class=
"keyword">inline
</span> <a class=
"code" href=
"classwxAutoOleInterface.html#a11">operator I *
</a>()
<span class=
"keyword"> const
</span>{
<span class=
"keywordflow">return
</span> m_interface;}
112 <a name=
"l00132"></a><a class=
"code" href=
"classwxAutoOleInterface.html#a12">00132</a> <span class=
"keyword">inline
</span> I*
<a class=
"code" href=
"classwxAutoOleInterface.html#a12">operator -
></a>() {
<span class=
"keywordflow">return
</span> m_interface;}
113 <a name=
"l00134"></a><a class=
"code" href=
"classwxAutoOleInterface.html#a13">00134</a> <span class=
"keyword">inline
</span> I**
<a class=
"code" href=
"classwxAutoOleInterface.html#a13">GetRef
</a>() {
<span class=
"keywordflow">return
</span> &m_interface;}
114 <a name=
"l00136"></a><a class=
"code" href=
"classwxAutoOleInterface.html#a14">00136</a> <span class=
"keyword">inline
</span> <span class=
"keywordtype">bool
</span> <a class=
"code" href=
"classwxAutoOleInterface.html#a14">Ok
</a>()
<span class=
"keyword"> const
</span>{
<span class=
"keywordflow">return
</span> m_interface != NULL;}
118 00142 wxString
<a class=
"code" href=
"wxactivex_8h.html#a13">OLEHResultToString
</a>(HRESULT hr);
119 00145 wxString
<a class=
"code" href=
"wxactivex_8h.html#a14">GetIIDName
</a>(REFIID riid);
121 00147 <span class=
"comment">//#define __WXOLEDEBUG
</span>
124 00150 <span class=
"preprocessor">#ifdef __WXOLEDEBUG
</span>
125 00151 <span class=
"preprocessor"></span><span class=
"preprocessor"> #define WXOLE_TRACE(str) {OutputDebugString(str);OutputDebugString("\r\n");}
</span>
126 00152 <span class=
"preprocessor"></span><span class=
"preprocessor"> #define WXOLE_TRACEOUT(stuff)\
</span>
127 00153 <span class=
"preprocessor"> {\
</span>
128 00154 <span class=
"preprocessor"> wxString os;\
</span>
129 00155 <span class=
"preprocessor"> os
<< stuff
<< "\r\n";\
</span>
130 00156 <span class=
"preprocessor"> WXOLE_TRACE(os.mb_str());\
</span>
131 00157 <span class=
"preprocessor"> }
</span>
132 00158 <span class=
"preprocessor"></span>
133 00159 <span class=
"preprocessor"> #define WXOLE_WARN(__hr,msg)\
</span>
134 00160 <span class=
"preprocessor"> {\
</span>
135 00161 <span class=
"preprocessor"> if (__hr != S_OK)\
</span>
136 00162 <span class=
"preprocessor"> {\
</span>
137 00163 <span class=
"preprocessor"> wxString s = "*** ";\
</span>
138 00164 <span class=
"preprocessor"> s += msg;\
</span>
139 00165 <span class=
"preprocessor"> s += " : "+ OLEHResultToString(__hr);\
</span>
140 00166 <span class=
"preprocessor"> WXOLE_TRACE(s.c_str());\
</span>
141 00167 <span class=
"preprocessor"> }\
</span>
142 00168 <span class=
"preprocessor"> }
</span>
143 00169 <span class=
"preprocessor"></span><span class=
"preprocessor">#else
</span>
144 00170 <span class=
"preprocessor"></span><span class=
"preprocessor"> #define WXOLE_TRACE(str)
</span>
145 00171 <span class=
"preprocessor"></span><span class=
"preprocessor"> #define WXOLE_TRACEOUT(stuff)
</span>
146 00172 <span class=
"preprocessor"></span><span class=
"preprocessor"> #define WXOLE_WARN(_proc,msg) {_proc;}
</span>
147 00173 <span class=
"preprocessor"></span><span class=
"preprocessor">#endif
</span>
148 00174 <span class=
"preprocessor"></span>
149 00175 <span class=
"keyword">class
</span>wxOleInit
151 00177 <span class=
"keyword">public
</span>:
152 00178 <span class=
"keyword">static
</span> IMalloc *GetIMalloc();
158 00184 <span class=
"preprocessor">#define DECLARE_OLE_UNKNOWN(cls)\
</span>
159 00185 <span class=
"preprocessor"> private:\
</span>
160 00186 <span class=
"preprocessor"> class TAutoInitInt\
</span>
161 00187 <span class=
"preprocessor"> {\
</span>
162 00188 <span class=
"preprocessor"> public:\
</span>
163 00189 <span class=
"preprocessor"> LONG l;\
</span>
164 00190 <span class=
"preprocessor"> TAutoInitInt() : l(
0) {}\
</span>
165 00191 <span class=
"preprocessor"> };\
</span>
166 00192 <span class=
"preprocessor"> TAutoInitInt refCount, lockCount;\
</span>
167 00193 <span class=
"preprocessor"> wxOleInit oleInit;\
</span>
168 00194 <span class=
"preprocessor"> static void _GetInterface(cls *self, REFIID iid, void **_interface, const char *
&desc);\
</span>
169 00195 <span class=
"preprocessor"> public:\
</span>
170 00196 <span class=
"preprocessor"> LONG GetRefCount();\
</span>
171 00197 <span class=
"preprocessor"> HRESULT STDMETHODCALLTYPE QueryInterface(REFIID iid, void ** ppvObject);\
</span>
172 00198 <span class=
"preprocessor"> ULONG STDMETHODCALLTYPE AddRef();\
</span>
173 00199 <span class=
"preprocessor"> ULONG STDMETHODCALLTYPE Release();\
</span>
174 00200 <span class=
"preprocessor"> ULONG STDMETHODCALLTYPE AddLock();\
</span>
175 00201 <span class=
"preprocessor"> ULONG STDMETHODCALLTYPE ReleaseLock()
</span>
176 00202 <span class=
"preprocessor"></span>
177 00203 <span class=
"preprocessor">#define DEFINE_OLE_TABLE(cls)\
</span>
178 00204 <span class=
"preprocessor"> LONG cls::GetRefCount() {return refCount.l;}\
</span>
179 00205 <span class=
"preprocessor"> HRESULT STDMETHODCALLTYPE cls::QueryInterface(REFIID iid, void ** ppvObject)\
</span>
180 00206 <span class=
"preprocessor"> {\
</span>
181 00207 <span class=
"preprocessor"> if (! ppvObject)\
</span>
182 00208 <span class=
"preprocessor"> {\
</span>
183 00209 <span class=
"preprocessor"> WXOLE_TRACE("*** NULL POINTER ***");\
</span>
184 00210 <span class=
"preprocessor"> return E_FAIL;\
</span>
185 00211 <span class=
"preprocessor"> };\
</span>
186 00212 <span class=
"preprocessor"> const char *desc = NULL;\
</span>
187 00213 <span class=
"preprocessor"> cls::_GetInterface(this, iid, ppvObject, desc);\
</span>
188 00214 <span class=
"preprocessor"> if (! *ppvObject)\
</span>
189 00215 <span class=
"preprocessor"> {\
</span>
190 00216 <span class=
"preprocessor"> WXOLE_TRACEOUT("
<"
<< GetIIDName(iid).c_str()
<< "
> Not Found");\
</span>
191 00217 <span class=
"preprocessor"> return E_NOINTERFACE;\
</span>
192 00218 <span class=
"preprocessor"> };\
</span>
193 00219 <span class=
"preprocessor"> WXOLE_TRACEOUT("QI :
<"
<< desc
<<"
>");\
</span>
194 00220 <span class=
"preprocessor"> ((IUnknown * )(*ppvObject))-
>AddRef();\
</span>
195 00221 <span class=
"preprocessor"> return S_OK;\
</span>
196 00222 <span class=
"preprocessor"> };\
</span>
197 00223 <span class=
"preprocessor"> ULONG STDMETHODCALLTYPE cls::AddRef()\
</span>
198 00224 <span class=
"preprocessor"> {\
</span>
199 00225 <span class=
"preprocessor"> WXOLE_TRACEOUT(# cls
<< "::Add ref("
<< refCount.l
<< ")");\
</span>
200 00226 <span class=
"preprocessor"> InterlockedIncrement(
&refCount.l);\
</span>
201 00227 <span class=
"preprocessor"> return refCount.l;\
</span>
202 00228 <span class=
"preprocessor"> };\
</span>
203 00229 <span class=
"preprocessor"> ULONG STDMETHODCALLTYPE cls::Release()\
</span>
204 00230 <span class=
"preprocessor"> {\
</span>
205 00231 <span class=
"preprocessor"> if (refCount.l
> 0)\
</span>
206 00232 <span class=
"preprocessor"> {\
</span>
207 00233 <span class=
"preprocessor"> InterlockedDecrement(
&refCount.l);\
</span>
208 00234 <span class=
"preprocessor"> WXOLE_TRACEOUT(# cls
<< "::Del ref("
<< refCount.l
<< ")");\
</span>
209 00235 <span class=
"preprocessor"> if (refCount.l ==
0)\
</span>
210 00236 <span class=
"preprocessor"> {\
</span>
211 00237 <span class=
"preprocessor"> delete this;\
</span>
212 00238 <span class=
"preprocessor"> return
0;\
</span>
213 00239 <span class=
"preprocessor"> };\
</span>
214 00240 <span class=
"preprocessor"> return refCount.l;\
</span>
215 00241 <span class=
"preprocessor"> }\
</span>
216 00242 <span class=
"preprocessor"> else\
</span>
217 00243 <span class=
"preprocessor"> return
0;\
</span>
218 00244 <span class=
"preprocessor"> }\
</span>
219 00245 <span class=
"preprocessor"> ULONG STDMETHODCALLTYPE cls::AddLock()\
</span>
220 00246 <span class=
"preprocessor"> {\
</span>
221 00247 <span class=
"preprocessor"> WXOLE_TRACEOUT(# cls
<< "::Add Lock("
<< lockCount.l
<< ")");\
</span>
222 00248 <span class=
"preprocessor"> InterlockedIncrement(
&lockCount.l);\
</span>
223 00249 <span class=
"preprocessor"> return lockCount.l;\
</span>
224 00250 <span class=
"preprocessor"> };\
</span>
225 00251 <span class=
"preprocessor"> ULONG STDMETHODCALLTYPE cls::ReleaseLock()\
</span>
226 00252 <span class=
"preprocessor"> {\
</span>
227 00253 <span class=
"preprocessor"> if (lockCount.l
> 0)\
</span>
228 00254 <span class=
"preprocessor"> {\
</span>
229 00255 <span class=
"preprocessor"> InterlockedDecrement(
&lockCount.l);\
</span>
230 00256 <span class=
"preprocessor"> WXOLE_TRACEOUT(# cls
<< "::Del Lock("
<< lockCount.l
<< ")");\
</span>
231 00257 <span class=
"preprocessor"> return lockCount.l;\
</span>
232 00258 <span class=
"preprocessor"> }\
</span>
233 00259 <span class=
"preprocessor"> else\
</span>
234 00260 <span class=
"preprocessor"> return
0;\
</span>
235 00261 <span class=
"preprocessor"> }\
</span>
236 00262 <span class=
"preprocessor"> DEFINE_OLE_BASE(cls)
</span>
237 00263 <span class=
"preprocessor"></span>
238 00264 <span class=
"preprocessor">#define DEFINE_OLE_BASE(cls)\
</span>
239 00265 <span class=
"preprocessor"> void cls::_GetInterface(cls *self, REFIID iid, void **_interface, const char *
&desc)\
</span>
240 00266 <span class=
"preprocessor"> {\
</span>
241 00267 <span class=
"preprocessor"> *_interface = NULL;\
</span>
242 00268 <span class=
"preprocessor"> desc = NULL;
</span>
243 00269 <span class=
"preprocessor"></span>
244 00270 <span class=
"preprocessor">#define OLE_INTERFACE(_iid, _type)\
</span>
245 00271 <span class=
"preprocessor"> if (IsEqualIID(iid, _iid))\
</span>
246 00272 <span class=
"preprocessor"> {\
</span>
247 00273 <span class=
"preprocessor"> WXOLE_TRACE("Found Interface
<" # _type "
>");\
</span>
248 00274 <span class=
"preprocessor"> *_interface = (IUnknown *) (_type *) self;\
</span>
249 00275 <span class=
"preprocessor"> desc = # _iid;\
</span>
250 00276 <span class=
"preprocessor"> return;\
</span>
251 00277 <span class=
"preprocessor"> }
</span>
252 00278 <span class=
"preprocessor"></span>
253 00279 <span class=
"preprocessor">#define OLE_IINTERFACE(_face) OLE_INTERFACE(IID_##_face, _face)
</span>
254 00280 <span class=
"preprocessor"></span>
255 00281 <span class=
"preprocessor">#define OLE_INTERFACE_CUSTOM(func)\
</span>
256 00282 <span class=
"preprocessor"> if (func(self, iid, _interface, desc))\
</span>
257 00283 <span class=
"preprocessor"> {\
</span>
258 00284 <span class=
"preprocessor"> return;\
</span>
259 00285 <span class=
"preprocessor"> }
</span>
260 00286 <span class=
"preprocessor"></span>
261 00287 <span class=
"preprocessor">#define END_OLE_TABLE\
</span>
262 00288 <span class=
"preprocessor"> }
</span>
263 00289 <span class=
"preprocessor"></span>
266 <a name=
"l00329"></a><a class=
"code" href=
"classwxActiveX.html">00329</a> <span class=
"keyword">class
</span><a class=
"code" href=
"classwxActiveX.html">wxActiveX
</a> :
<span class=
"keyword">public
</span> wxWindow {
267 00330 <span class=
"keyword">public
</span>:
268 <a name=
"l00333"></a><a class=
"code" href=
"classwxActiveX_1_1ParamX.html">00333</a> <span class=
"keyword">class
</span><a class=
"code" href=
"classwxActiveX_1_1ParamX.html">ParamX
</a>
270 00335 <span class=
"keyword">public
</span>:
272 00337 <span class=
"keywordtype">bool
</span> isPtr, isSafeArray;
276 00341 <a class=
"code" href=
"classwxActiveX_1_1ParamX.html">ParamX
</a>() : vt(VT_EMPTY) {}
277 00342 <span class=
"keyword">inline
</span> <span class=
"keywordtype">bool
</span> IsIn()
<span class=
"keyword"> const
</span>{
<span class=
"keywordflow">return
</span> (flags
& IDLFLAG_FIN) !=
0;}
278 00343 <span class=
"keyword">inline
</span> <span class=
"keywordtype">bool
</span> IsOut()
<span class=
"keyword"> const
</span>{
<span class=
"keywordflow">return
</span> (flags
& IDLFLAG_FOUT) !=
0;}
279 00344 <span class=
"keyword">inline
</span> <span class=
"keywordtype">bool
</span> IsRetVal()
<span class=
"keyword"> const
</span>{
<span class=
"keywordflow">return
</span> (flags
& IDLFLAG_FRETVAL) !=
0;}
281 00346 <span class=
"keyword">typedef
</span> vector
<ParamX
> ParamXArray;
283 <a name=
"l00350"></a><a class=
"code" href=
"classwxActiveX_1_1FuncX.html">00350</a> <span class=
"keyword">class
</span><a class=
"code" href=
"classwxActiveX_1_1FuncX.html">FuncX
</a>
285 00352 <span class=
"keyword">public
</span>:
287 00354 MEMBERID memid;
288 00355 <span class=
"keywordtype">bool
</span> hasOut;
290 00357 <a class=
"code" href=
"classwxActiveX_1_1ParamX.html">ParamX
</a> retType;
291 00358 ParamXArray params;
294 <a name=
"l00362"></a><a class=
"code" href=
"classwxActiveX_1_1PropX.html">00362</a> <span class=
"keyword">class
</span><a class=
"code" href=
"classwxActiveX_1_1PropX.html">PropX
</a>
296 00364 <span class=
"keyword">public
</span>:
298 00366 MEMBERID memid;
299 00367 <a class=
"code" href=
"classwxActiveX_1_1ParamX.html">ParamX
</a> type;
300 00368 <a class=
"code" href=
"classwxActiveX_1_1ParamX.html">ParamX
</a> arg;
301 00369 <span class=
"keywordtype">bool
</span> putByRef;
303 00371 <a class=
"code" href=
"classwxActiveX_1_1PropX.html">PropX
</a>() : putByRef (
<span class=
"keyword">false
</span>) {}
304 00372 <span class=
"keyword">inline
</span> <span class=
"keywordtype">bool
</span> CanGet()
<span class=
"keyword"> const
</span>{
<span class=
"keywordflow">return
</span> type.
<a class=
"code" href=
"classwxActiveX_1_1ParamX.html#m3">vt
</a> != VT_EMPTY;}
305 00373 <span class=
"keyword">inline
</span> <span class=
"keywordtype">bool
</span> CanSet()
<span class=
"keyword"> const
</span>{
<span class=
"keywordflow">return
</span> arg.
<a class=
"code" href=
"classwxActiveX_1_1ParamX.html#m3">vt
</a> != VT_EMPTY;}
308 00377 <a class=
"code" href=
"classwxActiveX.html#a0">wxActiveX
</a>(wxWindow * parent, REFCLSID clsid, wxWindowID id = -
1,
309 00378 <span class=
"keyword">const
</span> wxPoint
& pos = wxDefaultPosition,
310 00379 <span class=
"keyword">const
</span> wxSize
& size = wxDefaultSize,
311 00380 <span class=
"keywordtype">long
</span> style =
0,
312 00381 <span class=
"keyword">const
</span> wxString
& name = wxPanelNameStr);
313 00383 <a class=
"code" href=
"classwxActiveX.html#a0">wxActiveX
</a>(wxWindow * parent, wxString progId, wxWindowID id = -
1,
314 00384 <span class=
"keyword">const
</span> wxPoint
& pos = wxDefaultPosition,
315 00385 <span class=
"keyword">const
</span> wxSize
& size = wxDefaultSize,
316 00386 <span class=
"keywordtype">long
</span> style =
0,
317 00387 <span class=
"keyword">const
</span> wxString
& name = wxPanelNameStr);
318 00388 <span class=
"keyword">virtual
</span> ~
<a class=
"code" href=
"classwxActiveX.html">wxActiveX
</a>();
320 <a name=
"l00391"></a><a class=
"code" href=
"classwxActiveX.html#a3">00391</a> <span class=
"keyword">inline
</span> <span class=
"keywordtype">int
</span> <a class=
"code" href=
"classwxActiveX.html#a3">GetEventCount
</a>()
<span class=
"keyword"> const
</span>{
<span class=
"keywordflow">return
</span> m_events.size();}
321 00394 <span class=
"keyword">const
</span> FuncX
& <a class=
"code" href=
"classwxActiveX.html#a4">GetEventDesc
</a>(
<span class=
"keywordtype">int
</span> idx)
<span class=
"keyword">const
</span>;
323 <a name=
"l00397"></a><a class=
"code" href=
"classwxActiveX.html#a5">00397</a> <span class=
"keyword">inline
</span> <span class=
"keywordtype">int
</span> <a class=
"code" href=
"classwxActiveX.html#a5">GetPropCount
</a>()
<span class=
"keyword"> const
</span>{
<span class=
"keywordflow">return
</span> m_props.size();}
324 00400 <span class=
"keyword">const
</span> PropX
& <a class=
"code" href=
"classwxActiveX.html#a6">GetPropDesc
</a>(
<span class=
"keywordtype">int
</span> idx)
<span class=
"keyword">const
</span>;
325 00403 <span class=
"keyword">const
</span> PropX
& <a class=
"code" href=
"classwxActiveX.html#a6">GetPropDesc
</a>(wxString name)
<span class=
"keyword">const
</span>;
327 <a name=
"l00406"></a><a class=
"code" href=
"classwxActiveX.html#a8">00406</a> <span class=
"keyword">inline
</span> <span class=
"keywordtype">int
</span> <a class=
"code" href=
"classwxActiveX.html#a8">GetMethodCount
</a>()
<span class=
"keyword"> const
</span>{
<span class=
"keywordflow">return
</span> m_methods.size();}
328 00409 <span class=
"keyword">const
</span> FuncX
& <a class=
"code" href=
"classwxActiveX.html#a9">GetMethodDesc
</a>(
<span class=
"keywordtype">int
</span> idx)
<span class=
"keyword">const
</span>;
329 00412 <span class=
"keyword">const
</span> FuncX
& <a class=
"code" href=
"classwxActiveX.html#a9">GetMethodDesc
</a>(wxString name)
<span class=
"keyword">const
</span>;
331 00415 <span class=
"keywordtype">void
</span> <a class=
"code" href=
"classwxActiveX.html#a11">SetProp
</a>(MEMBERID name, VARIANTARG
& value);
332 00417 <span class=
"keywordtype">void
</span> <a class=
"code" href=
"classwxActiveX.html#a11">SetProp
</a>(
<span class=
"keyword">const
</span> wxString
&name,
<span class=
"keyword">const
</span> wxVariant
&value);
334 00419 <span class=
"keyword">class
</span>wxPropertySetter
336 00421 <span class=
"keyword">public
</span>:
337 00422 <a class=
"code" href=
"classwxActiveX.html">wxActiveX
</a> *m_ctl;
338 00423 wxString m_propName;
340 00425 wxPropertySetter(
<a class=
"code" href=
"classwxActiveX.html">wxActiveX
</a> *ctl, wxString propName) :
341 00426 m_ctl(ctl), m_propName(propName) {}
343 00428 <span class=
"keyword">inline
</span> <span class=
"keyword">const
</span> wxPropertySetter
& operator = (wxVariant v)
<span class=
"keyword"> const
</span>
344 00429 <span class=
"keyword"> </span>{
345 00430 m_ctl-
><a class=
"code" href=
"classwxActiveX.html#a11">SetProp
</a>(m_propName, v);
346 00431 <span class=
"keywordflow">return
</span> *
<span class=
"keyword">this
</span>;
349 00434 <span class=
"keyword">inline
</span> operator wxVariant()
<span class=
"keyword"> const
</span>{
<span class=
"keywordflow">return
</span> m_ctl-
><a class=
"code" href=
"classwxActiveX.html#a16">GetPropAsWxVariant
</a>(m_propName);};
350 00435 <span class=
"keyword">inline
</span> operator wxString()
<span class=
"keyword"> const
</span>{
<span class=
"keywordflow">return
</span> m_ctl-
><a class=
"code" href=
"classwxActiveX.html#a17">GetPropAsString
</a>(m_propName);};
351 00436 <span class=
"keyword">inline
</span> operator char()
<span class=
"keyword"> const
</span>{
<span class=
"keywordflow">return
</span> m_ctl-
><a class=
"code" href=
"classwxActiveX.html#a18">GetPropAsChar
</a>(m_propName);};
352 00437 <span class=
"keyword">inline
</span> operator long()
<span class=
"keyword"> const
</span>{
<span class=
"keywordflow">return
</span> m_ctl-
><a class=
"code" href=
"classwxActiveX.html#a19">GetPropAsLong
</a>(m_propName);};
353 00438 <span class=
"keyword">inline
</span> operator bool()
<span class=
"keyword"> const
</span>{
<span class=
"keywordflow">return
</span> m_ctl-
><a class=
"code" href=
"classwxActiveX.html#a20">GetPropAsBool
</a>(m_propName);};
354 00439 <span class=
"keyword">inline
</span> operator double()
<span class=
"keyword"> const
</span>{
<span class=
"keywordflow">return
</span> m_ctl-
><a class=
"code" href=
"classwxActiveX.html#a21">GetPropAsDouble
</a>(m_propName);};
355 00440 <span class=
"keyword">inline
</span> operator wxDateTime()
<span class=
"keyword"> const
</span>{
<span class=
"keywordflow">return
</span> m_ctl-
><a class=
"code" href=
"classwxActiveX.html#a22">GetPropAsDateTime
</a>(m_propName);};
356 00441 <span class=
"keyword">inline
</span> operator void *()
<span class=
"keyword"> const
</span>{
<span class=
"keywordflow">return
</span> m_ctl-
><a class=
"code" href=
"classwxActiveX.html#a23">GetPropAsPointer
</a>(m_propName);};
359 <a name=
"l00458"></a><a class=
"code" href=
"classwxActiveX.html#a13">00458</a> <span class=
"keyword">inline
</span> wxPropertySetter
<a class=
"code" href=
"classwxActiveX.html#a13">Prop
</a>(wxString name) {
<span class=
"keywordflow">return
</span> wxPropertySetter(
<span class=
"keyword">this
</span>, name);}
361 00460 VARIANT GetPropAsVariant(MEMBERID name);
362 00461 VARIANT GetPropAsVariant(
<span class=
"keyword">const
</span> wxString
& name);
363 00462 wxVariant GetPropAsWxVariant(
<span class=
"keyword">const
</span> wxString
& name);
364 00463 wxString GetPropAsString(
<span class=
"keyword">const
</span> wxString
& name);
365 00464 <span class=
"keywordtype">char
</span> GetPropAsChar(
<span class=
"keyword">const
</span> wxString
& name);
366 00465 <span class=
"keywordtype">long
</span> GetPropAsLong(
<span class=
"keyword">const
</span> wxString
& name);
367 00466 <span class=
"keywordtype">bool
</span> GetPropAsBool(
<span class=
"keyword">const
</span> wxString
& name);
368 00467 <span class=
"keywordtype">double
</span> GetPropAsDouble(
<span class=
"keyword">const
</span> wxString
& name);
369 00468 wxDateTime GetPropAsDateTime(
<span class=
"keyword">const
</span> wxString
& name);
370 00469 <span class=
"keywordtype">void
</span> *GetPropAsPointer(
<span class=
"keyword">const
</span> wxString
& name);
372 00471 <span class=
"comment">// methods
</span>
373 00472 <span class=
"comment">// VARIANTARG form is passed straight to Invoke,
</span>
374 00473 <span class=
"comment">// so args in *REVERSE* order
</span>
375 00474 VARIANT
<a class=
"code" href=
"classwxActiveX.html#a26">CallMethod
</a>(MEMBERID name, VARIANTARG args[],
<span class=
"keywordtype">int
</span> argc);
376 00475 VARIANT
<a class=
"code" href=
"classwxActiveX.html#a26">CallMethod
</a>(wxString name, VARIANTARG args[] = NULL,
<span class=
"keywordtype">int
</span> argc = -
1);
377 00476 <span class=
"comment">// args are in *NORMAL* order
</span>
378 00477 <span class=
"comment">// args can be a single wxVariant or an array
</span>
379 00493 <span class=
"comment"> wxVariant CallMethod(wxString name, wxVariant args[], int nargs = -
1);
</span>
381 00495 HRESULT ConnectAdvise(REFIID riid, IUnknown *eventSink);
383 00497 <span class=
"keywordtype">void
</span> OnSize(wxSizeEvent
&);
384 00498 <span class=
"keywordtype">void
</span> OnPaint(wxPaintEvent
& event);
385 00499 <span class=
"keywordtype">void
</span> OnMouse(wxMouseEvent
& event);
386 00500 <span class=
"keywordtype">void
</span> OnSetFocus(wxFocusEvent
&);
387 00501 <span class=
"keywordtype">void
</span> OnKillFocus(wxFocusEvent
&);
389 00503 DECLARE_EVENT_TABLE();
391 00505 <span class=
"keyword">protected
</span>:
392 00506 <span class=
"keyword">friend
</span> <span class=
"keyword">class
</span>FrameSite;
393 00507 <span class=
"keyword">friend
</span> <span class=
"keyword">class
</span>wxActiveXEvents;
395 00509 <span class=
"keyword">typedef
</span> map
<MEMBERID, FuncX
> FuncXMap;
396 00510 <span class=
"keyword">typedef
</span> map
<wxString, FuncX, NS_wxActiveX::less_wxStringI
> FuncXStringMap;
397 00511 <span class=
"keyword">typedef
</span> map
<wxString, PropX, NS_wxActiveX::less_wxStringI
> PropXMap;
398 00512 <span class=
"keyword">typedef
</span> <a class=
"code" href=
"classwxAutoOleInterface.html">wxAutoOleInterface
<IConnectionPoint
></a> wxOleConnectionPoint;
399 00513 <span class=
"keyword">typedef
</span> pair
<wxOleConnectionPoint, DWORD
> wxOleConnection;
400 00514 <span class=
"keyword">typedef
</span> vector
<wxOleConnection
> wxOleConnectionArray;
402 00516 <a class=
"code" href=
"classwxAutoOleInterface.html">wxAutoOleInterface
<IDispatch
></a> m_Dispatch;
403 00517 <a class=
"code" href=
"classwxAutoOleInterface.html">wxAutoOleInterface
<IOleClientSite
></a> m_clientSite;
404 00518 <a class=
"code" href=
"classwxAutoOleInterface.html">wxAutoOleInterface
<IUnknown
></a> m_ActiveX;
405 00519 <a class=
"code" href=
"classwxAutoOleInterface.html">wxAutoOleInterface
<IOleObject
></a> m_oleObject;
406 00520 <a class=
"code" href=
"classwxAutoOleInterface.html">wxAutoOleInterface
<IOleInPlaceObject
></a> m_oleInPlaceObject;
407 00521 <a class=
"code" href=
"classwxAutoOleInterface.html">wxAutoOleInterface
<IOleInPlaceActiveObject
></a>
409 00523 m_oleInPlaceActiveObject;
410 00524 <a class=
"code" href=
"classwxAutoOleInterface.html">wxAutoOleInterface
<IOleDocumentView
></a> m_docView;
411 00525 <a class=
"code" href=
"classwxAutoOleInterface.html">wxAutoOleInterface
<IViewObject
></a> m_viewObject;
412 00526 HWND m_oleObjectHWND;
413 00527 <span class=
"keywordtype">bool
</span> m_bAmbientUserMode;
414 00528 DWORD m_docAdviseCookie;
415 00529 wxOleConnectionArray m_connections;
417 00531 <span class=
"keywordtype">void
</span> CreateActiveX(REFCLSID clsid);
418 00532 <span class=
"keywordtype">void
</span> CreateActiveX(LPOLESTR progId);
419 00533 HRESULT AmbientPropertyChanged(DISPID dispid);
421 00535 <span class=
"keywordtype">void
</span> GetTypeInfo();
422 00536 <span class=
"keywordtype">void
</span> GetTypeInfo(ITypeInfo *ti,
<span class=
"keywordtype">bool
</span> defInterface,
<span class=
"keywordtype">bool
</span> defEventSink);
425 00539 <span class=
"comment">// events
</span>
426 00540 FuncXMap m_events;
428 00542 <span class=
"comment">// properties
</span>
429 00543 PropXMap m_props;
431 00545 <span class=
"comment">// Methods
</span>
432 00546 FuncXStringMap m_methods;
434 00548 <span class=
"keywordtype">long
</span> MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam);
437 00551 <span class=
"comment">// events
</span>
438 00552 <span class=
"keyword">class
</span>wxActiveXEvent :
<span class=
"keyword">public
</span> wxCommandEvent
440 00554 <span class=
"keyword">private
</span>:
441 00555 <span class=
"keyword">friend
</span> <span class=
"keyword">class
</span>wxActiveXEvents;
443 00557 wxVariant m_params;
445 00559 <span class=
"keyword">public
</span>:
447 00561 <span class=
"keyword">virtual
</span> wxEvent *Clone()
<span class=
"keyword"> const
</span>{
<span class=
"keywordflow">return
</span> <span class=
"keyword">new
</span> wxActiveXEvent(*
<span class=
"keyword">this
</span>); }
449 00563 wxString EventName();
450 00564 <span class=
"keywordtype">int
</span> ParamCount()
<span class=
"keyword">const
</span>;
451 00565 wxString ParamType(
<span class=
"keywordtype">int
</span> idx);
452 00566 wxString ParamName(
<span class=
"keywordtype">int
</span> idx);
453 00567 wxVariant
& operator[] (
<span class=
"keywordtype">int
</span> idx);
454 00568 wxVariant
& operator[] (wxString name);
457 00571 <span class=
"keyword">const
</span> wxEventType
& RegisterActiveXEvent(
<span class=
"keyword">const
</span> wxChar *eventName);
458 00572 <span class=
"keyword">const
</span> wxEventType
& RegisterActiveXEvent(DISPID event);
460 00574 <span class=
"keyword">typedef
</span> void (wxEvtHandler::*wxActiveXEventFunction)(wxActiveXEvent
&);
462 <a name=
"l00578"></a><a class=
"code" href=
"wxactivex_8h.html#a10">00578</a> <span class=
"preprocessor">#define EVT_ACTIVEX(id, eventName, fn) DECLARE_EVENT_TABLE_ENTRY(RegisterActiveXEvent(wxT(eventName)), id, -
1, (wxObjectEventFunction) (wxEventFunction) (wxActiveXEventFunction)
& fn, (wxObject *) NULL ),
</span>
463 <a name=
"l00581"></a><a class=
"code" href=
"wxactivex_8h.html#a11">00581</a> <span class=
"preprocessor">#define EVT_ACTIVEX_DISPID(id, eventDispId, fn) DECLARE_EVENT_TABLE_ENTRY(RegisterActiveXEvent(eventDispId), id, -
1, (wxObjectEventFunction) (wxEventFunction) (wxActiveXEventFunction)
& fn, (wxObject *) NULL ),
</span>
464 00582 <span class=
"preprocessor"></span>
465 00583 <span class=
"comment">//util
</span>
466 00584 <span class=
"keywordtype">bool
</span> wxDateTimeToVariant(wxDateTime dt, VARIANTARG
& va);
467 00585 <span class=
"keywordtype">bool
</span> VariantToWxDateTime(VARIANTARG va, wxDateTime
& dt);
468 00596 <span class=
"keywordtype">bool
</span> MSWVariantToVariant(VARIANTARG
& va, wxVariant
& vx);
469 00607 <span class=
"keywordtype">bool
</span> VariantToMSWVariant(
<span class=
"keyword">const
</span> wxVariant
& vx, VARIANTARG
& va);
471 00609 <span class=
"preprocessor">#endif
</span><span class=
"comment">/* _IEHTMLWIN_H_ */
</span>
472 </pre></div><hr><address style=
"align: right;"><small>Generated on Tue Apr
1 14:
51:
12 2003 for wxActiveX by
473 <a href=
"http://www.doxygen.org/index.html">
474 <img src=
"doxygen.png" alt=
"doxygen" align=
"middle" border=
0
475 width=
110 height=
53></a>1.3-rc3
</small></address>