2 * Copyright 2012 Piotr Caban for CodeWeavers
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.
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.
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
30 IPersistMoniker IPersistMoniker_iface
;
31 IPersistHistory IPersistHistory_iface
;
32 IOleCommandTarget IOleCommandTarget_iface
;
33 IOleObject IOleObject_iface
;
43 IMoniker IMoniker_iface
;
52 IBindStatusCallback IBindStatusCallback_iface
;
54 IBindStatusCallback
*bsc
;
62 IBinding IBinding_iface
;
67 static inline Binding
* impl_from_IBinding(IBinding
*iface
)
69 return CONTAINING_RECORD(iface
, Binding
, IBinding_iface
);
72 static HRESULT WINAPI
XMLView_Binding_QueryInterface(
73 IBinding
*iface
, REFIID riid
, void **ppvObject
)
75 Binding
*This
= impl_from_IBinding(iface
);
77 TRACE("(%p)->(%s %p)\n", This
, debugstr_guid(riid
), ppvObject
);
79 if(IsEqualGUID(riid
, &IID_IUnknown
) || IsEqualGUID(riid
, &IID_IBinding
)) {
81 IBinding_AddRef(iface
);
89 static ULONG WINAPI
XMLView_Binding_AddRef(IBinding
*iface
)
91 Binding
*This
= impl_from_IBinding(iface
);
92 LONG ref
= InterlockedIncrement(&This
->ref
);
94 TRACE("(%p)->(%d)\n", This
, ref
);
99 static ULONG WINAPI
XMLView_Binding_Release(IBinding
*iface
)
101 Binding
*This
= impl_from_IBinding(iface
);
102 ULONG ref
= InterlockedDecrement(&This
->ref
);
104 TRACE("(%p)->(%d)\n", This
, ref
);
107 IBinding_Release(This
->binding
);
113 static HRESULT WINAPI
XMLView_Binding_Abort(IBinding
*iface
)
115 Binding
*This
= impl_from_IBinding(iface
);
116 TRACE("(%p)\n", This
);
118 return IBinding_Abort(This
->binding
);
121 static HRESULT WINAPI
XMLView_Binding_Suspend(IBinding
*iface
)
123 Binding
*This
= impl_from_IBinding(iface
);
124 FIXME("(%p)\n", This
);
128 static HRESULT WINAPI
XMLView_Binding_Resume(IBinding
*iface
)
130 Binding
*This
= impl_from_IBinding(iface
);
131 FIXME("(%p)\n", This
);
135 static HRESULT WINAPI
XMLView_Binding_SetPriority(
136 IBinding
*iface
, LONG nPriority
)
138 Binding
*This
= impl_from_IBinding(iface
);
139 TRACE("(%p)->(%d)\n", This
, nPriority
);
141 return IBinding_SetPriority(This
->binding
, nPriority
);
144 static HRESULT WINAPI
XMLView_Binding_GetPriority(
145 IBinding
*iface
, LONG
*pnPriority
)
147 Binding
*This
= impl_from_IBinding(iface
);
148 TRACE("(%p)->(%p)\n", This
, pnPriority
);
150 return IBinding_GetPriority(This
->binding
, pnPriority
);
153 static HRESULT WINAPI
XMLView_Binding_GetBindResult(IBinding
*iface
,
154 CLSID
*pclsidProtocol
, DWORD
*pdwResult
, LPOLESTR
*pszResult
,
157 Binding
*This
= impl_from_IBinding(iface
);
158 FIXME("(%p)->(%s %p %p %p)\n", This
, debugstr_guid(pclsidProtocol
),
159 pdwResult
, pszResult
, pdwReserved
);
163 static IBindingVtbl XMLView_BindingVtbl
= {
164 XMLView_Binding_QueryInterface
,
165 XMLView_Binding_AddRef
,
166 XMLView_Binding_Release
,
167 XMLView_Binding_Abort
,
168 XMLView_Binding_Suspend
,
169 XMLView_Binding_Resume
,
170 XMLView_Binding_SetPriority
,
171 XMLView_Binding_GetPriority
,
172 XMLView_Binding_GetBindResult
175 static inline HRESULT
XMLView_Binding_Create(IBinding
*binding
, IBinding
**ret
)
179 bind
= heap_alloc_zero(sizeof(Binding
));
181 return E_OUTOFMEMORY
;
183 bind
->IBinding_iface
.lpVtbl
= &XMLView_BindingVtbl
;
186 bind
->binding
= binding
;
187 IBinding_AddRef(binding
);
189 *ret
= &bind
->IBinding_iface
;
193 static inline BindStatusCallback
* impl_from_IBindStatusCallback(
194 IBindStatusCallback
*iface
)
196 return CONTAINING_RECORD(iface
, BindStatusCallback
,
197 IBindStatusCallback_iface
);
200 static HRESULT WINAPI
XMLView_BindStatusCallback_QueryInterface(
201 IBindStatusCallback
*iface
, REFIID riid
, void **ppvObject
)
203 BindStatusCallback
*This
= impl_from_IBindStatusCallback(iface
);
205 TRACE("(%p)->(%s %p)\n", This
, debugstr_guid(riid
), ppvObject
);
207 if(IsEqualGUID(riid
, &IID_IUnknown
) || IsEqualGUID(riid
, &IID_IBindStatusCallback
)) {
209 IBindStatusCallback_AddRef(iface
);
214 return E_NOINTERFACE
;
217 static ULONG WINAPI
XMLView_BindStatusCallback_AddRef(
218 IBindStatusCallback
*iface
)
220 BindStatusCallback
*This
= impl_from_IBindStatusCallback(iface
);
221 LONG ref
= InterlockedIncrement(&This
->ref
);
223 TRACE("(%p)->(%d)\n", This
, ref
);
228 static ULONG WINAPI
XMLView_BindStatusCallback_Release(
229 IBindStatusCallback
*iface
)
231 BindStatusCallback
*This
= impl_from_IBindStatusCallback(iface
);
232 ULONG ref
= InterlockedDecrement(&This
->ref
);
234 TRACE("(%p)->(%d)\n", This
, ref
);
238 IStream_Release(This
->stream
);
239 IBindStatusCallback_Release(This
->bsc
);
240 IMoniker_Release(This
->mon
);
246 static HRESULT WINAPI
XMLView_BindStatusCallback_OnStartBinding(
247 IBindStatusCallback
*iface
, DWORD dwReserved
, IBinding
*pib
)
249 BindStatusCallback
*This
= impl_from_IBindStatusCallback(iface
);
253 TRACE("(%p)->(%x %p)\n", This
, dwReserved
, pib
);
255 hres
= XMLView_Binding_Create(pib
, &binding
);
261 hres
= IBindStatusCallback_OnStartBinding(This
->bsc
, dwReserved
, binding
);
263 IBinding_Abort(binding
);
267 IBinding_Release(binding
);
271 static HRESULT WINAPI
XMLView_BindStatusCallback_GetPriority(
272 IBindStatusCallback
*iface
, LONG
*pnPriority
)
274 BindStatusCallback
*This
= impl_from_IBindStatusCallback(iface
);
275 FIXME("(%p)->(%p)\n", This
, pnPriority
);
279 static HRESULT WINAPI
XMLView_BindStatusCallback_OnLowResource(
280 IBindStatusCallback
*iface
, DWORD reserved
)
282 BindStatusCallback
*This
= impl_from_IBindStatusCallback(iface
);
283 FIXME("(%p)->(%x)\n", This
, reserved
);
287 static HRESULT WINAPI
XMLView_BindStatusCallback_OnProgress(
288 IBindStatusCallback
*iface
, ULONG ulProgress
, ULONG ulProgressMax
,
289 ULONG ulStatusCode
, LPCWSTR szStatusText
)
291 BindStatusCallback
*This
= impl_from_IBindStatusCallback(iface
);
292 TRACE("(%p)->(%d %d %x %s)\n", This
, ulProgress
, ulProgressMax
,
293 ulStatusCode
, debugstr_w(szStatusText
));
295 switch(ulStatusCode
) {
296 case BINDSTATUS_BEGINDOWNLOADDATA
:
297 return IBindStatusCallback_OnProgress(This
->bsc
, ulProgress
,
298 ulProgressMax
, ulStatusCode
, szStatusText
);
299 case BINDSTATUS_MIMETYPEAVAILABLE
:
302 FIXME("ulStatusCode: %d\n", ulStatusCode
);
307 static HRESULT WINAPI
XMLView_BindStatusCallback_OnStopBinding(
308 IBindStatusCallback
*iface
, HRESULT hresult
, LPCWSTR szError
)
310 BindStatusCallback
*This
= impl_from_IBindStatusCallback(iface
);
311 TRACE("(%p)->(%x %s)\n", This
, hresult
, debugstr_w(szError
));
312 return IBindStatusCallback_OnStopBinding(This
->bsc
, hresult
, szError
);
315 static HRESULT WINAPI
XMLView_BindStatusCallback_GetBindInfo(
316 IBindStatusCallback
*iface
, DWORD
*grfBINDF
, BINDINFO
*pbindinfo
)
318 BindStatusCallback
*This
= impl_from_IBindStatusCallback(iface
);
319 TRACE("(%p)->(%p %p)\n", This
, grfBINDF
, pbindinfo
);
320 return IBindStatusCallback_GetBindInfo(This
->bsc
, grfBINDF
, pbindinfo
);
323 static inline HRESULT
report_data(BindStatusCallback
*This
)
325 FORMATETC formatetc
= {0, NULL
, 1, -1, TYMED_ISTREAM
};
332 hres
= IStream_Seek(This
->stream
, off
, STREAM_SEEK_CUR
, &size
);
336 hres
= IStream_Seek(This
->stream
, off
, STREAM_SEEK_SET
, NULL
);
340 stgmedium
.tymed
= TYMED_ISTREAM
;
341 stgmedium
.u
.pstm
= This
->stream
;
342 stgmedium
.pUnkForRelease
= NULL
;
344 hres
= IBindStatusCallback_OnDataAvailable(This
->bsc
,
345 BSCF_FIRSTDATANOTIFICATION
|BSCF_LASTDATANOTIFICATION
,
346 size
.u
.LowPart
, &formatetc
, &stgmedium
);
348 IStream_Release(This
->stream
);
353 static inline HRESULT
display_error_page(BindStatusCallback
*This
)
355 FIXME("Error page not implemented yet.\n");
356 return report_data(This
);
359 static inline HRESULT
handle_xml_load(BindStatusCallback
*This
)
361 static const WCHAR selectW
[] = {'p','r','o','c','e','s','s','i','n','g','-',
362 'i','n','s','t','r','u','c','t','i','o','n','(','\'','x','m','l',
363 '-','s','t','y','l','e','s','h','e','e','t','\'',')',0};
364 static const WCHAR hrefW
[] = {'h','r','e','f','=',0};
366 IXMLDOMDocument3
*xml
= NULL
, *xsl
= NULL
;
367 IXMLDOMNode
*stylesheet
;
374 WCHAR
*href
= NULL
, *p
;
379 hres
= IStream_Seek(This
->stream
, off
, STREAM_SEEK_SET
, NULL
);
381 return display_error_page(This
);
383 hres
= DOMDocument_create(MSXML_DEFAULT
, (void**)&xml
);
385 return display_error_page(This
);
387 V_VT(&var
) = VT_UNKNOWN
;
388 V_UNKNOWN(&var
) = (IUnknown
*)This
->stream
;
389 hres
= IXMLDOMDocument3_load(xml
, var
, &succ
);
390 if(FAILED(hres
) || !succ
) {
391 IXMLDOMDocument3_Release(xml
);
392 return display_error_page(This
);
394 V_VT(&var
) = VT_EMPTY
;
396 bstr
= SysAllocString(selectW
);
397 hres
= IXMLDOMDocument3_selectSingleNode(xml
, bstr
, &stylesheet
);
400 IXMLDOMDocument3_Release(xml
);
401 return display_error_page(This
);
404 hres
= IXMLDOMNode_get_nodeValue(stylesheet
, &var
);
405 IXMLDOMNode_Release(stylesheet
);
406 if(SUCCEEDED(hres
) && V_VT(&var
)!=VT_BSTR
) {
407 FIXME("Variant type %d not supported\n", V_VT(&var
));
412 IXMLDOMDocument3_Release(xml
);
413 return display_error_page(This
);
416 /* TODO: fix parsing processing instruction value */
417 if((p
= strstrW(V_BSTR(&var
), hrefW
))) {
418 p
+= sizeof(hrefW
)/sizeof(WCHAR
)-1;
419 if(*p
!='\'' && *p
!='\"') p
= NULL
;
422 p
= strchrW(href
, *p
);
429 IXMLDOMDocument3_Release(xml
);
430 return display_error_page(This
);
433 hres
= CreateURLMonikerEx(This
->mon
, href
, &mon
, 0);
436 IXMLDOMDocument3_Release(xml
);
437 return display_error_page(This
);
440 hres
= CreateBindCtx(0, &pbc
);
441 if(SUCCEEDED(hres
)) {
442 hres
= IMoniker_GetDisplayName(mon
, pbc
, NULL
, &xsl_url
);
443 IMoniker_Release(mon
);
444 IBindCtx_Release(pbc
);
447 IXMLDOMDocument3_Release(xml
);
448 return display_error_page(This
);
451 V_VT(&var
) = VT_BSTR
;
452 V_BSTR(&var
) = SysAllocString(xsl_url
);
453 CoTaskMemFree(xsl_url
);
455 IXMLDOMDocument3_Release(xml
);
456 return display_error_page(This
);
459 hres
= DOMDocument_create(MSXML_DEFAULT
, (void**)&xsl
);
462 IXMLDOMDocument3_Release(xml
);
463 return display_error_page(This
);
466 /* TODO: do the binding asynchronously */
467 hres
= IXMLDOMDocument3_load(xsl
, var
, &succ
);
469 if(FAILED(hres
) || !succ
) {
470 IXMLDOMDocument3_Release(xsl
);
471 IXMLDOMDocument3_Release(xml
);
472 return display_error_page(This
);
475 hres
= IXMLDOMDocument3_transformNode(xml
, (IXMLDOMNode
*)xsl
, &bstr
);
476 IXMLDOMDocument3_Release(xsl
);
477 IXMLDOMDocument3_Release(xml
);
479 return display_error_page(This
);
481 hres
= IStream_Seek(This
->stream
, off
, STREAM_SEEK_SET
, NULL
);
484 return display_error_page(This
);
487 hres
= IStream_Write(This
->stream
, (BYTE
*)bstr
,
488 SysStringLen(bstr
)*sizeof(WCHAR
), NULL
);
491 return display_error_page(This
);
493 return report_data(This
);
496 static HRESULT WINAPI
XMLView_BindStatusCallback_OnDataAvailable(
497 IBindStatusCallback
*iface
, DWORD grfBSCF
, DWORD dwSize
,
498 FORMATETC
*pformatetc
, STGMEDIUM
*pstgmed
)
500 BindStatusCallback
*This
= impl_from_IBindStatusCallback(iface
);
505 TRACE("(%p)->(%x %d %p %p)\n", This
, grfBSCF
, dwSize
, pformatetc
, pstgmed
);
511 hres
= IStream_Read(pstgmed
->u
.pstm
, buf
, sizeof(buf
), &size
);
512 IStream_Write(This
->stream
, buf
, size
, &size
);
513 } while(hres
==S_OK
&& size
);
515 if(FAILED(hres
) && hres
!=E_PENDING
)
520 return handle_xml_load(This
);
523 static HRESULT WINAPI
XMLView_BindStatusCallback_OnObjectAvailable(
524 IBindStatusCallback
*iface
, REFIID riid
, IUnknown
*punk
)
526 BindStatusCallback
*This
= impl_from_IBindStatusCallback(iface
);
527 FIXME("(%p)->(%s %p)\n", This
, debugstr_guid(riid
), punk
);
531 static IBindStatusCallbackVtbl XMLView_BindStatusCallbackVtbl
= {
532 XMLView_BindStatusCallback_QueryInterface
,
533 XMLView_BindStatusCallback_AddRef
,
534 XMLView_BindStatusCallback_Release
,
535 XMLView_BindStatusCallback_OnStartBinding
,
536 XMLView_BindStatusCallback_GetPriority
,
537 XMLView_BindStatusCallback_OnLowResource
,
538 XMLView_BindStatusCallback_OnProgress
,
539 XMLView_BindStatusCallback_OnStopBinding
,
540 XMLView_BindStatusCallback_GetBindInfo
,
541 XMLView_BindStatusCallback_OnDataAvailable
,
542 XMLView_BindStatusCallback_OnObjectAvailable
545 static inline HRESULT
XMLView_BindStatusCallback_Create(IBindStatusCallback
*bsc_html
,
546 IMoniker
*mon
, IStream
*stream
, IBindStatusCallback
**ret
)
548 BindStatusCallback
*bsc
;
550 bsc
= heap_alloc_zero(sizeof(BindStatusCallback
));
552 return E_OUTOFMEMORY
;
554 bsc
->IBindStatusCallback_iface
.lpVtbl
= &XMLView_BindStatusCallbackVtbl
;
558 IBindStatusCallback_AddRef(bsc_html
);
559 bsc
->stream
= stream
;
560 IStream_AddRef(bsc
->stream
);
562 IMoniker_AddRef(mon
);
564 *ret
= &bsc
->IBindStatusCallback_iface
;
568 static inline Moniker
* impl_from_IMoniker(IMoniker
*iface
)
570 return CONTAINING_RECORD(iface
, Moniker
, IMoniker_iface
);
573 static HRESULT WINAPI
XMLView_Moniker_QueryInterface(
574 IMoniker
*iface
, REFIID riid
, void **ppvObject
)
576 Moniker
*This
= impl_from_IMoniker(iface
);
578 TRACE("(%p)->(%s %p)\n", This
, debugstr_guid(riid
), ppvObject
);
580 if(IsEqualGUID(riid
, &IID_IUnknown
) || IsEqualGUID(riid
, &IID_IPersist
)
581 || IsEqualGUID(riid
, &IID_IPersistStream
) || IsEqualGUID(riid
, &IID_IMoniker
)) {
583 IMoniker_AddRef(iface
);
588 return E_NOINTERFACE
;
591 static ULONG WINAPI
XMLView_Moniker_AddRef(IMoniker
*iface
)
593 Moniker
*This
= impl_from_IMoniker(iface
);
594 LONG ref
= InterlockedIncrement(&This
->ref
);
596 TRACE("(%p)->(%d)\n", This
, ref
);
601 static ULONG WINAPI
XMLView_Moniker_Release(IMoniker
*iface
)
603 Moniker
*This
= impl_from_IMoniker(iface
);
604 ULONG ref
= InterlockedDecrement(&This
->ref
);
606 TRACE("(%p)->(%d)\n", This
, ref
);
609 IMoniker_Release(This
->mon
);
615 static HRESULT WINAPI
XMLView_Moniker_GetClassID(IMoniker
*iface
, CLSID
*pClassID
)
617 Moniker
*This
= impl_from_IMoniker(iface
);
618 FIXME("(%p)->(%p)\n", This
, pClassID
);
622 static HRESULT WINAPI
XMLView_Moniker_IsDirty(IMoniker
*iface
)
624 Moniker
*This
= impl_from_IMoniker(iface
);
625 FIXME("(%p)\n", This
);
629 static HRESULT WINAPI
XMLView_Moniker_Load(IMoniker
*iface
, IStream
*pStm
)
631 Moniker
*This
= impl_from_IMoniker(iface
);
632 FIXME("(%p)->(%p)\n", This
, pStm
);
636 static HRESULT WINAPI
XMLView_Moniker_Save(IMoniker
*iface
,
637 IStream
*pStm
, BOOL fClearDirty
)
639 Moniker
*This
= impl_from_IMoniker(iface
);
640 FIXME("(%p)->(%p %x)\n", This
, pStm
, fClearDirty
);
644 static HRESULT WINAPI
XMLView_Moniker_GetSizeMax(
645 IMoniker
*iface
, ULARGE_INTEGER
*pcbSize
)
647 Moniker
*This
= impl_from_IMoniker(iface
);
648 FIXME("(%p)->(%p)\n", This
, pcbSize
);
652 static HRESULT WINAPI
XMLView_Moniker_BindToObject(IMoniker
*iface
, IBindCtx
*pbc
,
653 IMoniker
*pmkToLeft
, REFIID riidResult
, void **ppvResult
)
655 Moniker
*This
= impl_from_IMoniker(iface
);
656 FIXME("(%p)->(%p %p %s %p)\n", This
, pbc
, pmkToLeft
,
657 debugstr_guid(riidResult
), ppvResult
);
661 static HRESULT WINAPI
XMLView_Moniker_BindToStorage(IMoniker
*iface
, IBindCtx
*pbc
,
662 IMoniker
*pmkToLeft
, REFIID riid
, void **ppvObj
)
664 Moniker
*This
= impl_from_IMoniker(iface
);
666 TRACE("(%p)->(%p %p %s %p)\n", This
, pbc
, pmkToLeft
, debugstr_guid(riid
), ppvObj
);
668 if(IsEqualGUID(riid
, &IID_IStream
)) {
672 *ppvObj
= This
->stream
;
674 return S_ASYNCHRONOUS
;
680 static HRESULT WINAPI
XMLView_Moniker_Reduce(IMoniker
*iface
, IBindCtx
*pbc
,
681 DWORD dwReduceHowFar
, IMoniker
**ppmkToLeft
, IMoniker
**ppmkReduced
)
683 Moniker
*This
= impl_from_IMoniker(iface
);
684 FIXME("(%p)->(%p %d %p %p)\n", This
, pbc
, dwReduceHowFar
, ppmkToLeft
, ppmkReduced
);
688 static HRESULT WINAPI
XMLView_Moniker_ComposeWith(IMoniker
*iface
, IMoniker
*pmkRight
,
689 BOOL fOnlyIfNotGeneric
, IMoniker
**ppmkComposite
)
691 Moniker
*This
= impl_from_IMoniker(iface
);
692 FIXME("(%p)->(%p %x %p)\n", This
, pmkRight
, fOnlyIfNotGeneric
, ppmkComposite
);
696 static HRESULT WINAPI
XMLView_Moniker_Enum(IMoniker
*iface
,
697 BOOL fForward
, IEnumMoniker
**ppenumMoniker
)
699 Moniker
*This
= impl_from_IMoniker(iface
);
700 FIXME("(%p)->(%x %p)\n", This
, fForward
, ppenumMoniker
);
704 static HRESULT WINAPI
XMLView_Moniker_IsEqual(IMoniker
*iface
,
705 IMoniker
*pmkOtherMoniker
)
707 Moniker
*This
= impl_from_IMoniker(iface
);
708 FIXME("(%p)->(%p)\n", This
, pmkOtherMoniker
);
712 static HRESULT WINAPI
XMLView_Moniker_Hash(IMoniker
*iface
, DWORD
*pdwHash
)
714 Moniker
*This
= impl_from_IMoniker(iface
);
715 FIXME("(%p)->(%p)\n", This
, pdwHash
);
719 static HRESULT WINAPI
XMLView_Moniker_IsRunning(IMoniker
*iface
, IBindCtx
*pbc
,
720 IMoniker
*pmkToLeft
, IMoniker
*pmkNewlyRunning
)
722 Moniker
*This
= impl_from_IMoniker(iface
);
723 FIXME("(%p)->(%p %p %p)\n", This
, pbc
, pmkToLeft
, pmkNewlyRunning
);
727 static HRESULT WINAPI
XMLView_Moniker_GetTimeOfLastChange(IMoniker
*iface
,
728 IBindCtx
*pbc
, IMoniker
*pmkToLeft
, FILETIME
*pFileTime
)
730 Moniker
*This
= impl_from_IMoniker(iface
);
731 FIXME("(%p)->(%p %p %p)\n", This
, pbc
, pmkToLeft
, pFileTime
);
735 static HRESULT WINAPI
XMLView_Moniker_Inverse(IMoniker
*iface
, IMoniker
**ppmk
)
737 Moniker
*This
= impl_from_IMoniker(iface
);
738 FIXME("(%p)->(%p)\n", This
, ppmk
);
742 static HRESULT WINAPI
XMLView_Moniker_CommonPrefixWith(IMoniker
*iface
,
743 IMoniker
*pmkOther
, IMoniker
**ppmkPrefix
)
745 Moniker
*This
= impl_from_IMoniker(iface
);
746 FIXME("(%p)->(%p %p)\n", This
, pmkOther
, ppmkPrefix
);
750 static HRESULT WINAPI
XMLView_Moniker_RelativePathTo(IMoniker
*iface
,
751 IMoniker
*pmkOther
, IMoniker
**ppmkRelPath
)
753 Moniker
*This
= impl_from_IMoniker(iface
);
754 FIXME("(%p)->(%p %p)\n", This
, pmkOther
, ppmkRelPath
);
758 static HRESULT WINAPI
XMLView_Moniker_GetDisplayName(IMoniker
*iface
,
759 IBindCtx
*pbc
, IMoniker
*pmkToLeft
, LPOLESTR
*ppszDisplayName
)
761 Moniker
*This
= impl_from_IMoniker(iface
);
762 TRACE("(%p)->(%p %p %p)\n", This
, pbc
, pmkToLeft
, ppszDisplayName
);
763 return IMoniker_GetDisplayName(This
->mon
, pbc
, pmkToLeft
, ppszDisplayName
);
766 static HRESULT WINAPI
XMLView_Moniker_ParseDisplayName(IMoniker
*iface
,
767 IBindCtx
*pbc
, IMoniker
*pmkToLeft
, LPOLESTR pszDisplayName
,
768 ULONG
*pchEaten
, IMoniker
**ppmkOut
)
770 Moniker
*This
= impl_from_IMoniker(iface
);
771 FIXME("(%p)->(%p %p %s %p %p)\n", This
, pbc
, pmkToLeft
,
772 debugstr_w(pszDisplayName
), pchEaten
, ppmkOut
);
776 static HRESULT WINAPI
XMLView_Moniker_IsSystemMoniker(
777 IMoniker
*iface
, DWORD
*pdwMksys
)
779 Moniker
*This
= impl_from_IMoniker(iface
);
780 FIXME("(%p)->(%p)\n", This
, pdwMksys
);
784 static IMonikerVtbl XMLView_MonikerVtbl
= {
785 XMLView_Moniker_QueryInterface
,
786 XMLView_Moniker_AddRef
,
787 XMLView_Moniker_Release
,
788 XMLView_Moniker_GetClassID
,
789 XMLView_Moniker_IsDirty
,
790 XMLView_Moniker_Load
,
791 XMLView_Moniker_Save
,
792 XMLView_Moniker_GetSizeMax
,
793 XMLView_Moniker_BindToObject
,
794 XMLView_Moniker_BindToStorage
,
795 XMLView_Moniker_Reduce
,
796 XMLView_Moniker_ComposeWith
,
797 XMLView_Moniker_Enum
,
798 XMLView_Moniker_IsEqual
,
799 XMLView_Moniker_Hash
,
800 XMLView_Moniker_IsRunning
,
801 XMLView_Moniker_GetTimeOfLastChange
,
802 XMLView_Moniker_Inverse
,
803 XMLView_Moniker_CommonPrefixWith
,
804 XMLView_Moniker_RelativePathTo
,
805 XMLView_Moniker_GetDisplayName
,
806 XMLView_Moniker_ParseDisplayName
,
807 XMLView_Moniker_IsSystemMoniker
810 static inline HRESULT
XMLView_Moniker_Create(IMoniker
*mon
,
811 IStream
*stream
, IMoniker
**ret
)
815 wrap
= heap_alloc_zero(sizeof(Moniker
));
817 return E_OUTOFMEMORY
;
819 wrap
->IMoniker_iface
.lpVtbl
= &XMLView_MonikerVtbl
;
823 IMoniker_AddRef(mon
);
824 wrap
->stream
= stream
;
825 IStream_AddRef(stream
);
827 *ret
= &wrap
->IMoniker_iface
;
831 static inline XMLView
* impl_from_IPersistMoniker(IPersistMoniker
*iface
)
833 return CONTAINING_RECORD(iface
, XMLView
, IPersistMoniker_iface
);
836 static HRESULT WINAPI
XMLView_PersistMoniker_QueryInterface(
837 IPersistMoniker
*iface
, REFIID riid
, void **ppvObject
)
839 XMLView
*This
= impl_from_IPersistMoniker(iface
);
841 TRACE("(%p)->(%s %p)\n", This
, debugstr_guid(riid
), ppvObject
);
843 if(IsEqualGUID(riid
, &IID_IUnknown
) || IsEqualGUID(riid
, &IID_IPersistMoniker
))
844 *ppvObject
= &This
->IPersistMoniker_iface
;
845 else if(IsEqualGUID(riid
, &IID_IPersistHistory
) ||
846 IsEqualGUID(riid
, &IID_IPersist
))
847 *ppvObject
= &This
->IPersistHistory_iface
;
848 else if(IsEqualGUID(riid
, &IID_IOleCommandTarget
))
849 *ppvObject
= &This
->IOleCommandTarget_iface
;
850 else if(IsEqualGUID(riid
, &IID_IOleObject
))
851 *ppvObject
= &This
->IOleObject_iface
;
853 return IUnknown_QueryInterface(This
->html_doc
, riid
, ppvObject
);
855 IPersistMoniker_AddRef(&This
->IPersistMoniker_iface
);
859 static ULONG WINAPI
XMLView_PersistMoniker_AddRef(IPersistMoniker
*iface
)
861 XMLView
*This
= impl_from_IPersistMoniker(iface
);
862 LONG ref
= InterlockedIncrement(&This
->ref
);
864 TRACE("(%p)->(%d)\n", This
, ref
);
869 static ULONG WINAPI
XMLView_PersistMoniker_Release(IPersistMoniker
*iface
)
871 XMLView
*This
= impl_from_IPersistMoniker(iface
);
872 ULONG ref
= InterlockedDecrement(&This
->ref
);
874 TRACE("(%p)->(%d)\n", This
, ref
);
878 IMoniker_Release(This
->mon
);
879 IUnknown_Release(This
->html_doc
);
885 static HRESULT WINAPI
XMLView_PersistMoniker_GetClassID(
886 IPersistMoniker
*iface
, CLSID
*pClassID
)
888 XMLView
*This
= impl_from_IPersistMoniker(iface
);
889 FIXME("(%p)->(%p)\n", This
, pClassID
);
893 static HRESULT WINAPI
XMLView_PersistMoniker_IsDirty(IPersistMoniker
*iface
)
895 XMLView
*This
= impl_from_IPersistMoniker(iface
);
896 FIXME("(%p)\n", This
);
900 static HRESULT WINAPI
XMLView_PersistMoniker_Load(IPersistMoniker
*iface
,
901 BOOL fFullyAvailable
, IMoniker
*pimkName
, LPBC pibc
, DWORD grfMode
)
903 static const WCHAR XSLParametersW
[] = {'X','S','L','P','a','r','a','m','e','t','e','r','s',0};
904 static const WCHAR XMLBufferStreamW
[] = {'X','M','L','B','u','f','f','e','r','S','t','r','e','a','m',0};
905 static const WCHAR DWNBINDINFOW
[] = {'_','_','D','W','N','B','I','N','D','I','N','F','O',0};
906 static const WCHAR HTMLLOADOPTIONSW
[] = {'_','_','H','T','M','L','L','O','A','D','O','P','T','I','O','N','S',0};
907 static const WCHAR BSCBHolderW
[] = { '_','B','S','C','B','_','H','o','l','d','e','r','_',0 };
909 XMLView
*This
= impl_from_IPersistMoniker(iface
);
910 IPersistMoniker
*html_persist_mon
;
911 IBindStatusCallback
*bsc
, *bsc_html
;
918 TRACE("(%p)->(%x %p %p %x)\n", This
, fFullyAvailable
, pimkName
, pibc
, grfMode
);
920 hres
= IBindCtx_GetObjectParam(pibc
, (LPOLESTR
)XSLParametersW
, &unk
);
921 if(SUCCEEDED(hres
)) {
922 FIXME("ignoring XSLParameters\n");
923 IUnknown_Release(unk
);
925 hres
= IBindCtx_GetObjectParam(pibc
, (LPOLESTR
)XMLBufferStreamW
, &unk
);
926 if(SUCCEEDED(hres
)) {
927 FIXME("ignoring XMLBufferStream\n");
928 IUnknown_Release(unk
);
931 hres
= CreateBindCtx(0, &bindctx
);
935 hres
= IBindCtx_GetObjectParam(pibc
, (LPOLESTR
)DWNBINDINFOW
, &unk
);
936 if(SUCCEEDED(hres
)) {
937 IBindCtx_RegisterObjectParam(bindctx
, (LPOLESTR
)DWNBINDINFOW
, unk
);
938 IUnknown_Release(unk
);
940 hres
= IBindCtx_GetObjectParam(pibc
, (LPOLESTR
)HTMLLOADOPTIONSW
, &unk
);
941 if(SUCCEEDED(hres
)) {
942 IBindCtx_RegisterObjectParam(bindctx
, (LPOLESTR
)HTMLLOADOPTIONSW
, unk
);
943 IUnknown_Release(unk
);
945 hres
= IBindCtx_GetObjectParam(pibc
, (LPOLESTR
)SZ_HTML_CLIENTSITE_OBJECTPARAM
, &unk
);
946 if(SUCCEEDED(hres
)) {
947 IBindCtx_RegisterObjectParam(bindctx
, (LPOLESTR
)SZ_HTML_CLIENTSITE_OBJECTPARAM
, unk
);
948 IUnknown_Release(unk
);
951 hres
= CreateStreamOnHGlobal(NULL
, TRUE
, &stream
);
953 IBindCtx_Release(bindctx
);
958 IMoniker_Release(This
->mon
);
959 This
->mon
= pimkName
;
960 IMoniker_AddRef(This
->mon
);
962 hres
= XMLView_Moniker_Create(This
->mon
, stream
, &mon
);
964 IStream_Release(stream
);
965 IBindCtx_Release(bindctx
);
969 hres
= IUnknown_QueryInterface(This
->html_doc
,
970 &IID_IPersistMoniker
, (void**)&html_persist_mon
);
972 IMoniker_Release(mon
);
973 IStream_Release(stream
);
974 IBindCtx_Release(bindctx
);
978 hres
= IPersistMoniker_Load(html_persist_mon
, FALSE
, mon
, bindctx
, 0);
979 IPersistMoniker_Release(html_persist_mon
);
980 IMoniker_Release(mon
);
982 IStream_Release(stream
);
983 IBindCtx_Release(bindctx
);
987 hres
= IBindCtx_GetObjectParam(bindctx
, (LPOLESTR
)BSCBHolderW
, &unk
);
988 IBindCtx_Release(bindctx
);
990 IStream_Release(stream
);
993 hres
= IUnknown_QueryInterface(unk
, &IID_IBindStatusCallback
, (void**)&bsc_html
);
994 IUnknown_Release(unk
);
996 IStream_Release(stream
);
1000 hres
= XMLView_BindStatusCallback_Create(bsc_html
, This
->mon
, stream
, &bsc
);
1001 IStream_Release(stream
);
1003 IBindStatusCallback_OnStopBinding(bsc_html
, hres
, NULL
);
1004 IBindStatusCallback_Release(bsc_html
);
1008 hres
= RegisterBindStatusCallback(pibc
, bsc
, NULL
, 0);
1009 IBindStatusCallback_Release(bsc
);
1011 IBindStatusCallback_OnStopBinding(bsc_html
, hres
, NULL
);
1012 IBindStatusCallback_Release(bsc_html
);
1016 hres
= IMoniker_BindToStorage(pimkName
, pibc
, NULL
,
1017 &IID_IStream
, (void**)&stream
);
1019 IBindStatusCallback_OnStopBinding(bsc_html
, hres
, NULL
);
1020 IBindStatusCallback_Release(bsc_html
);
1025 IStream_Release(stream
);
1026 IBindStatusCallback_Release(bsc_html
);
1030 static HRESULT WINAPI
XMLView_PersistMoniker_Save(IPersistMoniker
*iface
,
1031 IMoniker
*pimkName
, LPBC pbc
, BOOL fRemember
)
1033 XMLView
*This
= impl_from_IPersistMoniker(iface
);
1034 FIXME("(%p)->(%p %p %x)\n", This
, pimkName
, pbc
, fRemember
);
1038 static HRESULT WINAPI
XMLView_PersistMoniker_SaveCompleted(
1039 IPersistMoniker
*iface
, IMoniker
*pimkName
, LPBC pibc
)
1041 XMLView
*This
= impl_from_IPersistMoniker(iface
);
1042 FIXME("(%p)->(%p %p)\n", This
, pimkName
, pibc
);
1046 static HRESULT WINAPI
XMLView_PersistMoniker_GetCurMoniker(
1047 IPersistMoniker
*iface
, IMoniker
**ppimkName
)
1049 XMLView
*This
= impl_from_IPersistMoniker(iface
);
1050 FIXME("(%p)->(%p)\n", This
, ppimkName
);
1054 static IPersistMonikerVtbl XMLView_PersistMonikerVtbl
= {
1055 XMLView_PersistMoniker_QueryInterface
,
1056 XMLView_PersistMoniker_AddRef
,
1057 XMLView_PersistMoniker_Release
,
1058 XMLView_PersistMoniker_GetClassID
,
1059 XMLView_PersistMoniker_IsDirty
,
1060 XMLView_PersistMoniker_Load
,
1061 XMLView_PersistMoniker_Save
,
1062 XMLView_PersistMoniker_SaveCompleted
,
1063 XMLView_PersistMoniker_GetCurMoniker
1066 static inline XMLView
* impl_from_IPersistHistory(IPersistHistory
*iface
)
1068 return CONTAINING_RECORD(iface
, XMLView
, IPersistHistory_iface
);
1071 static HRESULT WINAPI
XMLView_PersistHistory_QueryInterface(
1072 IPersistHistory
*iface
, REFIID riid
, void **ppvObject
)
1074 XMLView
*This
= impl_from_IPersistHistory(iface
);
1075 return IPersistMoniker_QueryInterface(&This
->IPersistMoniker_iface
, riid
, ppvObject
);
1078 static ULONG WINAPI
XMLView_PersistHistory_AddRef(IPersistHistory
*iface
)
1080 XMLView
*This
= impl_from_IPersistHistory(iface
);
1081 return IPersistMoniker_AddRef(&This
->IPersistMoniker_iface
);
1084 static ULONG WINAPI
XMLView_PersistHistory_Release(IPersistHistory
*iface
)
1086 XMLView
*This
= impl_from_IPersistHistory(iface
);
1087 return IPersistMoniker_Release(&This
->IPersistMoniker_iface
);
1090 static HRESULT WINAPI
XMLView_PersistHistory_GetClassID(
1091 IPersistHistory
*iface
, CLSID
*pClassID
)
1093 XMLView
*This
= impl_from_IPersistHistory(iface
);
1094 FIXME("(%p)->(%p)\n", This
, pClassID
);
1098 static HRESULT WINAPI
XMLView_PersistHistory_LoadHistory(
1099 IPersistHistory
*iface
, IStream
*pStream
, IBindCtx
*pbc
)
1101 XMLView
*This
= impl_from_IPersistHistory(iface
);
1102 FIXME("(%p)->(%p %p)\n", This
, pStream
, pbc
);
1106 static HRESULT WINAPI
XMLView_PersistHistory_SaveHistory(
1107 IPersistHistory
*iface
, IStream
*pStream
)
1109 XMLView
*This
= impl_from_IPersistHistory(iface
);
1110 FIXME("(%p)->(%p)\n", This
, pStream
);
1114 static HRESULT WINAPI
XMLView_PersistHistory_SetPositionCookie(
1115 IPersistHistory
*iface
, DWORD dwPositioncookie
)
1117 XMLView
*This
= impl_from_IPersistHistory(iface
);
1118 FIXME("(%p)->(%d)\n", This
, dwPositioncookie
);
1122 static HRESULT WINAPI
XMLView_PersistHistory_GetPositionCookie(
1123 IPersistHistory
*iface
, DWORD
*pdwPositioncookie
)
1125 XMLView
*This
= impl_from_IPersistHistory(iface
);
1126 FIXME("(%p)->(%p)\n", This
, pdwPositioncookie
);
1130 static IPersistHistoryVtbl XMLView_PersistHistoryVtbl
= {
1131 XMLView_PersistHistory_QueryInterface
,
1132 XMLView_PersistHistory_AddRef
,
1133 XMLView_PersistHistory_Release
,
1134 XMLView_PersistHistory_GetClassID
,
1135 XMLView_PersistHistory_LoadHistory
,
1136 XMLView_PersistHistory_SaveHistory
,
1137 XMLView_PersistHistory_SetPositionCookie
,
1138 XMLView_PersistHistory_GetPositionCookie
1141 static inline XMLView
* impl_from_IOleCommandTarget(IOleCommandTarget
*iface
)
1143 return CONTAINING_RECORD(iface
, XMLView
, IOleCommandTarget_iface
);
1146 static HRESULT WINAPI
XMLView_OleCommandTarget_QueryInterface(
1147 IOleCommandTarget
*iface
, REFIID riid
, void **ppvObject
)
1149 XMLView
*This
= impl_from_IOleCommandTarget(iface
);
1150 return IPersistMoniker_QueryInterface(&This
->IPersistMoniker_iface
, riid
, ppvObject
);
1153 static ULONG WINAPI
XMLView_OleCommandTarget_AddRef(IOleCommandTarget
*iface
)
1155 XMLView
*This
= impl_from_IOleCommandTarget(iface
);
1156 return IPersistMoniker_AddRef(&This
->IPersistMoniker_iface
);
1159 static ULONG WINAPI
XMLView_OleCommandTarget_Release(IOleCommandTarget
*iface
)
1161 XMLView
*This
= impl_from_IOleCommandTarget(iface
);
1162 return IPersistMoniker_Release(&This
->IPersistMoniker_iface
);
1165 static HRESULT WINAPI
XMLView_OleCommandTarget_QueryStatus(IOleCommandTarget
*iface
,
1166 const GUID
*pguidCmdGroup
, ULONG cCmds
, OLECMD prgCmds
[], OLECMDTEXT
*pCmdText
)
1168 XMLView
*This
= impl_from_IOleCommandTarget(iface
);
1169 FIXME("(%p)->(%p %x %p %p)\n", This
, pguidCmdGroup
, cCmds
, prgCmds
, pCmdText
);
1173 static HRESULT WINAPI
XMLView_OleCommandTarget_Exec(IOleCommandTarget
*iface
,
1174 const GUID
*pguidCmdGroup
, DWORD nCmdID
, DWORD nCmdexecopt
,
1175 VARIANT
*pvaIn
, VARIANT
*pvaOut
)
1177 XMLView
*This
= impl_from_IOleCommandTarget(iface
);
1178 FIXME("(%p)->(%p %d %x %p %p)\n", This
, pguidCmdGroup
,
1179 nCmdID
, nCmdexecopt
, pvaIn
, pvaOut
);
1183 static IOleCommandTargetVtbl XMLView_OleCommandTargetVtbl
= {
1184 XMLView_OleCommandTarget_QueryInterface
,
1185 XMLView_OleCommandTarget_AddRef
,
1186 XMLView_OleCommandTarget_Release
,
1187 XMLView_OleCommandTarget_QueryStatus
,
1188 XMLView_OleCommandTarget_Exec
1191 static inline XMLView
* impl_from_IOleObject(IOleObject
*iface
)
1193 return CONTAINING_RECORD(iface
, XMLView
, IOleObject_iface
);
1196 static HRESULT WINAPI
XMLView_OleObject_QueryInterface(
1197 IOleObject
*iface
, REFIID riid
, void **ppvObject
)
1199 XMLView
*This
= impl_from_IOleObject(iface
);
1200 return IPersistMoniker_QueryInterface(&This
->IPersistMoniker_iface
, riid
, ppvObject
);
1203 static ULONG WINAPI
XMLView_OleObject_AddRef(IOleObject
*iface
)
1205 XMLView
*This
= impl_from_IOleObject(iface
);
1206 return IPersistMoniker_AddRef(&This
->IPersistMoniker_iface
);
1209 static ULONG WINAPI
XMLView_OleObject_Release(IOleObject
*iface
)
1211 XMLView
*This
= impl_from_IOleObject(iface
);
1212 return IPersistMoniker_Release(&This
->IPersistMoniker_iface
);
1215 static HRESULT WINAPI
XMLView_OleObject_SetClientSite(
1216 IOleObject
*iface
, IOleClientSite
*pClientSite
)
1218 XMLView
*This
= impl_from_IOleObject(iface
);
1219 FIXME("(%p)->(%p)\n", This
, pClientSite
);
1223 static HRESULT WINAPI
XMLView_OleObject_GetClientSite(
1224 IOleObject
*iface
, IOleClientSite
**ppClientSite
)
1226 XMLView
*This
= impl_from_IOleObject(iface
);
1227 FIXME("(%p)->(%p)\n", This
, ppClientSite
);
1231 static HRESULT WINAPI
XMLView_OleObject_SetHostNames(IOleObject
*iface
,
1232 LPCOLESTR szContainerApp
, LPCOLESTR szContainerObj
)
1234 XMLView
*This
= impl_from_IOleObject(iface
);
1235 FIXME("(%p)->(%s %s)\n", This
, debugstr_w(szContainerApp
), debugstr_w(szContainerObj
));
1239 static HRESULT WINAPI
XMLView_OleObject_Close(IOleObject
*iface
, DWORD dwSaveOption
)
1241 XMLView
*This
= impl_from_IOleObject(iface
);
1242 FIXME("(%p)->(%x)\n", This
, dwSaveOption
);
1246 static HRESULT WINAPI
XMLView_OleObject_SetMoniker(IOleObject
*iface
,
1247 DWORD dwWhichMoniker
, IMoniker
*pmk
)
1249 XMLView
*This
= impl_from_IOleObject(iface
);
1250 FIXME("(%p)->(%x %p)\n", This
, dwWhichMoniker
, pmk
);
1254 static HRESULT WINAPI
XMLView_OleObject_GetMoniker(IOleObject
*iface
,
1255 DWORD dwAssign
, DWORD dwWhichMoniker
, IMoniker
**ppmk
)
1257 XMLView
*This
= impl_from_IOleObject(iface
);
1258 FIXME("(%p)->(%x %x %p)\n", This
, dwAssign
, dwWhichMoniker
, ppmk
);
1262 static HRESULT WINAPI
XMLView_OleObject_InitFromData(IOleObject
*iface
,
1263 IDataObject
*pDataObject
, BOOL fCreation
, DWORD dwReserved
)
1265 XMLView
*This
= impl_from_IOleObject(iface
);
1266 FIXME("(%p)->(%p %x %x)\n", This
, pDataObject
, fCreation
, dwReserved
);
1270 static HRESULT WINAPI
XMLView_OleObject_GetClipboardData(IOleObject
*iface
,
1271 DWORD dwReserved
, IDataObject
**ppDataObject
)
1273 XMLView
*This
= impl_from_IOleObject(iface
);
1274 FIXME("(%p)->(%x %p)\n", This
, dwReserved
, ppDataObject
);
1278 static HRESULT WINAPI
XMLView_OleObject_DoVerb(IOleObject
*iface
,
1279 LONG iVerb
, LPMSG lpmsg
, IOleClientSite
*pActiveSite
,
1280 LONG lindex
, HWND hwndParent
, LPCRECT lprcPosRect
)
1282 XMLView
*This
= impl_from_IOleObject(iface
);
1283 FIXME("(%p)->(%d %p %p %d %p %p)\n", This
, iVerb
, lpmsg
,
1284 pActiveSite
, lindex
, hwndParent
, lprcPosRect
);
1288 static HRESULT WINAPI
XMLView_OleObject_EnumVerbs(
1289 IOleObject
*iface
, IEnumOLEVERB
**ppEnumOleVerb
)
1291 XMLView
*This
= impl_from_IOleObject(iface
);
1292 FIXME("(%p)->{%p)\n", This
, ppEnumOleVerb
);
1296 static HRESULT WINAPI
XMLView_OleObject_Update(IOleObject
*iface
)
1298 XMLView
*This
= impl_from_IOleObject(iface
);
1299 FIXME("(%p)\n", This
);
1303 static HRESULT WINAPI
XMLView_OleObject_IsUpToDate(IOleObject
*iface
)
1305 XMLView
*This
= impl_from_IOleObject(iface
);
1306 FIXME("(%p)\n", This
);
1310 static HRESULT WINAPI
XMLView_OleObject_GetUserClassID(IOleObject
*iface
, CLSID
*pClsid
)
1312 XMLView
*This
= impl_from_IOleObject(iface
);
1313 FIXME("(%p)->(%p)\n", This
, pClsid
);
1317 static HRESULT WINAPI
XMLView_OleObject_GetUserType(IOleObject
*iface
,
1318 DWORD dwFormOfType
, LPOLESTR
*pszUserType
)
1320 XMLView
*This
= impl_from_IOleObject(iface
);
1321 FIXME("(%p)->(%x %p)\n", This
, dwFormOfType
, pszUserType
);
1325 static HRESULT WINAPI
XMLView_OleObject_SetExtent(IOleObject
*iface
,
1326 DWORD dwDrawAspect
, SIZEL
*psizel
)
1328 XMLView
*This
= impl_from_IOleObject(iface
);
1329 FIXME("(%p)->(%x %p)\n", This
, dwDrawAspect
, psizel
);
1333 static HRESULT WINAPI
XMLView_OleObject_GetExtent(IOleObject
*iface
,
1334 DWORD dwDrawAspect
, SIZEL
*psizel
)
1336 XMLView
*This
= impl_from_IOleObject(iface
);
1337 FIXME("(%p)->(%x %p)\n", This
, dwDrawAspect
, psizel
);
1341 static HRESULT WINAPI
XMLView_OleObject_Advise(IOleObject
*iface
,
1342 IAdviseSink
*pAdvSink
, DWORD
*pdwConnection
)
1344 XMLView
*This
= impl_from_IOleObject(iface
);
1345 FIXME("(%p)->(%p %p)\n", This
, pAdvSink
, pdwConnection
);
1349 static HRESULT WINAPI
XMLView_OleObject_Unadvise(
1350 IOleObject
*iface
, DWORD dwConnection
)
1352 XMLView
*This
= impl_from_IOleObject(iface
);
1353 FIXME("(%p)->(%d)\n", This
, dwConnection
);
1357 static HRESULT WINAPI
XMLView_OleObject_EnumAdvise(
1358 IOleObject
*iface
, IEnumSTATDATA
**ppenumAdvise
)
1360 XMLView
*This
= impl_from_IOleObject(iface
);
1361 FIXME("(%p)->(%p)\n", This
, ppenumAdvise
);
1365 static HRESULT WINAPI
XMLView_OleObject_GetMiscStatus(
1366 IOleObject
*iface
, DWORD dwAspect
, DWORD
*pdwStatus
)
1368 XMLView
*This
= impl_from_IOleObject(iface
);
1369 FIXME("(%p)->(%d %p)\n", This
, dwAspect
, pdwStatus
);
1373 static HRESULT WINAPI
XMLView_OleObject_SetColorScheme(
1374 IOleObject
*iface
, LOGPALETTE
*pLogpal
)
1376 XMLView
*This
= impl_from_IOleObject(iface
);
1377 FIXME("(%p)->(%p)\n", This
, pLogpal
);
1381 static IOleObjectVtbl XMLView_OleObjectVtbl
= {
1382 XMLView_OleObject_QueryInterface
,
1383 XMLView_OleObject_AddRef
,
1384 XMLView_OleObject_Release
,
1385 XMLView_OleObject_SetClientSite
,
1386 XMLView_OleObject_GetClientSite
,
1387 XMLView_OleObject_SetHostNames
,
1388 XMLView_OleObject_Close
,
1389 XMLView_OleObject_SetMoniker
,
1390 XMLView_OleObject_GetMoniker
,
1391 XMLView_OleObject_InitFromData
,
1392 XMLView_OleObject_GetClipboardData
,
1393 XMLView_OleObject_DoVerb
,
1394 XMLView_OleObject_EnumVerbs
,
1395 XMLView_OleObject_Update
,
1396 XMLView_OleObject_IsUpToDate
,
1397 XMLView_OleObject_GetUserClassID
,
1398 XMLView_OleObject_GetUserType
,
1399 XMLView_OleObject_SetExtent
,
1400 XMLView_OleObject_GetExtent
,
1401 XMLView_OleObject_Advise
,
1402 XMLView_OleObject_Unadvise
,
1403 XMLView_OleObject_EnumAdvise
,
1404 XMLView_OleObject_GetMiscStatus
,
1405 XMLView_OleObject_SetColorScheme
1408 HRESULT
XMLView_create(void **ppObj
)
1413 TRACE("(%p)\n", ppObj
);
1415 This
= heap_alloc_zero(sizeof(*This
));
1417 return E_OUTOFMEMORY
;
1419 This
->IPersistMoniker_iface
.lpVtbl
= &XMLView_PersistMonikerVtbl
;
1420 This
->IPersistHistory_iface
.lpVtbl
= &XMLView_PersistHistoryVtbl
;
1421 This
->IOleCommandTarget_iface
.lpVtbl
= &XMLView_OleCommandTargetVtbl
;
1422 This
->IOleObject_iface
.lpVtbl
= &XMLView_OleObjectVtbl
;
1425 hres
= CoCreateInstance(&CLSID_HTMLDocument
, (IUnknown
*)&This
->IPersistMoniker_iface
,
1426 CLSCTX_INPROC_SERVER
, &IID_IUnknown
, (void**)&This
->html_doc
);
1432 *ppObj
= &This
->IPersistMoniker_iface
;
1438 HRESULT
XMLView_create(void **ppObj
)
1440 MESSAGE("This program tried to use a XMLView object, but\n"
1441 "libxml2 support was not present at compile time.\n");
1445 #endif /* HAVE_LIBXML2 */