2 * RichEdit GUIDs and OLE interface
4 * Copyright 2004 by Krzysztof Foltman
5 * Copyright 2004 Aric Stewart
7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either
10 * version 2.1 of the License, or (at your option) any later version.
12 * This library is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Lesser General Public License for more details.
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with this library; if not, write to the Free Software
19 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
24 #define NONAMELESSUNION
25 #define NONAMELESSSTRUCT
34 #include "wine/debug.h"
36 WINE_DEFAULT_DEBUG_CHANNEL(richedit
);
38 typedef struct IRichEditOleImpl
{
39 const IRichEditOleVtbl
*lpVtbl
;
43 /* there is no way to be consistent across different sets of headers - mingw, Wine, Win32 SDK*/
45 /* FIXME: the next 6 lines should be in textserv.h */
46 #define TEXTSERV_GUID(name, l, w1, w2, b1, b2) \
47 GUID name = { l, w1, w2, {b1, b2, 0x00, 0xaa, 0x00, 0x6c, 0xad, 0xc5}}
49 TEXTSERV_GUID(IID_ITextServices
, 0x8d33f740, 0xcf58, 0x11ce, 0xa8, 0x9d);
50 TEXTSERV_GUID(IID_ITextHost
, 0xc5bdd8d0, 0xd26e, 0x11ce, 0xa8, 0x9e);
51 TEXTSERV_GUID(IID_ITextHost2
, 0xc5bdd8d0, 0xd26e, 0x11ce, 0xa8, 0x9e);
54 IRichEditOle_fnQueryInterface(IRichEditOle
*me
, REFIID riid
, LPVOID
*ppvObj
)
56 IRichEditOleImpl
*This
= (IRichEditOleImpl
*)me
;
58 TRACE("%p %s\n", This
, debugstr_guid(riid
) );
60 if (IsEqualGUID(riid
, &IID_IUnknown
) ||
61 IsEqualGUID(riid
, &IID_IRichEditOle
))
63 IRichEditOle_AddRef(me
);
64 *ppvObj
= (LPVOID
) This
;
67 FIXME("%p: unhandled interface %s\n", This
, debugstr_guid(riid
) );
73 IRichEditOle_fnAddRef(IRichEditOle
*me
)
75 IRichEditOleImpl
*This
= (IRichEditOleImpl
*)me
;
76 ULONG ref
= InterlockedIncrement( &This
->ref
);
78 TRACE("%p ref = %lu\n", This
, ref
);
84 IRichEditOle_fnRelease(IRichEditOle
*me
)
86 IRichEditOleImpl
*This
= (IRichEditOleImpl
*)me
;
87 ULONG ref
= InterlockedDecrement(&This
->ref
);
89 TRACE ("%p ref=%lu\n", This
, ref
);
93 TRACE ("Destroying %p\n", This
);
94 HeapFree(GetProcessHeap(),0,This
);
100 IRichEditOle_fnActivateAs(IRichEditOle
*me
, REFCLSID rclsid
, REFCLSID rclsidAs
)
102 IRichEditOleImpl
*This
= (IRichEditOleImpl
*)me
;
103 FIXME("stub %p\n",This
);
107 static HRESULT WINAPI
108 IRichEditOle_fnContextSensitiveHelp(IRichEditOle
*me
, BOOL fEnterMode
)
110 IRichEditOleImpl
*This
= (IRichEditOleImpl
*)me
;
111 FIXME("stub %p\n",This
);
115 static HRESULT WINAPI
116 IRichEditOle_fnConvertObject(IRichEditOle
*me
, LONG iob
,
117 REFCLSID rclsidNew
, LPCSTR lpstrUserTypeNew
)
119 IRichEditOleImpl
*This
= (IRichEditOleImpl
*)me
;
120 FIXME("stub %p\n",This
);
124 static HRESULT WINAPI
125 IRichEditOle_fnGetClientSite(IRichEditOle
*me
,
126 LPOLECLIENTSITE
*lplpolesite
)
128 IRichEditOleImpl
*This
= (IRichEditOleImpl
*)me
;
129 FIXME("stub %p\n",This
);
133 static HRESULT WINAPI
134 IRichEditOle_fnGetClipboardData(IRichEditOle
*me
, CHARRANGE
*lpchrg
,
135 DWORD reco
, LPDATAOBJECT
*lplpdataobj
)
137 IRichEditOleImpl
*This
= (IRichEditOleImpl
*)me
;
138 FIXME("stub %p\n",This
);
142 static LONG WINAPI
IRichEditOle_fnGetLinkCount(IRichEditOle
*me
)
144 IRichEditOleImpl
*This
= (IRichEditOleImpl
*)me
;
145 FIXME("stub %p\n",This
);
149 static HRESULT WINAPI
150 IRichEditOle_fnGetObject(IRichEditOle
*me
, LONG iob
,
151 REOBJECT
*lpreobject
, DWORD dwFlags
)
153 IRichEditOleImpl
*This
= (IRichEditOleImpl
*)me
;
154 FIXME("stub %p\n",This
);
159 IRichEditOle_fnGetObjectCount(IRichEditOle
*me
)
161 IRichEditOleImpl
*This
= (IRichEditOleImpl
*)me
;
162 FIXME("stub %p\n",This
);
166 static HRESULT WINAPI
167 IRichEditOle_fnHandsOffStorage(IRichEditOle
*me
, LONG iob
)
169 IRichEditOleImpl
*This
= (IRichEditOleImpl
*)me
;
170 FIXME("stub %p\n",This
);
174 static HRESULT WINAPI
175 IRichEditOle_fnImportDataObject(IRichEditOle
*me
, LPDATAOBJECT lpdataobj
,
176 CLIPFORMAT cf
, HGLOBAL hMetaPict
)
178 IRichEditOleImpl
*This
= (IRichEditOleImpl
*)me
;
179 FIXME("stub %p\n",This
);
183 static HRESULT WINAPI
184 IRichEditOle_fnInPlaceDeactivate(IRichEditOle
*me
)
186 IRichEditOleImpl
*This
= (IRichEditOleImpl
*)me
;
187 FIXME("stub %p\n",This
);
191 static HRESULT WINAPI
192 IRichEditOle_fnInsertObject(IRichEditOle
*me
, REOBJECT
*lpreobject
)
194 IRichEditOleImpl
*This
= (IRichEditOleImpl
*)me
;
195 FIXME("stub %p\n",This
);
199 static HRESULT WINAPI
IRichEditOle_fnSaveCompleted(IRichEditOle
*me
, LONG iob
,
202 IRichEditOleImpl
*This
= (IRichEditOleImpl
*)me
;
203 FIXME("stub %p\n",This
);
207 static HRESULT WINAPI
208 IRichEditOle_fnSetDvaspect(IRichEditOle
*me
, LONG iob
, DWORD dvaspect
)
210 IRichEditOleImpl
*This
= (IRichEditOleImpl
*)me
;
211 FIXME("stub %p\n",This
);
215 static HRESULT WINAPI
IRichEditOle_fnSetHostNames(IRichEditOle
*me
,
216 LPCSTR lpstrContainerApp
, LPCSTR lpstrContainerObj
)
218 IRichEditOleImpl
*This
= (IRichEditOleImpl
*)me
;
219 FIXME("stub %p %s %s\n",This
, lpstrContainerApp
, lpstrContainerObj
);
223 static HRESULT WINAPI
224 IRichEditOle_fnSetLinkAvailable(IRichEditOle
*me
, LONG iob
, BOOL fAvailable
)
226 IRichEditOleImpl
*This
= (IRichEditOleImpl
*)me
;
227 FIXME("stub %p\n",This
);
231 static const IRichEditOleVtbl revt
= {
232 IRichEditOle_fnQueryInterface
,
233 IRichEditOle_fnAddRef
,
234 IRichEditOle_fnRelease
,
235 IRichEditOle_fnGetClientSite
,
236 IRichEditOle_fnGetObjectCount
,
237 IRichEditOle_fnGetLinkCount
,
238 IRichEditOle_fnGetObject
,
239 IRichEditOle_fnInsertObject
,
240 IRichEditOle_fnConvertObject
,
241 IRichEditOle_fnActivateAs
,
242 IRichEditOle_fnSetHostNames
,
243 IRichEditOle_fnSetLinkAvailable
,
244 IRichEditOle_fnSetDvaspect
,
245 IRichEditOle_fnHandsOffStorage
,
246 IRichEditOle_fnSaveCompleted
,
247 IRichEditOle_fnInPlaceDeactivate
,
248 IRichEditOle_fnContextSensitiveHelp
,
249 IRichEditOle_fnGetClipboardData
,
250 IRichEditOle_fnImportDataObject
253 LRESULT
CreateIRichEditOle(LPVOID
*ppObj
)
255 IRichEditOleImpl
*reo
;
257 reo
= HeapAlloc(GetProcessHeap(), 0, sizeof(IRichEditOleImpl
));
263 TRACE("Created %p\n",reo
);
264 *ppObj
= (LPVOID
) reo
;