2 * Copyright 2010 Jacek 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
31 #include "mshtml_private.h"
32 #include "pluginhost.h"
34 #include "wine/debug.h"
35 #include "wine/unicode.h"
37 WINE_DEFAULT_DEBUG_CHANNEL(mshtml);
40 IOleInPlaceFrame IOleInPlaceFrame_iface;
44 static inline InPlaceFrame *impl_from_IOleInPlaceFrame(IOleInPlaceFrame *iface)
46 return CONTAINING_RECORD(iface, InPlaceFrame, IOleInPlaceFrame_iface);
49 static HRESULT WINAPI InPlaceFrame_QueryInterface(IOleInPlaceFrame *iface,
50 REFIID riid, void **ppv)
52 InPlaceFrame *This = impl_from_IOleInPlaceFrame(iface);
54 if(IsEqualGUID(&IID_IUnknown, riid)) {
55 TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
56 *ppv = &This->IOleInPlaceFrame_iface;
57 }else if(IsEqualGUID(&IID_IOleWindow, riid)) {
58 TRACE("(%p)->(IID_IOleWindow %p)\n", This, ppv);
59 *ppv = &This->IOleInPlaceFrame_iface;
60 }else if(IsEqualGUID(&IID_IOleInPlaceUIWindow, riid)) {
61 TRACE("(%p)->(IID_IOleInPlaceUIWindow %p)\n", This, ppv);
62 *ppv = &This->IOleInPlaceFrame_iface;
63 }else if(IsEqualGUID(&IID_IOleInPlaceFrame, riid)) {
64 TRACE("(%p)->(IID_IOleInPlaceFrame %p)\n", This, ppv);
65 *ppv = &This->IOleInPlaceFrame_iface;
67 WARN("Unsopported interface %s\n", debugstr_guid(riid));
72 IUnknown_AddRef((IUnknown*)*ppv);
76 static ULONG WINAPI InPlaceFrame_AddRef(IOleInPlaceFrame *iface)
78 InPlaceFrame *This = impl_from_IOleInPlaceFrame(iface);
79 LONG ref = InterlockedIncrement(&This->ref);
81 TRACE("(%p) ref=%d\n", This, ref);
86 static ULONG WINAPI InPlaceFrame_Release(IOleInPlaceFrame *iface)
88 InPlaceFrame *This = impl_from_IOleInPlaceFrame(iface);
89 LONG ref = InterlockedDecrement(&This->ref);
91 TRACE("(%p) ref=%d\n", This, ref);
99 static HRESULT WINAPI InPlaceFrame_GetWindow(IOleInPlaceFrame *iface, HWND *phwnd)
101 InPlaceFrame *This = impl_from_IOleInPlaceFrame(iface);
102 FIXME("(%p)->(%p)\n", This, phwnd);
106 static HRESULT WINAPI InPlaceFrame_ContextSensitiveHelp(IOleInPlaceFrame *iface,
109 InPlaceFrame *This = impl_from_IOleInPlaceFrame(iface);
110 FIXME("(%p)->(%x)\n", This, fEnterMode);
114 static HRESULT WINAPI InPlaceFrame_GetBorder(IOleInPlaceFrame *iface, LPRECT lprectBorder)
116 InPlaceFrame *This = impl_from_IOleInPlaceFrame(iface);
117 FIXME("(%p)->(%p)\n", This, lprectBorder);
121 static HRESULT WINAPI InPlaceFrame_RequestBorderSpace(IOleInPlaceFrame *iface,
122 LPCBORDERWIDTHS pborderwidths)
124 InPlaceFrame *This = impl_from_IOleInPlaceFrame(iface);
125 FIXME("(%p)->(%p)\n", This, pborderwidths);
129 static HRESULT WINAPI InPlaceFrame_SetBorderSpace(IOleInPlaceFrame *iface,
130 LPCBORDERWIDTHS pborderwidths)
132 InPlaceFrame *This = impl_from_IOleInPlaceFrame(iface);
133 FIXME("(%p)->(%p)\n", This, pborderwidths);
137 static HRESULT WINAPI InPlaceFrame_SetActiveObject(IOleInPlaceFrame *iface,
138 IOleInPlaceActiveObject *pActiveObject, LPCOLESTR pszObjName)
140 InPlaceFrame *This = impl_from_IOleInPlaceFrame(iface);
141 FIXME("(%p)->(%p %s)\n", This, pActiveObject, debugstr_w(pszObjName));
145 static HRESULT WINAPI InPlaceFrame_InsertMenus(IOleInPlaceFrame *iface, HMENU hmenuShared,
146 LPOLEMENUGROUPWIDTHS lpMenuWidths)
148 InPlaceFrame *This = impl_from_IOleInPlaceFrame(iface);
149 FIXME("(%p)->(%p %p)\n", This, hmenuShared, lpMenuWidths);
153 static HRESULT WINAPI InPlaceFrame_SetMenu(IOleInPlaceFrame *iface, HMENU hmenuShared,
154 HOLEMENU holemenu, HWND hwndActiveObject)
156 InPlaceFrame *This = impl_from_IOleInPlaceFrame(iface);
157 FIXME("(%p)->(%p %p %p)\n", This, hmenuShared, holemenu, hwndActiveObject);
161 static HRESULT WINAPI InPlaceFrame_RemoveMenus(IOleInPlaceFrame *iface, HMENU hmenuShared)
163 InPlaceFrame *This = impl_from_IOleInPlaceFrame(iface);
164 FIXME("(%p)->(%p)\n", This, hmenuShared);
168 static HRESULT WINAPI InPlaceFrame_SetStatusText(IOleInPlaceFrame *iface,
169 LPCOLESTR pszStatusText)
171 InPlaceFrame *This = impl_from_IOleInPlaceFrame(iface);
172 FIXME("(%p)->(%s)\n", This, debugstr_w(pszStatusText));
176 static HRESULT WINAPI InPlaceFrame_EnableModeless(IOleInPlaceFrame *iface, BOOL fEnable)
178 InPlaceFrame *This = impl_from_IOleInPlaceFrame(iface);
179 FIXME("(%p)->(%x)\n", This, fEnable);
183 static HRESULT WINAPI InPlaceFrame_TranslateAccelerator(IOleInPlaceFrame *iface, LPMSG lpmsg,
186 InPlaceFrame *This = impl_from_IOleInPlaceFrame(iface);
187 FIXME("(%p)->(%p %d)\n", This, lpmsg, wID);
191 #undef impl_from_IOleInPlaceFrame
193 static const IOleInPlaceFrameVtbl OleInPlaceFrameVtbl = {
194 InPlaceFrame_QueryInterface,
196 InPlaceFrame_Release,
197 InPlaceFrame_GetWindow,
198 InPlaceFrame_ContextSensitiveHelp,
199 InPlaceFrame_GetBorder,
200 InPlaceFrame_RequestBorderSpace,
201 InPlaceFrame_SetBorderSpace,
202 InPlaceFrame_SetActiveObject,
203 InPlaceFrame_InsertMenus,
204 InPlaceFrame_SetMenu,
205 InPlaceFrame_RemoveMenus,
206 InPlaceFrame_SetStatusText,
207 InPlaceFrame_EnableModeless,
208 InPlaceFrame_TranslateAccelerator
211 HRESULT create_ip_frame(IOleInPlaceFrame **ret)
215 frame = heap_alloc_zero(sizeof(*frame));
217 return E_OUTOFMEMORY;
219 frame->IOleInPlaceFrame_iface.lpVtbl = &OleInPlaceFrameVtbl;
222 *ret = &frame->IOleInPlaceFrame_iface;
227 IOleInPlaceUIWindow IOleInPlaceUIWindow_iface;
231 static inline InPlaceUIWindow *impl_from_IOleInPlaceUIWindow(IOleInPlaceUIWindow *iface)
233 return CONTAINING_RECORD(iface, InPlaceUIWindow, IOleInPlaceUIWindow_iface);
236 static HRESULT WINAPI InPlaceUIWindow_QueryInterface(IOleInPlaceUIWindow *iface, REFIID riid, void **ppv)
238 InPlaceUIWindow *This = impl_from_IOleInPlaceUIWindow(iface);
240 if(IsEqualGUID(&IID_IUnknown, riid)) {
241 TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
242 *ppv = &This->IOleInPlaceUIWindow_iface;
243 }else if(IsEqualGUID(&IID_IOleWindow, riid)) {
244 TRACE("(%p)->(IID_IOleWindow %p)\n", This, ppv);
245 *ppv = &This->IOleInPlaceUIWindow_iface;
246 }else if(IsEqualGUID(&IID_IOleInPlaceUIWindow, riid)) {
247 TRACE("(%p)->(IID_IOleInPlaceUIWindow %p)\n", This, ppv);
248 *ppv = &This->IOleInPlaceUIWindow_iface;
250 WARN("Unsopported interface %s\n", debugstr_guid(riid));
252 return E_NOINTERFACE;
255 IUnknown_AddRef((IUnknown*)*ppv);
259 static ULONG WINAPI InPlaceUIWindow_AddRef(IOleInPlaceUIWindow *iface)
261 InPlaceUIWindow *This = impl_from_IOleInPlaceUIWindow(iface);
262 LONG ref = InterlockedIncrement(&This->ref);
264 TRACE("(%p) ref=%d\n", This, ref);
269 static ULONG WINAPI InPlaceUIWindow_Release(IOleInPlaceUIWindow *iface)
271 InPlaceUIWindow *This = impl_from_IOleInPlaceUIWindow(iface);
272 LONG ref = InterlockedDecrement(&This->ref);
274 TRACE("(%p) ref=%d\n", This, ref);
282 static HRESULT WINAPI InPlaceUIWindow_GetWindow(IOleInPlaceUIWindow *iface, HWND *phwnd)
284 InPlaceUIWindow *This = impl_from_IOleInPlaceUIWindow(iface);
285 FIXME("(%p)->(%p)\n", This, phwnd);
289 static HRESULT WINAPI InPlaceUIWindow_ContextSensitiveHelp(IOleInPlaceUIWindow *iface,
292 InPlaceUIWindow *This = impl_from_IOleInPlaceUIWindow(iface);
293 FIXME("(%p)->(%x)\n", This, fEnterMode);
297 static HRESULT WINAPI InPlaceUIWindow_GetBorder(IOleInPlaceUIWindow *iface, LPRECT lprectBorder)
299 InPlaceUIWindow *This = impl_from_IOleInPlaceUIWindow(iface);
300 FIXME("(%p)->(%p)\n", This, lprectBorder);
304 static HRESULT WINAPI InPlaceUIWindow_RequestBorderSpace(IOleInPlaceUIWindow *iface,
305 LPCBORDERWIDTHS pborderwidths)
307 InPlaceUIWindow *This = impl_from_IOleInPlaceUIWindow(iface);
308 FIXME("(%p)->(%p)\n", This, pborderwidths);
312 static HRESULT WINAPI InPlaceUIWindow_SetBorderSpace(IOleInPlaceUIWindow *iface,
313 LPCBORDERWIDTHS pborderwidths)
315 InPlaceUIWindow *This = impl_from_IOleInPlaceUIWindow(iface);
316 FIXME("(%p)->(%p)\n", This, pborderwidths);
320 static HRESULT WINAPI InPlaceUIWindow_SetActiveObject(IOleInPlaceUIWindow *iface,
321 IOleInPlaceActiveObject *pActiveObject, LPCOLESTR pszObjName)
323 InPlaceUIWindow *This = impl_from_IOleInPlaceUIWindow(iface);
324 FIXME("(%p)->(%p %s)\n", This, pActiveObject, debugstr_w(pszObjName));
328 static const IOleInPlaceUIWindowVtbl OleInPlaceUIWindowVtbl = {
329 InPlaceUIWindow_QueryInterface,
330 InPlaceUIWindow_AddRef,
331 InPlaceUIWindow_Release,
332 InPlaceUIWindow_GetWindow,
333 InPlaceUIWindow_ContextSensitiveHelp,
334 InPlaceUIWindow_GetBorder,
335 InPlaceUIWindow_RequestBorderSpace,
336 InPlaceUIWindow_SetBorderSpace,
337 InPlaceUIWindow_SetActiveObject,
340 HRESULT create_ip_window(IOleInPlaceUIWindow **ret)
342 InPlaceUIWindow *uiwindow;
344 uiwindow = heap_alloc_zero(sizeof(*uiwindow));
346 return E_OUTOFMEMORY;
348 uiwindow->IOleInPlaceUIWindow_iface.lpVtbl = &OleInPlaceUIWindowVtbl;
351 *ret = &uiwindow->IOleInPlaceUIWindow_iface;