ReactOS 0.4.17-dev-1190-g4c812f4
ieframe.h
Go to the documentation of this file.
1/*
2 * Header includes for ieframe.dll
3 *
4 * Copyright 2011 Jacek Caban for CodeWeavers
5 *
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
10 *
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
15 *
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19 */
20
21#pragma once
22
23#include <stdarg.h>
24
25#define COBJMACROS
26
27#include "windef.h"
28#include "winbase.h"
29#include "wingdi.h"
30#include "winuser.h"
31#ifdef __REACTOS__
32#include <winnls.h>
33#include <wincon.h>
34#endif
35
36#include "ole2.h"
37#include "olectl.h"
38#include "shlobj.h"
39#include "mshtmhst.h"
40#include "exdisp.h"
41#include "hlink.h"
42#include "htiface.h"
43#include "shdeprecated.h"
44#include "docobjectservice.h"
45
46#include "wine/list.h"
47
49typedef struct DocHost DocHost;
50
51typedef struct {
53
57
60
61typedef struct {
67
71
72struct _task_header_t;
73
74typedef void (*task_proc_t)(DocHost*, struct _task_header_t*);
75typedef void (*task_destr_t)(struct _task_header_t*);
76
77typedef struct _task_header_t {
78 struct list entry;
82
83typedef struct {
87
89
92
93typedef struct {
97
98typedef struct {
102
103typedef struct {
107
109{
117
118struct DocHost {
128
129 /* Interfaces of InPlaceFrame object */
131
132 IWebBrowser2 *wb;
133
138
142
144
147
149
150 LPOLESTR url;
151
155
156 READYSTATE ready_state;
157 READYSTATE doc_state;
160
162 IShellUIHelper2 *shell_ui_helper;
163
164 struct {
166 unsigned size;
167 unsigned length;
168 unsigned position;
171
175};
176
179 IWebBrowser2 IWebBrowser2_iface;
193
195
197
202
206
208
209 /* window context */
210
215 OLEINPLACEFRAMEINFO frameinfo;
217
219
221
230
232};
233
236 IWebBrowser2 IWebBrowser2_iface;
240
243
249
250 struct list entry;
251};
252
257
259
260void DocHost_Init(DocHost*,IWebBrowser2*,const IDocHostContainerVtbl*);
266
269
272
275HRESULT create_shell_ui_helper(IShellUIHelper2**);
276
279
280void call_sink(ConnectionPoint*,DISPID,DISPPARAMS*);
290const WCHAR *error_url_frag(const WCHAR*);
292void set_doc_state(DocHost*,READYSTATE);
299
300#define WM_DOCHOSTTASK (WM_USER+0x300)
304
307void released_obj(void);
309
310void register_iewindow_class(void);
312
313#define TID_LIST \
314 XCLSID(WebBrowser) \
315 XCLSID(WebBrowser_V1) \
316 XIID(IWebBrowser2)
317
318typedef enum {
319#define XIID(iface) iface ## _tid,
320#define XCLSID(class) class ## _tid,
322#undef XIID
323#undef XCLSID
326
328
335
338
339extern LONG module_ref;
341
342static inline void lock_module(void) {
344}
345
346static inline void unlock_module(void) {
348}
349
351{
352 WCHAR *ret = CoTaskMemAlloc((lstrlenW(str) + 1)*sizeof(WCHAR));
353 if (ret)
354 lstrcpyW(ret, str);
355 return ret;
356}
357
359{
360 INT len;
361 WCHAR *ret;
362 len = MultiByteToWideChar(CP_ACP, 0, str, -1, NULL, 0);
363 ret = CoTaskMemAlloc(len*sizeof(WCHAR));
364 if (ret)
366 return ret;
367}
368
370{
371 INT len;
372 CHAR *ret;
373 len = WideCharToMultiByte(CP_ACP, 0, str, -1, NULL, 0, 0, 0);
375 if (ret)
376 WideCharToMultiByte(CP_ACP, 0, str, -1, ret, len, 0, 0);
377 return ret;
378}
379
381{
386
#define InterlockedIncrement
Definition: armddk.h:53
#define InterlockedDecrement
Definition: armddk.h:52
void(* task_proc_t)(BindProtocol *, task_header_t *)
Definition: bindprot.c:24
Definition: list.h:39
#define NULL
Definition: types.h:112
void *WINAPI CoTaskMemAlloc(SIZE_T size)
Definition: malloc.c:381
#define CP_ACP
Definition: compat.h:109
OLECHAR * BSTR
Definition: compat.h:2293
#define lstrcpyW
Definition: compat.h:749
#define WideCharToMultiByte
Definition: compat.h:111
short VARIANT_BOOL
Definition: compat.h:2290
#define MultiByteToWideChar
Definition: compat.h:110
#define lstrlenW
Definition: compat.h:750
return ret
Definition: mutex.c:147
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
GLenum GLsizei len
Definition: glext.h:6722
HRESULT dochost_object_available(DocHost *, IUnknown *)
Definition: dochost.c:304
HRESULT create_browser_service(DocHost *, ShellBrowser **)
Definition: shellbrowser.c:956
void InternetExplorer_WebBrowser_Init(InternetExplorer *)
Definition: ie.c:872
HRESULT get_location_url(DocHost *, BSTR *)
Definition: navigate.c:1181
void DocHost_ClientSite_Release(DocHost *)
Definition: client.c:722
LONG module_ref
Definition: ieframe_main.c:31
void DocHost_Init(DocHost *, IWebBrowser2 *, const IDocHostContainerVtbl *)
Definition: dochost.c:1137
void(* task_proc_t)(DocHost *, struct _task_header_t *)
Definition: ieframe.h:74
HRESULT WINAPI InternetExplorer_Create(IClassFactory *, IUnknown *, REFIID, void **)
Definition: iexplore.c:841
HRESULT WINAPI InternetShortcut_Create(IClassFactory *, IUnknown *, REFIID, void **)
Definition: intshcut.c:828
void register_iewindow_class(void)
Definition: iexplore.c:713
HRESULT create_shell_ui_helper(IShellUIHelper2 **)
void HlinkFrame_Init(HlinkFrame *, IUnknown *, DocHost *)
Definition: navigate.c:1733
void call_sink(ConnectionPoint *, DISPID, DISPPARAMS *)
Definition: events.c:390
void detach_browser_service(ShellBrowser *)
Definition: shellbrowser.c:975
HRESULT WINAPI CUrlHistory_Create(IClassFactory *, IUnknown *, REFIID, void **)
Definition: urlhist.c:126
static LPWSTR co_strdupAtoW(LPCSTR str)
Definition: ieframe.h:358
struct _task_header_t task_header_t
void WebBrowser_ClassInfo_Init(WebBrowser *)
Definition: classinfo.c:100
static void lock_module(void)
Definition: ieframe.h:342
tid_t
Definition: ieframe.h:318
@ LAST_tid
Definition: ieframe.h:324
void WebBrowser_OleObject_Destroy(WebBrowser *)
Definition: oleobject.c:1275
const WCHAR * error_url_frag(const WCHAR *)
Definition: shellbrowser.c:32
void DocHost_Frame_Init(DocHost *)
Definition: frame.c:182
void ConnectionPointContainer_Init(ConnectionPointContainer *, IUnknown *)
Definition: events.c:430
void WebBrowser_Persist_Init(WebBrowser *)
Definition: persist.c:285
IClassFactory InternetExplorerFactory
Definition: ieframe_main.c:262
void WebBrowser_ViewObject_Init(WebBrowser *)
Definition: view.c:253
SessionOp
Definition: ieframe.h:381
@ SESSION_DECREMENT
Definition: ieframe.h:384
@ SESSION_INCREMENT
Definition: ieframe.h:383
@ SESSION_QUERY
Definition: ieframe.h:382
void release_dochost_client(DocHost *)
Definition: dochost.c:632
void set_doc_state(DocHost *, READYSTATE)
Definition: dochost.c:234
void DocHost_Release(DocHost *)
Definition: dochost.c:1159
#define TID_LIST
Definition: ieframe.h:313
BOOL HlinkFrame_QI(HlinkFrame *, REFIID, void **)
Definition: navigate.c:1705
void abort_dochost_tasks(DocHost *, task_proc_t)
Definition: dochost.c:70
void released_obj(void)
Definition: iexplore.c:950
static void unlock_module(void)
Definition: ieframe.h:346
IClassFactory InternetExplorerManagerFactory
Definition: ieframe_main.c:272
HINSTANCE ieframe_instance
Definition: ieframe_main.c:32
HRESULT get_typeinfo(tid_t, ITypeInfo **)
Definition: ieframe_main.c:61
HRESULT update_ie_statustext(InternetExplorer *, LPCWSTR)
Definition: iexplore.c:63
void push_dochost_task(DocHost *, task_header_t *, task_proc_t, task_destr_t, BOOL)
Definition: dochost.c:39
void DocHost_ClientSite_Init(DocHost *)
Definition: client.c:712
void activate_document(DocHost *)
Definition: dochost.c:606
void create_doc_view_hwnd(DocHost *)
Definition: dochost.c:484
static LPSTR co_strdupWtoA(LPCWSTR str)
Definition: ieframe.h:369
DWORD release_extern_ref(InternetExplorer *, BOOL)
Definition: ie.c:756
HRESULT go_forward(DocHost *)
Definition: navigate.c:1171
void unregister_iewindow_class(void)
Definition: iexplore.c:735
HRESULT WINAPI WebBrowser_Create(IClassFactory *, IUnknown *, REFIID, void **)
Definition: webbrowser.c:1325
LONG WINAPI SetQueryNetSessionCount(DWORD session_op)
Definition: ieframe_main.c:295
void ConnectionPointContainer_Destroy(ConnectionPointContainer *)
Definition: events.c:441
void handle_navigation_error(DocHost *, HRESULT, BSTR, IHTMLWindow2 *)
Definition: navigate.c:313
void WebBrowser_OleObject_Init(WebBrowser *)
Definition: oleobject.c:1252
HRESULT go_home(DocHost *)
Definition: navigate.c:1104
HRESULT go_back(DocHost *)
Definition: navigate.c:1161
static LPWSTR co_strdupW(LPCWSTR str)
Definition: ieframe.h:350
void deactivate_document(DocHost *)
Definition: dochost.c:515
LRESULT process_dochost_tasks(DocHost *)
Definition: dochost.c:55
HRESULT WINAPI WebBrowserV1_Create(IClassFactory *, IUnknown *, REFIID, void **)
Definition: webbrowser.c:1320
void on_commandstate_change(DocHost *, LONG, BOOL)
Definition: dochost.c:83
HRESULT set_dochost_url(DocHost *, const WCHAR *)
Definition: navigate.c:132
void NewWindowManager_Init(DocHost *)
HRESULT WINAPI InternetExplorerManager_Create(IClassFactory *, IUnknown *, REFIID, void **)
Definition: iexplore.c:930
void IEHTMLWindow_Init(DocHost *)
Definition: iehtmlwnd.c:725
struct _IDocHostContainerVtbl IDocHostContainerVtbl
void notify_download_state(DocHost *, BOOL)
Definition: navigate.c:151
void(* task_destr_t)(struct _task_header_t *)
Definition: ieframe.h:75
void update_navigation_commands(DocHost *dochost)
Definition: dochost.c:106
HRESULT refresh_document(DocHost *, const VARIANT *)
Definition: dochost.c:577
HRESULT get_window(DocHost *, IHTMLWindow2 **)
Definition: iehtmlwnd.c:25
LONG_PTR LRESULT
Definition: minwindef.h:176
static const WCHAR * navigate_url
Definition: ie.c:64
static const CLSID *static CLSID *static const GUID VARIANT VARIANT *static IServiceProvider DWORD *static HMENU
Definition: ordinal.c:60
static VARIANTARG static DISPID
Definition: ordinal.c:49
interface IHTMLWindow2 IHTMLWindow2
Definition: mshtmhst.idl:64
#define BOOL
Definition: nt_native.h:43
short WCHAR
Definition: pedump.c:58
long LONG
Definition: pedump.c:60
char CHAR
Definition: pedump.c:57
#define REFIID
Definition: guiddef.h:118
const WCHAR * str
ConnectionPoint * pns
Definition: ieframe.h:56
ConnectionPoint * wbe2
Definition: ieframe.h:54
IConnectionPointContainer IConnectionPointContainer_iface
Definition: ieframe.h:52
ConnectionPoint * wbe
Definition: ieframe.h:55
IEHTMLWindow html_window
Definition: ieframe.h:173
IShellUIHelper2 * shell_ui_helper
Definition: ieframe.h:162
VARIANT_BOOL busy
Definition: ieframe.h:154
const IDocHostContainerVtbl * container_vtbl
Definition: ieframe.h:143
ConnectionPointContainer cps
Definition: ieframe.h:172
READYSTATE ready_state
Definition: ieframe.h:156
int loading_pos
Definition: ieframe.h:169
VARIANT_BOOL offline
Definition: ieframe.h:153
VARIANT_BOOL silent
Definition: ieframe.h:152
IUnknown * doc_navigate
Definition: ieframe.h:141
travellog_entry_t * log
Definition: ieframe.h:165
IWebBrowser2 * wb
Definition: ieframe.h:132
IOleInPlaceFrame IOleInPlaceFrame_iface
Definition: ieframe.h:130
IOleCommandTarget IOleCommandTarget_iface
Definition: ieframe.h:124
NewWindowManager nwm
Definition: ieframe.h:174
IDispatch IDispatch_iface
Definition: ieframe.h:125
BOOL is_prop_notif
Definition: ieframe.h:159
IOleClientSite IOleClientSite_iface
Definition: ieframe.h:119
READYSTATE doc_state
Definition: ieframe.h:157
IUnknown * document
Definition: ieframe.h:139
IDocHostUIHandler * hostui
Definition: ieframe.h:135
IPropertyNotifySink IPropertyNotifySink_iface
Definition: ieframe.h:126
IOleCommandTarget * olecmd
Definition: ieframe.h:137
unsigned position
Definition: ieframe.h:168
IServiceProvider IServiceProvider_iface
Definition: ieframe.h:127
unsigned length
Definition: ieframe.h:167
IOleInPlaceFrame * frame
Definition: ieframe.h:136
IOleInPlaceSiteEx IOleInPlaceSiteEx_iface
Definition: ieframe.h:120
IOleControlSite IOleControlSite_iface
Definition: ieframe.h:123
IOleDocumentSite IOleDocumentSite_iface
Definition: ieframe.h:122
IDocHostUIHandler2 IDocHostUIHandler2_iface
Definition: ieframe.h:121
IOleDocumentView * view
Definition: ieframe.h:140
IDispatch * client_disp
Definition: ieframe.h:134
LPOLESTR url
Definition: ieframe.h:150
HWND hwnd
Definition: ieframe.h:145
HWND frame_hwnd
Definition: ieframe.h:146
ShellBrowser * browser_service
Definition: ieframe.h:161
unsigned size
Definition: ieframe.h:166
struct DocHost::@534 travellog
struct list task_queue
Definition: ieframe.h:148
DWORD prop_notif_cookie
Definition: ieframe.h:158
ITargetFrame2 ITargetFrame2_iface
Definition: ieframe.h:64
IUnknown * outer
Definition: ieframe.h:68
DocHost * doc_host
Definition: ieframe.h:69
IWebBrowserPriv2IE9 IWebBrowserPriv2IE9_iface
Definition: ieframe.h:66
ITargetFrame ITargetFrame_iface
Definition: ieframe.h:63
IHlinkFrame IHlinkFrame_iface
Definition: ieframe.h:62
ITargetFramePriv2 ITargetFramePriv2_iface
Definition: ieframe.h:65
DocHost * doc_host
Definition: ieframe.h:95
IHTMLWindow2 IHTMLWindow2_iface
Definition: ieframe.h:94
IServiceProvider IServiceProvider_iface
Definition: ieframe.h:238
HWND toolbar_hwnd
Definition: ieframe.h:246
DocHost doc_host
Definition: ieframe.h:235
struct list entry
Definition: ieframe.h:250
HWND status_hwnd
Definition: ieframe.h:245
HlinkFrame hlink_frame
Definition: ieframe.h:239
IWebBrowser2 IWebBrowser2_iface
Definition: ieframe.h:236
IExternalConnection IExternalConnection_iface
Definition: ieframe.h:237
INewWindowManager INewWindowManager_iface
Definition: ieframe.h:99
DocHost * doc_host
Definition: ieframe.h:100
Definition: dcommon.idl:28
LONG ref
Definition: ieframe.h:88
IDocObjectService IDocObjectService_iface
Definition: ieframe.h:86
DocHost * doc_host
Definition: ieframe.h:90
IShellBrowser IShellBrowser_iface
Definition: ieframe.h:84
IBrowserService IBrowserService_iface
Definition: ieframe.h:85
IViewObject2 IViewObject2_iface
Definition: ieframe.h:187
VARIANT_BOOL tool_bar
Definition: ieframe.h:227
IUnknown IUnknown_inner
Definition: ieframe.h:178
VARIANT_BOOL register_browser
Definition: ieframe.h:222
IOleObject IOleObject_iface
Definition: ieframe.h:180
OLEINPLACEFRAMEINFO frameinfo
Definition: ieframe.h:215
VARIANT_BOOL status_bar
Definition: ieframe.h:226
IOleInPlaceUIWindow * uiwindow
Definition: ieframe.h:212
IWebBrowser2 IWebBrowser2_iface
Definition: ieframe.h:179
LONG ref
Definition: ieframe.h:194
IOleContainer * container
Definition: ieframe.h:200
HWND frame_hwnd
Definition: ieframe.h:211
INT version
Definition: ieframe.h:196
VARIANT_BOOL theater_mode
Definition: ieframe.h:229
IOleClientSite * client_closed
Definition: ieframe.h:199
HlinkFrame hlink_frame
Definition: ieframe.h:192
DocHost doc_host
Definition: ieframe.h:231
IPersistStreamInit IPersistStreamInit_iface
Definition: ieframe.h:185
IServiceProvider IServiceProvider_iface
Definition: ieframe.h:190
IOleCommandTarget IOleCommandTarget_iface
Definition: ieframe.h:189
IOleAdviseHolder * advise_holder
Definition: ieframe.h:207
SIZEL extent
Definition: ieframe.h:216
HWND shell_embedding_hwnd
Definition: ieframe.h:220
BOOL ui_activated
Definition: ieframe.h:218
IOleClientSite * client
Definition: ieframe.h:198
IPersistStorage IPersistStorage_iface
Definition: ieframe.h:183
VARIANT_BOOL visible
Definition: ieframe.h:223
RECT pos_rect
Definition: ieframe.h:213
DWORD sink_aspects
Definition: ieframe.h:204
IDataObject IDataObject_iface
Definition: ieframe.h:191
VARIANT_BOOL menu_bar
Definition: ieframe.h:224
IOleInPlaceActiveObject IOleInPlaceActiveObject_iface
Definition: ieframe.h:188
VARIANT_BOOL full_screen
Definition: ieframe.h:228
IProvideClassInfo2 IProvideClassInfo2_iface
Definition: ieframe.h:186
IOleControl IOleControl_iface
Definition: ieframe.h:182
IPersistMemory IPersistMemory_iface
Definition: ieframe.h:184
DWORD sink_flags
Definition: ieframe.h:205
IOleInPlaceSiteEx * inplace
Definition: ieframe.h:201
IAdviseSink * sink
Definition: ieframe.h:203
IOleInPlaceObject IOleInPlaceObject_iface
Definition: ieframe.h:181
VARIANT_BOOL address_bar
Definition: ieframe.h:225
RECT clip_rect
Definition: ieframe.h:214
void(* get_docobj_rect)(DocHost *, RECT *)
Definition: ieframe.h:112
HRESULT(* set_status_text)(DocHost *, const WCHAR *)
Definition: ieframe.h:113
void(* set_url)(DocHost *, const WCHAR *)
Definition: ieframe.h:115
ULONG(* release)(DocHost *)
Definition: ieframe.h:111
void(* on_command_state_change)(DocHost *, LONG, BOOL)
Definition: ieframe.h:114
ULONG(* addref)(DocHost *)
Definition: ieframe.h:110
task_proc_t proc
Definition: ieframe.h:79
struct list entry
Definition: ieframe.h:78
task_destr_t destr
Definition: ieframe.h:80
Definition: ieframe.h:103
WCHAR * url
Definition: ieframe.h:104
IStream * stream
Definition: ieframe.h:105
const char * LPCSTR
Definition: typedefs.h:52
const uint16_t * LPCWSTR
Definition: typedefs.h:57
uint16_t * LPWSTR
Definition: typedefs.h:56
char * LPSTR
Definition: typedefs.h:51
int32_t INT
Definition: typedefs.h:58
uint32_t ULONG
Definition: typedefs.h:59
#define HRESULT
Definition: msvc.h:7
#define WINAPI
Definition: msvc.h:6