[PATCH v2 2/3] dhtmled.ocx: Add IPersistStreamInit interface to DHTMLEdit object
Alex Henrie
alexhenrie24 at gmail.com
Fri Feb 9 00:55:56 CST 2018
Signed-off-by: Alex Henrie <alexhenrie24 at gmail.com>
---
dlls/dhtmled.ocx/edit.c | 83 +++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 83 insertions(+)
diff --git a/dlls/dhtmled.ocx/edit.c b/dlls/dhtmled.ocx/edit.c
index ef5a0c36e4..1da0890dbc 100644
--- a/dlls/dhtmled.ocx/edit.c
+++ b/dlls/dhtmled.ocx/edit.c
@@ -28,6 +28,7 @@ typedef struct
{
IDHTMLEdit IDHTMLEdit_iface;
IOleObject IOleObject_iface;
+ IPersistStreamInit IPersistStreamInit_iface;
IOleClientSite *client_site;
LONG ref;
} DHTMLEditImpl;
@@ -42,6 +43,11 @@ static inline DHTMLEditImpl *impl_from_IOleObject(IOleObject *iface)
return CONTAINING_RECORD(iface, DHTMLEditImpl, IOleObject_iface);
}
+static inline DHTMLEditImpl *impl_from_IPersistStreamInit(IPersistStreamInit *iface)
+{
+ return CONTAINING_RECORD(iface, DHTMLEditImpl, IPersistStreamInit_iface);
+}
+
static ULONG dhtml_edit_addref(DHTMLEditImpl *This)
{
LONG ref = InterlockedIncrement(&This->ref);
@@ -70,6 +76,12 @@ static HRESULT dhtml_edit_qi(DHTMLEditImpl *This, REFIID iid, void **out)
*out = &This->IOleObject_iface;
return S_OK;
}
+ else if (IsEqualGUID(iid, &IID_IPersistStreamInit))
+ {
+ dhtml_edit_addref(This);
+ *out = &This->IPersistStreamInit_iface;
+ return S_OK;
+ }
*out = NULL;
ERR("no interface for %s\n", debugstr_guid(iid));
@@ -765,6 +777,76 @@ static const IOleObjectVtbl OleObjectVtbl = {
OleObject_SetColorScheme
};
+static HRESULT WINAPI PersistStreamInit_QueryInterface(IPersistStreamInit *iface, REFIID iid, void **out)
+{
+ return dhtml_edit_qi(impl_from_IPersistStreamInit(iface), iid, out);
+}
+
+static ULONG WINAPI PersistStreamInit_AddRef(IPersistStreamInit *iface)
+{
+ return dhtml_edit_addref(impl_from_IPersistStreamInit(iface));
+}
+
+static ULONG WINAPI PersistStreamInit_Release(IPersistStreamInit *iface)
+{
+ return dhtml_edit_release(impl_from_IPersistStreamInit(iface));
+}
+
+static HRESULT WINAPI PersistStreamInit_GetClassID(IPersistStreamInit *iface, CLSID *clsid)
+{
+ DHTMLEditImpl *This = impl_from_IPersistStreamInit(iface);
+ FIXME("(%p)->(%p) stub\n", This, clsid);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI PersistStreamInit_IsDirty(IPersistStreamInit *iface)
+{
+ DHTMLEditImpl *This = impl_from_IPersistStreamInit(iface);
+ FIXME("(%p) stub\n", This);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI PersistStreamInit_Load(IPersistStreamInit *iface, IStream *stream)
+{
+ DHTMLEditImpl *This = impl_from_IPersistStreamInit(iface);
+ FIXME("(%p)->(%p) stub\n", This, stream);
+ return S_OK;
+}
+
+static HRESULT WINAPI PersistStreamInit_Save(IPersistStreamInit *iface, IStream *stream, BOOL clear_dirty)
+{
+ DHTMLEditImpl *This = impl_from_IPersistStreamInit(iface);
+ FIXME("(%p)->(%p, %u) stub\n", This, stream, clear_dirty);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI PersistStreamInit_GetSizeMax(IPersistStreamInit *iface, ULARGE_INTEGER *value)
+{
+ DHTMLEditImpl *This = impl_from_IPersistStreamInit(iface);
+ FIXME("(%p)->(%p) stub\n", This, value);
+ value->QuadPart = 0;
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI PersistStreamInit_InitNew(IPersistStreamInit *iface)
+{
+ DHTMLEditImpl *This = impl_from_IPersistStreamInit(iface);
+ FIXME("(%p) stub\n", This);
+ return E_NOTIMPL;
+}
+
+static const IPersistStreamInitVtbl PersistStreamInitVtbl = {
+ PersistStreamInit_QueryInterface,
+ PersistStreamInit_AddRef,
+ PersistStreamInit_Release,
+ PersistStreamInit_GetClassID,
+ PersistStreamInit_IsDirty,
+ PersistStreamInit_Load,
+ PersistStreamInit_Save,
+ PersistStreamInit_GetSizeMax,
+ PersistStreamInit_InitNew
+};
+
HRESULT dhtml_edit_create(REFIID iid, void **out)
{
DHTMLEditImpl *This;
@@ -778,6 +860,7 @@ HRESULT dhtml_edit_create(REFIID iid, void **out)
This->IDHTMLEdit_iface.lpVtbl = &DHTMLEditVtbl;
This->IOleObject_iface.lpVtbl = &OleObjectVtbl;
+ This->IPersistStreamInit_iface.lpVtbl = &PersistStreamInitVtbl;
This->client_site = NULL;
This->ref = 1;
--
2.16.1
More information about the wine-devel
mailing list