dinput: Mark internal symbols with hidden visibility.
[wine] / dlls / shdocvw / ie.c
1 /*
2  * Copyright 2006 Jacek Caban for CodeWeavers
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2.1 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with this library; if not, write to the Free Software
16  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
17  */
18
19 #include "wine/debug.h"
20 #include "shdocvw.h"
21
22 WINE_DEFAULT_DEBUG_CHANNEL(shdocvw);
23
24 static inline InternetExplorer *impl_from_IWebBrowser2(IWebBrowser2 *iface)
25 {
26     return CONTAINING_RECORD(iface, InternetExplorer, IWebBrowser2_iface);
27 }
28
29 static HRESULT WINAPI InternetExplorer_QueryInterface(IWebBrowser2 *iface, REFIID riid, LPVOID *ppv)
30 {
31     InternetExplorer *This = impl_from_IWebBrowser2(iface);
32
33     *ppv = NULL;
34
35     if(IsEqualGUID(&IID_IUnknown, riid)) {
36         TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
37         *ppv = &This->IWebBrowser2_iface;
38     }else if(IsEqualGUID(&IID_IDispatch, riid)) {
39         TRACE("(%p)->(IID_IDispatch %p)\n", This, ppv);
40         *ppv = &This->IWebBrowser2_iface;
41     }else if(IsEqualGUID(&IID_IWebBrowser, riid)) {
42         TRACE("(%p)->(IID_IWebBrowser %p)\n", This, ppv);
43         *ppv = &This->IWebBrowser2_iface;
44     }else if(IsEqualGUID(&IID_IWebBrowserApp, riid)) {
45         TRACE("(%p)->(IID_IWebBrowserApp %p)\n", This, ppv);
46         *ppv = &This->IWebBrowser2_iface;
47     }else if(IsEqualGUID(&IID_IWebBrowser2, riid)) {
48         TRACE("(%p)->(IID_IWebBrowser2 %p)\n", This, ppv);
49         *ppv = &This->IWebBrowser2_iface;
50     }else if(IsEqualGUID(&IID_IConnectionPointContainer, riid)) {
51         TRACE("(%p)->(IID_IConnectionPointContainer %p)\n", This, ppv);
52         *ppv = &This->doc_host->doc_host.cps.IConnectionPointContainer_iface;
53     }else if(HlinkFrame_QI(&This->hlink_frame, riid, ppv)) {
54         return S_OK;
55     }
56
57     if(*ppv) {
58         IUnknown_AddRef((IUnknown*)*ppv);
59         return S_OK;
60     }
61
62     WARN("(%p)->(%s %p) interface not supported\n", This, debugstr_guid(riid), ppv);
63     return E_NOINTERFACE;
64 }
65
66 static ULONG WINAPI InternetExplorer_AddRef(IWebBrowser2 *iface)
67 {
68     InternetExplorer *This = impl_from_IWebBrowser2(iface);
69     LONG ref = InterlockedIncrement(&This->ref);
70     TRACE("(%p) ref=%d\n", This, ref);
71     return ref;
72 }
73
74 static ULONG WINAPI InternetExplorer_Release(IWebBrowser2 *iface)
75 {
76     InternetExplorer *This = impl_from_IWebBrowser2(iface);
77     LONG ref = InterlockedDecrement(&This->ref);
78
79     TRACE("(%p) ref=%d\n", This, ref);
80
81     if(!ref) {
82         if(This->doc_host) {
83             deactivate_document(&This->doc_host->doc_host);
84             DocHost_Release(&This->doc_host->doc_host);
85             if(This->doc_host) {
86                 This->doc_host->ie = NULL;
87                 This->doc_host->doc_host.container_vtbl->release(&This->doc_host->doc_host);
88             }
89         }
90
91         if(This->frame_hwnd)
92             DestroyWindow(This->frame_hwnd);
93         list_remove(&This->entry);
94         heap_free(This);
95
96         released_obj();
97     }
98
99     return ref;
100 }
101
102 static HRESULT WINAPI InternetExplorer_GetTypeInfoCount(IWebBrowser2 *iface, UINT *pctinfo)
103 {
104     InternetExplorer *This = impl_from_IWebBrowser2(iface);
105     FIXME("(%p)->(%p)\n", This, pctinfo);
106     return E_NOTIMPL;
107 }
108
109 static HRESULT WINAPI InternetExplorer_GetTypeInfo(IWebBrowser2 *iface, UINT iTInfo, LCID lcid,
110                                      LPTYPEINFO *ppTInfo)
111 {
112     InternetExplorer *This = impl_from_IWebBrowser2(iface);
113     FIXME("(%p)->(%d %d %p)\n", This, iTInfo, lcid, ppTInfo);
114     return E_NOTIMPL;
115 }
116
117 static HRESULT WINAPI InternetExplorer_GetIDsOfNames(IWebBrowser2 *iface, REFIID riid,
118                                        LPOLESTR *rgszNames, UINT cNames,
119                                        LCID lcid, DISPID *rgDispId)
120 {
121     InternetExplorer *This = impl_from_IWebBrowser2(iface);
122     FIXME("(%p)->(%s %p %d %d %p)\n", This, debugstr_guid(riid), rgszNames, cNames,
123             lcid, rgDispId);
124     return E_NOTIMPL;
125 }
126
127 static HRESULT WINAPI InternetExplorer_Invoke(IWebBrowser2 *iface, DISPID dispIdMember,
128                                 REFIID riid, LCID lcid, WORD wFlags,
129                                 DISPPARAMS *pDispParams, VARIANT *pVarResult,
130                                 EXCEPINFO *pExepInfo, UINT *puArgErr)
131 {
132     InternetExplorer *This = impl_from_IWebBrowser2(iface);
133     FIXME("(%p)->(%d %s %d %08x %p %p %p %p)\n", This, dispIdMember, debugstr_guid(riid),
134             lcid, wFlags, pDispParams, pVarResult, pExepInfo, puArgErr);
135     return E_NOTIMPL;
136 }
137
138 static HRESULT WINAPI InternetExplorer_GoBack(IWebBrowser2 *iface)
139 {
140     InternetExplorer *This = impl_from_IWebBrowser2(iface);
141     FIXME("(%p)\n", This);
142     return E_NOTIMPL;
143 }
144
145 static HRESULT WINAPI InternetExplorer_GoForward(IWebBrowser2 *iface)
146 {
147     InternetExplorer *This = impl_from_IWebBrowser2(iface);
148     FIXME("(%p)\n", This);
149     return E_NOTIMPL;
150 }
151
152 static HRESULT WINAPI InternetExplorer_GoHome(IWebBrowser2 *iface)
153 {
154     InternetExplorer *This = impl_from_IWebBrowser2(iface);
155     TRACE("(%p)\n", This);
156     return go_home(&This->doc_host->doc_host);
157 }
158
159 static HRESULT WINAPI InternetExplorer_GoSearch(IWebBrowser2 *iface)
160 {
161     InternetExplorer *This = impl_from_IWebBrowser2(iface);
162     FIXME("(%p)\n", This);
163     return E_NOTIMPL;
164 }
165
166 static HRESULT WINAPI InternetExplorer_Navigate(IWebBrowser2 *iface, BSTR szUrl,
167                                   VARIANT *Flags, VARIANT *TargetFrameName,
168                                   VARIANT *PostData, VARIANT *Headers)
169 {
170     InternetExplorer *This = impl_from_IWebBrowser2(iface);
171
172     TRACE("(%p)->(%s %p %p %p %p)\n", This, debugstr_w(szUrl), Flags, TargetFrameName,
173           PostData, Headers);
174
175     return navigate_url(&This->doc_host->doc_host, szUrl, Flags, TargetFrameName, PostData, Headers);
176 }
177
178 static HRESULT WINAPI InternetExplorer_Refresh(IWebBrowser2 *iface)
179 {
180     InternetExplorer *This = impl_from_IWebBrowser2(iface);
181     FIXME("(%p)\n", This);
182     return E_NOTIMPL;
183 }
184
185 static HRESULT WINAPI InternetExplorer_Refresh2(IWebBrowser2 *iface, VARIANT *Level)
186 {
187     InternetExplorer *This = impl_from_IWebBrowser2(iface);
188     FIXME("(%p)->(%p)\n", This, Level);
189     return E_NOTIMPL;
190 }
191
192 static HRESULT WINAPI InternetExplorer_Stop(IWebBrowser2 *iface)
193 {
194     InternetExplorer *This = impl_from_IWebBrowser2(iface);
195     FIXME("(%p)\n", This);
196     return E_NOTIMPL;
197 }
198
199 static HRESULT WINAPI InternetExplorer_get_Application(IWebBrowser2 *iface, IDispatch **ppDisp)
200 {
201     InternetExplorer *This = impl_from_IWebBrowser2(iface);
202     FIXME("(%p)->(%p)\n", This, ppDisp);
203     return E_NOTIMPL;
204 }
205
206 static HRESULT WINAPI InternetExplorer_get_Parent(IWebBrowser2 *iface, IDispatch **ppDisp)
207 {
208     InternetExplorer *This = impl_from_IWebBrowser2(iface);
209     FIXME("(%p)->(%p)\n", This, ppDisp);
210     return E_NOTIMPL;
211 }
212
213 static HRESULT WINAPI InternetExplorer_get_Container(IWebBrowser2 *iface, IDispatch **ppDisp)
214 {
215     InternetExplorer *This = impl_from_IWebBrowser2(iface);
216     FIXME("(%p)->(%p)\n", This, ppDisp);
217     return E_NOTIMPL;
218 }
219
220 static HRESULT WINAPI InternetExplorer_get_Document(IWebBrowser2 *iface, IDispatch **ppDisp)
221 {
222     InternetExplorer *This = impl_from_IWebBrowser2(iface);
223     FIXME("(%p)->(%p)\n", This, ppDisp);
224     return E_NOTIMPL;
225 }
226
227 static HRESULT WINAPI InternetExplorer_get_TopLevelContainer(IWebBrowser2 *iface, VARIANT_BOOL *pBool)
228 {
229     InternetExplorer *This = impl_from_IWebBrowser2(iface);
230     FIXME("(%p)->(%p)\n", This, pBool);
231     return E_NOTIMPL;
232 }
233
234 static HRESULT WINAPI InternetExplorer_get_Type(IWebBrowser2 *iface, BSTR *Type)
235 {
236     InternetExplorer *This = impl_from_IWebBrowser2(iface);
237     FIXME("(%p)->(%p)\n", This, Type);
238     return E_NOTIMPL;
239 }
240
241 static HRESULT WINAPI InternetExplorer_get_Left(IWebBrowser2 *iface, LONG *pl)
242 {
243     InternetExplorer *This = impl_from_IWebBrowser2(iface);
244     FIXME("(%p)->(%p)\n", This, pl);
245     return E_NOTIMPL;
246 }
247
248 static HRESULT WINAPI InternetExplorer_put_Left(IWebBrowser2 *iface, LONG Left)
249 {
250     InternetExplorer *This = impl_from_IWebBrowser2(iface);
251     FIXME("(%p)->(%d)\n", This, Left);
252     return E_NOTIMPL;
253 }
254
255 static HRESULT WINAPI InternetExplorer_get_Top(IWebBrowser2 *iface, LONG *pl)
256 {
257     InternetExplorer *This = impl_from_IWebBrowser2(iface);
258     FIXME("(%p)->(%p)\n", This, pl);
259     return E_NOTIMPL;
260 }
261
262 static HRESULT WINAPI InternetExplorer_put_Top(IWebBrowser2 *iface, LONG Top)
263 {
264     InternetExplorer *This = impl_from_IWebBrowser2(iface);
265     FIXME("(%p)->(%d)\n", This, Top);
266     return E_NOTIMPL;
267 }
268
269 static HRESULT WINAPI InternetExplorer_get_Width(IWebBrowser2 *iface, LONG *pl)
270 {
271     InternetExplorer *This = impl_from_IWebBrowser2(iface);
272     FIXME("(%p)->(%p)\n", This, pl);
273     return E_NOTIMPL;
274 }
275
276 static HRESULT WINAPI InternetExplorer_put_Width(IWebBrowser2 *iface, LONG Width)
277 {
278     InternetExplorer *This = impl_from_IWebBrowser2(iface);
279     FIXME("(%p)->(%d)\n", This, Width);
280     return E_NOTIMPL;
281 }
282
283 static HRESULT WINAPI InternetExplorer_get_Height(IWebBrowser2 *iface, LONG *pl)
284 {
285     InternetExplorer *This = impl_from_IWebBrowser2(iface);
286     FIXME("(%p)->(%p)\n", This, pl);
287     return E_NOTIMPL;
288 }
289
290 static HRESULT WINAPI InternetExplorer_put_Height(IWebBrowser2 *iface, LONG Height)
291 {
292     InternetExplorer *This = impl_from_IWebBrowser2(iface);
293     FIXME("(%p)->(%d)\n", This, Height);
294     return E_NOTIMPL;
295 }
296
297 static HRESULT WINAPI InternetExplorer_get_LocationName(IWebBrowser2 *iface, BSTR *LocationName)
298 {
299     InternetExplorer *This = impl_from_IWebBrowser2(iface);
300     FIXME("(%p)->(%p)\n", This, LocationName);
301     return E_NOTIMPL;
302 }
303
304 static HRESULT WINAPI InternetExplorer_get_LocationURL(IWebBrowser2 *iface, BSTR *LocationURL)
305 {
306     InternetExplorer *This = impl_from_IWebBrowser2(iface);
307
308     TRACE("(%p)->(%p)\n", This, LocationURL);
309
310     return get_location_url(&This->doc_host->doc_host, LocationURL);
311 }
312
313 static HRESULT WINAPI InternetExplorer_get_Busy(IWebBrowser2 *iface, VARIANT_BOOL *pBool)
314 {
315     InternetExplorer *This = impl_from_IWebBrowser2(iface);
316     FIXME("(%p)->(%p)\n", This, pBool);
317     return E_NOTIMPL;
318 }
319
320 static HRESULT WINAPI InternetExplorer_Quit(IWebBrowser2 *iface)
321 {
322     InternetExplorer *This = impl_from_IWebBrowser2(iface);
323     FIXME("(%p)\n", This);
324     return E_NOTIMPL;
325 }
326
327 static HRESULT WINAPI InternetExplorer_ClientToWindow(IWebBrowser2 *iface, int *pcx, int *pcy)
328 {
329     InternetExplorer *This = impl_from_IWebBrowser2(iface);
330     FIXME("(%p)->(%p %p)\n", This, pcx, pcy);
331     return E_NOTIMPL;
332 }
333
334 static HRESULT WINAPI InternetExplorer_PutProperty(IWebBrowser2 *iface, BSTR szProperty, VARIANT vtValue)
335 {
336     InternetExplorer *This = impl_from_IWebBrowser2(iface);
337     FIXME("(%p)->(%s)\n", This, debugstr_w(szProperty));
338     return E_NOTIMPL;
339 }
340
341 static HRESULT WINAPI InternetExplorer_GetProperty(IWebBrowser2 *iface, BSTR szProperty, VARIANT *pvtValue)
342 {
343     InternetExplorer *This = impl_from_IWebBrowser2(iface);
344     FIXME("(%p)->(%s %p)\n", This, debugstr_w(szProperty), pvtValue);
345     return E_NOTIMPL;
346 }
347
348 static HRESULT WINAPI InternetExplorer_get_Name(IWebBrowser2 *iface, BSTR *Name)
349 {
350     InternetExplorer *This = impl_from_IWebBrowser2(iface);
351     FIXME("(%p)->(%p)\n", This, Name);
352     return E_NOTIMPL;
353 }
354
355 static HRESULT WINAPI InternetExplorer_get_HWND(IWebBrowser2 *iface, LONG *pHWND)
356 {
357     InternetExplorer *This = impl_from_IWebBrowser2(iface);
358     FIXME("(%p)->(%p)\n", This, pHWND);
359     return E_NOTIMPL;
360 }
361
362 static HRESULT WINAPI InternetExplorer_get_FullName(IWebBrowser2 *iface, BSTR *FullName)
363 {
364     InternetExplorer *This = impl_from_IWebBrowser2(iface);
365     FIXME("(%p)->(%p)\n", This, FullName);
366     return E_NOTIMPL;
367 }
368
369 static HRESULT WINAPI InternetExplorer_get_Path(IWebBrowser2 *iface, BSTR *Path)
370 {
371     InternetExplorer *This = impl_from_IWebBrowser2(iface);
372     FIXME("(%p)->(%p)\n", This, Path);
373     return E_NOTIMPL;
374 }
375
376 static HRESULT WINAPI InternetExplorer_get_Visible(IWebBrowser2 *iface, VARIANT_BOOL *pBool)
377 {
378     InternetExplorer *This = impl_from_IWebBrowser2(iface);
379
380     TRACE("(%p)->(%p)\n", This, pBool);
381
382     *pBool = IsWindowVisible(This->frame_hwnd) ? VARIANT_TRUE : VARIANT_FALSE;
383     return S_OK;
384 }
385
386 static HRESULT WINAPI InternetExplorer_put_Visible(IWebBrowser2 *iface, VARIANT_BOOL Value)
387 {
388     InternetExplorer *This = impl_from_IWebBrowser2(iface);
389     TRACE("(%p)->(%x)\n", This, Value);
390
391     ShowWindow(This->frame_hwnd, Value ? SW_SHOW : SW_HIDE);
392
393     return S_OK;
394 }
395
396 static HRESULT WINAPI InternetExplorer_get_StatusBar(IWebBrowser2 *iface, VARIANT_BOOL *pBool)
397 {
398     InternetExplorer *This = impl_from_IWebBrowser2(iface);
399     FIXME("(%p)->(%p)\n", This, pBool);
400     return E_NOTIMPL;
401 }
402
403 static HRESULT WINAPI InternetExplorer_put_StatusBar(IWebBrowser2 *iface, VARIANT_BOOL Value)
404 {
405     InternetExplorer *This = impl_from_IWebBrowser2(iface);
406     FIXME("(%p)->(%x)\n", This, Value);
407     return E_NOTIMPL;
408 }
409
410 static HRESULT WINAPI InternetExplorer_get_StatusText(IWebBrowser2 *iface, BSTR *StatusText)
411 {
412     InternetExplorer *This = impl_from_IWebBrowser2(iface);
413     FIXME("(%p)->(%p)\n", This, StatusText);
414     return E_NOTIMPL;
415 }
416
417 static HRESULT WINAPI InternetExplorer_put_StatusText(IWebBrowser2 *iface, BSTR StatusText)
418 {
419     InternetExplorer *This = impl_from_IWebBrowser2(iface);
420
421     TRACE("(%p)->(%s)\n", This, debugstr_w(StatusText));
422
423     return update_ie_statustext(This, StatusText);
424 }
425
426 static HRESULT WINAPI InternetExplorer_get_ToolBar(IWebBrowser2 *iface, int *Value)
427 {
428     InternetExplorer *This = impl_from_IWebBrowser2(iface);
429     FIXME("(%p)->(%p)\n", This, Value);
430     return E_NOTIMPL;
431 }
432
433 static HRESULT WINAPI InternetExplorer_put_ToolBar(IWebBrowser2 *iface, int Value)
434 {
435     InternetExplorer *This = impl_from_IWebBrowser2(iface);
436     FIXME("(%p)->(%d)\n", This, Value);
437     return E_NOTIMPL;
438 }
439
440 static HRESULT WINAPI InternetExplorer_get_MenuBar(IWebBrowser2 *iface, VARIANT_BOOL *Value)
441 {
442     InternetExplorer *This = impl_from_IWebBrowser2(iface);
443     FIXME("(%p)->(%p)\n", This, Value);
444     return E_NOTIMPL;
445 }
446
447 static HRESULT WINAPI InternetExplorer_put_MenuBar(IWebBrowser2 *iface, VARIANT_BOOL Value)
448 {
449     InternetExplorer *This = impl_from_IWebBrowser2(iface);
450     HMENU menu = NULL;
451
452     TRACE("(%p)->(%x)\n", This, Value);
453
454     if(Value)
455         menu = This->menu;
456
457     if(!SetMenu(This->frame_hwnd, menu))
458         return HRESULT_FROM_WIN32(GetLastError());
459
460     return S_OK;
461 }
462
463 static HRESULT WINAPI InternetExplorer_get_FullScreen(IWebBrowser2 *iface, VARIANT_BOOL *pbFullScreen)
464 {
465     InternetExplorer *This = impl_from_IWebBrowser2(iface);
466     FIXME("(%p)->(%p)\n", This, pbFullScreen);
467     return E_NOTIMPL;
468 }
469
470 static HRESULT WINAPI InternetExplorer_put_FullScreen(IWebBrowser2 *iface, VARIANT_BOOL bFullScreen)
471 {
472     InternetExplorer *This = impl_from_IWebBrowser2(iface);
473     FIXME("(%p)->(%x)\n", This, bFullScreen);
474     return E_NOTIMPL;
475 }
476
477 static HRESULT WINAPI InternetExplorer_Navigate2(IWebBrowser2 *iface, VARIANT *URL, VARIANT *Flags,
478         VARIANT *TargetFrameName, VARIANT *PostData, VARIANT *Headers)
479 {
480     InternetExplorer *This = impl_from_IWebBrowser2(iface);
481
482     TRACE("(%p)->(%p %p %p %p %p)\n", This, URL, Flags, TargetFrameName, PostData, Headers);
483
484     if(!URL)
485         return S_OK;
486
487     if(V_VT(URL) != VT_BSTR) {
488         FIXME("Unsupported V_VT(URL) %d\n", V_VT(URL));
489         return E_INVALIDARG;
490     }
491
492     return navigate_url(&This->doc_host->doc_host, V_BSTR(URL), Flags, TargetFrameName, PostData, Headers);
493 }
494
495 static HRESULT WINAPI InternetExplorer_QueryStatusWB(IWebBrowser2 *iface, OLECMDID cmdID, OLECMDF *pcmdf)
496 {
497     InternetExplorer *This = impl_from_IWebBrowser2(iface);
498     FIXME("(%p)->(%d %p)\n", This, cmdID, pcmdf);
499     return E_NOTIMPL;
500 }
501
502 static HRESULT WINAPI InternetExplorer_ExecWB(IWebBrowser2 *iface, OLECMDID cmdID,
503         OLECMDEXECOPT cmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut)
504 {
505     InternetExplorer *This = impl_from_IWebBrowser2(iface);
506     FIXME("(%p)->(%d %d %p %p)\n", This, cmdID, cmdexecopt, pvaIn, pvaOut);
507     return E_NOTIMPL;
508 }
509
510 static HRESULT WINAPI InternetExplorer_ShowBrowserBar(IWebBrowser2 *iface, VARIANT *pvaClsid,
511         VARIANT *pvarShow, VARIANT *pvarSize)
512 {
513     InternetExplorer *This = impl_from_IWebBrowser2(iface);
514     FIXME("(%p)->(%p %p %p)\n", This, pvaClsid, pvarShow, pvarSize);
515     return E_NOTIMPL;
516 }
517
518 static HRESULT WINAPI InternetExplorer_get_ReadyState(IWebBrowser2 *iface, READYSTATE *lpReadyState)
519 {
520     InternetExplorer *This = impl_from_IWebBrowser2(iface);
521     FIXME("(%p)->(%p)\n", This, lpReadyState);
522     return E_NOTIMPL;
523 }
524
525 static HRESULT WINAPI InternetExplorer_get_Offline(IWebBrowser2 *iface, VARIANT_BOOL *pbOffline)
526 {
527     InternetExplorer *This = impl_from_IWebBrowser2(iface);
528     FIXME("(%p)->(%p)\n", This, pbOffline);
529     return E_NOTIMPL;
530 }
531
532 static HRESULT WINAPI InternetExplorer_put_Offline(IWebBrowser2 *iface, VARIANT_BOOL bOffline)
533 {
534     InternetExplorer *This = impl_from_IWebBrowser2(iface);
535     FIXME("(%p)->(%x)\n", This, bOffline);
536     return E_NOTIMPL;
537 }
538
539 static HRESULT WINAPI InternetExplorer_get_Silent(IWebBrowser2 *iface, VARIANT_BOOL *pbSilent)
540 {
541     InternetExplorer *This = impl_from_IWebBrowser2(iface);
542     FIXME("(%p)->(%p)\n", This, pbSilent);
543     return E_NOTIMPL;
544 }
545
546 static HRESULT WINAPI InternetExplorer_put_Silent(IWebBrowser2 *iface, VARIANT_BOOL bSilent)
547 {
548     InternetExplorer *This = impl_from_IWebBrowser2(iface);
549     FIXME("(%p)->(%x)\n", This, bSilent);
550     return E_NOTIMPL;
551 }
552
553 static HRESULT WINAPI InternetExplorer_get_RegisterAsBrowser(IWebBrowser2 *iface,
554         VARIANT_BOOL *pbRegister)
555 {
556     InternetExplorer *This = impl_from_IWebBrowser2(iface);
557     FIXME("(%p)->(%p)\n", This, pbRegister);
558     return E_NOTIMPL;
559 }
560
561 static HRESULT WINAPI InternetExplorer_put_RegisterAsBrowser(IWebBrowser2 *iface,
562         VARIANT_BOOL bRegister)
563 {
564     InternetExplorer *This = impl_from_IWebBrowser2(iface);
565     FIXME("(%p)->(%x)\n", This, bRegister);
566     return E_NOTIMPL;
567 }
568
569 static HRESULT WINAPI InternetExplorer_get_RegisterAsDropTarget(IWebBrowser2 *iface,
570         VARIANT_BOOL *pbRegister)
571 {
572     InternetExplorer *This = impl_from_IWebBrowser2(iface);
573     FIXME("(%p)->(%p)\n", This, pbRegister);
574     return E_NOTIMPL;
575 }
576
577 static HRESULT WINAPI InternetExplorer_put_RegisterAsDropTarget(IWebBrowser2 *iface,
578         VARIANT_BOOL bRegister)
579 {
580     InternetExplorer *This = impl_from_IWebBrowser2(iface);
581     FIXME("(%p)->(%x)\n", This, bRegister);
582     return E_NOTIMPL;
583 }
584
585 static HRESULT WINAPI InternetExplorer_get_TheaterMode(IWebBrowser2 *iface, VARIANT_BOOL *pbRegister)
586 {
587     InternetExplorer *This = impl_from_IWebBrowser2(iface);
588     FIXME("(%p)->(%p)\n", This, pbRegister);
589     return E_NOTIMPL;
590 }
591
592 static HRESULT WINAPI InternetExplorer_put_TheaterMode(IWebBrowser2 *iface, VARIANT_BOOL bRegister)
593 {
594     InternetExplorer *This = impl_from_IWebBrowser2(iface);
595     FIXME("(%p)->(%x)\n", This, bRegister);
596     return E_NOTIMPL;
597 }
598
599 static HRESULT WINAPI InternetExplorer_get_AddressBar(IWebBrowser2 *iface, VARIANT_BOOL *Value)
600 {
601     InternetExplorer *This = impl_from_IWebBrowser2(iface);
602     FIXME("(%p)->(%p)\n", This, Value);
603     return E_NOTIMPL;
604 }
605
606 static HRESULT WINAPI InternetExplorer_put_AddressBar(IWebBrowser2 *iface, VARIANT_BOOL Value)
607 {
608     InternetExplorer *This = impl_from_IWebBrowser2(iface);
609     FIXME("(%p)->(%x)\n", This, Value);
610     return E_NOTIMPL;
611 }
612
613 static HRESULT WINAPI InternetExplorer_get_Resizable(IWebBrowser2 *iface, VARIANT_BOOL *Value)
614 {
615     InternetExplorer *This = impl_from_IWebBrowser2(iface);
616     FIXME("(%p)->(%p)\n", This, Value);
617     return E_NOTIMPL;
618 }
619
620 static HRESULT WINAPI InternetExplorer_put_Resizable(IWebBrowser2 *iface, VARIANT_BOOL Value)
621 {
622     InternetExplorer *This = impl_from_IWebBrowser2(iface);
623     FIXME("(%p)->(%x)\n", This, Value);
624     return E_NOTIMPL;
625 }
626
627 #undef impl_from_IWebBrowser2
628
629 static const IWebBrowser2Vtbl InternetExplorerVtbl =
630 {
631     InternetExplorer_QueryInterface,
632     InternetExplorer_AddRef,
633     InternetExplorer_Release,
634     InternetExplorer_GetTypeInfoCount,
635     InternetExplorer_GetTypeInfo,
636     InternetExplorer_GetIDsOfNames,
637     InternetExplorer_Invoke,
638     InternetExplorer_GoBack,
639     InternetExplorer_GoForward,
640     InternetExplorer_GoHome,
641     InternetExplorer_GoSearch,
642     InternetExplorer_Navigate,
643     InternetExplorer_Refresh,
644     InternetExplorer_Refresh2,
645     InternetExplorer_Stop,
646     InternetExplorer_get_Application,
647     InternetExplorer_get_Parent,
648     InternetExplorer_get_Container,
649     InternetExplorer_get_Document,
650     InternetExplorer_get_TopLevelContainer,
651     InternetExplorer_get_Type,
652     InternetExplorer_get_Left,
653     InternetExplorer_put_Left,
654     InternetExplorer_get_Top,
655     InternetExplorer_put_Top,
656     InternetExplorer_get_Width,
657     InternetExplorer_put_Width,
658     InternetExplorer_get_Height,
659     InternetExplorer_put_Height,
660     InternetExplorer_get_LocationName,
661     InternetExplorer_get_LocationURL,
662     InternetExplorer_get_Busy,
663     InternetExplorer_Quit,
664     InternetExplorer_ClientToWindow,
665     InternetExplorer_PutProperty,
666     InternetExplorer_GetProperty,
667     InternetExplorer_get_Name,
668     InternetExplorer_get_HWND,
669     InternetExplorer_get_FullName,
670     InternetExplorer_get_Path,
671     InternetExplorer_get_Visible,
672     InternetExplorer_put_Visible,
673     InternetExplorer_get_StatusBar,
674     InternetExplorer_put_StatusBar,
675     InternetExplorer_get_StatusText,
676     InternetExplorer_put_StatusText,
677     InternetExplorer_get_ToolBar,
678     InternetExplorer_put_ToolBar,
679     InternetExplorer_get_MenuBar,
680     InternetExplorer_put_MenuBar,
681     InternetExplorer_get_FullScreen,
682     InternetExplorer_put_FullScreen,
683     InternetExplorer_Navigate2,
684     InternetExplorer_QueryStatusWB,
685     InternetExplorer_ExecWB,
686     InternetExplorer_ShowBrowserBar,
687     InternetExplorer_get_ReadyState,
688     InternetExplorer_get_Offline,
689     InternetExplorer_put_Offline,
690     InternetExplorer_get_Silent,
691     InternetExplorer_put_Silent,
692     InternetExplorer_get_RegisterAsBrowser,
693     InternetExplorer_put_RegisterAsBrowser,
694     InternetExplorer_get_RegisterAsDropTarget,
695     InternetExplorer_put_RegisterAsDropTarget,
696     InternetExplorer_get_TheaterMode,
697     InternetExplorer_put_TheaterMode,
698     InternetExplorer_get_AddressBar,
699     InternetExplorer_put_AddressBar,
700     InternetExplorer_get_Resizable,
701     InternetExplorer_put_Resizable
702 };
703
704 void InternetExplorer_WebBrowser_Init(InternetExplorer *This)
705 {
706     This->IWebBrowser2_iface.lpVtbl = &InternetExplorerVtbl;
707 }