Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
4acbae4d
Commit
4acbae4d
authored
Jul 27, 2011
by
Jacek Caban
Committed by
Alexandre Julliard
Jul 27, 2011
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ieframe: Moved WebBrowser and InternetExplorer objects implementations to ieframe.
parent
d134e752
Hide whitespace changes
Inline
Side-by-side
Showing
23 changed files
with
488 additions
and
606 deletions
+488
-606
Makefile.in
dlls/ieframe/Makefile.in
+15
-2
classinfo.c
dlls/ieframe/classinfo.c
+1
-5
client.c
dlls/ieframe/client.c
+4
-2
dochost.c
dlls/ieframe/dochost.c
+6
-5
events.c
dlls/ieframe/events.c
+3
-1
frame.c
dlls/ieframe/frame.c
+2
-1
ie.c
dlls/ieframe/ie.c
+2
-1
ieframe.h
dlls/ieframe/ieframe.h
+237
-0
ieframe.spec
dlls/ieframe/ieframe.spec
+3
-0
ieframe_main.c
dlls/ieframe/ieframe_main.c
+124
-1
iexplore.c
dlls/ieframe/iexplore.c
+26
-29
navigate.c
dlls/ieframe/navigate.c
+5
-4
oleobject.c
dlls/ieframe/oleobject.c
+7
-4
persist.c
dlls/ieframe/persist.c
+2
-1
shellbrowser.c
dlls/ieframe/shellbrowser.c
+4
-2
view.c
dlls/ieframe/view.c
+2
-1
webbrowser.c
dlls/ieframe/webbrowser.c
+12
-10
Makefile.in
dlls/shdocvw/Makefile.in
+3
-16
factory.c
dlls/shdocvw/factory.c
+29
-128
resource.h
dlls/shdocvw/resource.h
+0
-59
shdocvw.h
dlls/shdocvw/shdocvw.h
+0
-279
shdocvw.rc
dlls/shdocvw/shdocvw.rc
+1
-1
shdocvw_main.c
dlls/shdocvw/shdocvw_main.c
+0
-54
No files found.
dlls/ieframe/Makefile.in
View file @
4acbae4d
MODULE
=
ieframe.dll
IMPORTLIB
=
ieframe
IMPORTS
=
uuid urlmon shell32
ole
32 advapi32
IMPORTS
=
uuid urlmon shell32
comctl32 shlwapi oleaut32 ole32 user32 gdi
32 advapi32
C_SRCS
=
\
classinfo.c
\
client.c
\
dochost.c
\
events.c
\
frame.c
\
ie.c
\
ieframe_main.c
\
iexplore.c
\
intshcut.c
\
navigate.c
\
oleobject.c
\
persist.c
\
shellbrowser.c
\
taskbarlist.c
\
urlhist.c
urlhist.c
\
view.c
\
webbrowser.c
RC_SRCS
=
\
De.rc
\
...
...
dlls/
shdocvw
/classinfo.c
→
dlls/
ieframe
/classinfo.c
View file @
4acbae4d
...
...
@@ -18,12 +18,8 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include <stdarg.h>
#include <string.h>
#include "ieframe.h"
#include "windef.h"
#include "winbase.h"
#include "shdocvw.h"
#include "wine/debug.h"
WINE_DEFAULT_DEBUG_CHANNEL
(
shdocvw
);
...
...
dlls/
shdocvw
/client.c
→
dlls/
ieframe
/client.c
View file @
4acbae4d
...
...
@@ -18,11 +18,13 @@
#include <stdio.h>
#include "
wine/debug
.h"
#include "shdocvw.h"
#include "
ieframe
.h"
#include "mshtmdid.h"
#include "idispids.h"
#include "wine/debug.h"
WINE_DEFAULT_DEBUG_CHANNEL
(
shdocvw
);
static
inline
DocHost
*
impl_from_IOleClientSite
(
IOleClientSite
*
iface
)
...
...
dlls/
shdocvw
/dochost.c
→
dlls/
ieframe
/dochost.c
View file @
4acbae4d
...
...
@@ -16,13 +16,14 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include "wine/debug.h"
#include "shdocvw.h"
#include "hlink.h"
#include "ieframe.h"
#include "exdispid.h"
#include "mshtml.h"
#include "initguid.h"
#include "wine/debug.h"
WINE_DEFAULT_DEBUG_CHANNEL
(
shdocvw
);
DEFINE_OLEGUID
(
CGID_DocHostCmdPriv
,
0x000214D4L
,
0
,
0
);
...
...
@@ -340,7 +341,7 @@ void create_doc_view_hwnd(DocHost *This)
NULL
};
wndclass
.
hInstance
=
shdocvw_h
instance
;
wndclass
.
hInstance
=
ieframe_
instance
;
doc_view_atom
=
RegisterClassExW
(
&
wndclass
);
}
...
...
@@ -350,7 +351,7 @@ void create_doc_view_hwnd(DocHost *This)
wszShell_DocObject_View
,
WS_CHILD
|
WS_VISIBLE
|
WS_CLIPSIBLINGS
|
WS_CLIPCHILDREN
|
WS_TABSTOP
,
rect
.
left
,
rect
.
top
,
rect
.
right
,
rect
.
bottom
,
This
->
frame_hwnd
,
NULL
,
shdocvw_h
instance
,
This
);
NULL
,
ieframe_
instance
,
This
);
}
void
deactivate_document
(
DocHost
*
This
)
...
...
dlls/
shdocvw
/events.c
→
dlls/
ieframe
/events.c
View file @
4acbae4d
...
...
@@ -23,8 +23,10 @@
*/
#include <string.h>
#include "ieframe.h"
#include "wine/debug.h"
#include "shdocvw.h"
WINE_DEFAULT_DEBUG_CHANNEL
(
shdocvw
);
...
...
dlls/
shdocvw
/frame.c
→
dlls/
ieframe
/frame.c
View file @
4acbae4d
...
...
@@ -16,8 +16,9 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include "ieframe.h"
#include "wine/debug.h"
#include "shdocvw.h"
WINE_DEFAULT_DEBUG_CHANNEL
(
shdocvw
);
...
...
dlls/
shdocvw
/ie.c
→
dlls/
ieframe
/ie.c
View file @
4acbae4d
...
...
@@ -16,8 +16,9 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include "ieframe.h"
#include "wine/debug.h"
#include "shdocvw.h"
WINE_DEFAULT_DEBUG_CHANNEL
(
shdocvw
);
...
...
dlls/ieframe/ieframe.h
View file @
4acbae4d
...
...
@@ -29,15 +29,231 @@
#include "winuser.h"
#include "ole2.h"
#include "olectl.h"
#include "shlobj.h"
#include "mshtmhst.h"
#include "exdisp.h"
#include "hlink.h"
#include "htiframe.h"
#include "wine/unicode.h"
#include "wine/list.h"
typedef
struct
ConnectionPoint
ConnectionPoint
;
typedef
struct
DocHost
DocHost
;
typedef
struct
{
IConnectionPointContainer
IConnectionPointContainer_iface
;
ConnectionPoint
*
wbe2
;
ConnectionPoint
*
wbe
;
ConnectionPoint
*
pns
;
IUnknown
*
impl
;
}
ConnectionPointContainer
;
typedef
struct
{
IHlinkFrame
IHlinkFrame_iface
;
ITargetFrame2
ITargetFrame2_iface
;
IUnknown
*
outer
;
DocHost
*
doc_host
;
}
HlinkFrame
;
struct
_task_header_t
;
typedef
void
(
*
task_proc_t
)(
DocHost
*
,
struct
_task_header_t
*
);
typedef
void
(
*
task_destr_t
)(
struct
_task_header_t
*
);
typedef
struct
_task_header_t
{
struct
list
entry
;
task_proc_t
proc
;
task_destr_t
destr
;
}
task_header_t
;
typedef
struct
_IDocHostContainerVtbl
{
ULONG
(
*
addref
)(
DocHost
*
);
ULONG
(
*
release
)(
DocHost
*
);
void
(
WINAPI
*
GetDocObjRect
)(
DocHost
*
,
RECT
*
);
HRESULT
(
WINAPI
*
SetStatusText
)(
DocHost
*
,
LPCWSTR
);
void
(
WINAPI
*
SetURL
)(
DocHost
*
,
LPCWSTR
);
HRESULT
(
*
exec
)(
DocHost
*
,
const
GUID
*
,
DWORD
,
DWORD
,
VARIANT
*
,
VARIANT
*
);
}
IDocHostContainerVtbl
;
struct
DocHost
{
IOleClientSite
IOleClientSite_iface
;
IOleInPlaceSiteEx
IOleInPlaceSiteEx_iface
;
IDocHostUIHandler2
IDocHostUIHandler2_iface
;
IOleDocumentSite
IOleDocumentSite_iface
;
IOleControlSite
IOleControlSite_iface
;
IOleCommandTarget
IOleCommandTarget_iface
;
IDispatch
IDispatch_iface
;
IPropertyNotifySink
IPropertyNotifySink_iface
;
IServiceProvider
IServiceProvider_iface
;
/* Interfaces of InPlaceFrame object */
IOleInPlaceFrame
IOleInPlaceFrame_iface
;
IDispatch
*
disp
;
IDispatch
*
client_disp
;
IDocHostUIHandler
*
hostui
;
IOleInPlaceFrame
*
frame
;
IUnknown
*
document
;
IOleDocumentView
*
view
;
IUnknown
*
doc_navigate
;
const
IDocHostContainerVtbl
*
container_vtbl
;
HWND
hwnd
;
HWND
frame_hwnd
;
struct
list
task_queue
;
LPOLESTR
url
;
VARIANT_BOOL
silent
;
VARIANT_BOOL
offline
;
VARIANT_BOOL
busy
;
READYSTATE
ready_state
;
READYSTATE
doc_state
;
DWORD
prop_notif_cookie
;
BOOL
is_prop_notif
;
ConnectionPointContainer
cps
;
};
struct
WebBrowser
{
IWebBrowser2
IWebBrowser2_iface
;
IOleObject
IOleObject_iface
;
IOleInPlaceObject
IOleInPlaceObject_iface
;
IOleControl
IOleControl_iface
;
IPersistStorage
IPersistStorage_iface
;
IPersistMemory
IPersistMemory_iface
;
IPersistStreamInit
IPersistStreamInit_iface
;
IProvideClassInfo2
IProvideClassInfo2_iface
;
IViewObject2
IViewObject2_iface
;
IOleInPlaceActiveObject
IOleInPlaceActiveObject_iface
;
IOleCommandTarget
IOleCommandTarget_iface
;
IServiceProvider
IServiceProvider_iface
;
IDataObject
IDataObject_iface
;
HlinkFrame
hlink_frame
;
LONG
ref
;
INT
version
;
IOleClientSite
*
client
;
IOleContainer
*
container
;
IOleInPlaceSiteEx
*
inplace
;
/* window context */
HWND
frame_hwnd
;
IOleInPlaceUIWindow
*
uiwindow
;
RECT
pos_rect
;
RECT
clip_rect
;
OLEINPLACEFRAMEINFO
frameinfo
;
SIZEL
extent
;
HWND
shell_embedding_hwnd
;
VARIANT_BOOL
register_browser
;
VARIANT_BOOL
visible
;
VARIANT_BOOL
menu_bar
;
VARIANT_BOOL
address_bar
;
VARIANT_BOOL
status_bar
;
VARIANT_BOOL
tool_bar
;
VARIANT_BOOL
full_screen
;
VARIANT_BOOL
theater_mode
;
DocHost
doc_host
;
};
typedef
struct
{
DocHost
doc_host
;
LONG
ref
;
InternetExplorer
*
ie
;
}
IEDocHost
;
struct
InternetExplorer
{
IWebBrowser2
IWebBrowser2_iface
;
HlinkFrame
hlink_frame
;
LONG
ref
;
HWND
frame_hwnd
;
HWND
status_hwnd
;
HMENU
menu
;
BOOL
nohome
;
struct
list
entry
;
IEDocHost
*
doc_host
;
};
void
WebBrowser_OleObject_Init
(
WebBrowser
*
)
DECLSPEC_HIDDEN
;
void
WebBrowser_ViewObject_Init
(
WebBrowser
*
)
DECLSPEC_HIDDEN
;
void
WebBrowser_Persist_Init
(
WebBrowser
*
)
DECLSPEC_HIDDEN
;
void
WebBrowser_ClassInfo_Init
(
WebBrowser
*
)
DECLSPEC_HIDDEN
;
void
WebBrowser_OleObject_Destroy
(
WebBrowser
*
)
DECLSPEC_HIDDEN
;
void
DocHost_Init
(
DocHost
*
,
IDispatch
*
,
const
IDocHostContainerVtbl
*
)
DECLSPEC_HIDDEN
;
void
DocHost_Release
(
DocHost
*
)
DECLSPEC_HIDDEN
;
void
DocHost_ClientSite_Init
(
DocHost
*
)
DECLSPEC_HIDDEN
;
void
DocHost_ClientSite_Release
(
DocHost
*
)
DECLSPEC_HIDDEN
;
void
DocHost_Frame_Init
(
DocHost
*
)
DECLSPEC_HIDDEN
;
void
release_dochost_client
(
DocHost
*
)
DECLSPEC_HIDDEN
;
void
HlinkFrame_Init
(
HlinkFrame
*
,
IUnknown
*
,
DocHost
*
)
DECLSPEC_HIDDEN
;
BOOL
HlinkFrame_QI
(
HlinkFrame
*
,
REFIID
,
void
**
)
DECLSPEC_HIDDEN
;
HRESULT
ShellBrowser_Create
(
IShellBrowser
**
)
DECLSPEC_HIDDEN
;
void
ConnectionPointContainer_Init
(
ConnectionPointContainer
*
,
IUnknown
*
)
DECLSPEC_HIDDEN
;
void
ConnectionPointContainer_Destroy
(
ConnectionPointContainer
*
)
DECLSPEC_HIDDEN
;
void
call_sink
(
ConnectionPoint
*
,
DISPID
,
DISPPARAMS
*
)
DECLSPEC_HIDDEN
;
HRESULT
navigate_url
(
DocHost
*
,
LPCWSTR
,
const
VARIANT
*
,
const
VARIANT
*
,
VARIANT
*
,
VARIANT
*
)
DECLSPEC_HIDDEN
;
HRESULT
go_home
(
DocHost
*
)
DECLSPEC_HIDDEN
;
HRESULT
get_location_url
(
DocHost
*
,
BSTR
*
)
DECLSPEC_HIDDEN
;
void
handle_navigation_error
(
DocHost
*
,
HRESULT
,
BSTR
,
IHTMLWindow2
*
)
DECLSPEC_HIDDEN
;
HRESULT
dochost_object_available
(
DocHost
*
,
IUnknown
*
)
DECLSPEC_HIDDEN
;
void
set_doc_state
(
DocHost
*
,
READYSTATE
)
DECLSPEC_HIDDEN
;
void
deactivate_document
(
DocHost
*
)
DECLSPEC_HIDDEN
;
void
create_doc_view_hwnd
(
DocHost
*
)
DECLSPEC_HIDDEN
;
#define WM_DOCHOSTTASK (WM_USER+0x300)
void
push_dochost_task
(
DocHost
*
,
task_header_t
*
,
task_proc_t
,
task_destr_t
,
BOOL
)
DECLSPEC_HIDDEN
;
void
abort_dochost_tasks
(
DocHost
*
,
task_proc_t
)
DECLSPEC_HIDDEN
;
LRESULT
process_dochost_tasks
(
DocHost
*
)
DECLSPEC_HIDDEN
;
void
InternetExplorer_WebBrowser_Init
(
InternetExplorer
*
)
DECLSPEC_HIDDEN
;
HRESULT
update_ie_statustext
(
InternetExplorer
*
,
LPCWSTR
)
DECLSPEC_HIDDEN
;
void
released_obj
(
void
)
DECLSPEC_HIDDEN
;
void
register_iewindow_class
(
void
)
DECLSPEC_HIDDEN
;
void
unregister_iewindow_class
(
void
)
DECLSPEC_HIDDEN
;
HRESULT
get_typeinfo
(
ITypeInfo
**
)
DECLSPEC_HIDDEN
;
HRESULT
register_class_object
(
BOOL
)
DECLSPEC_HIDDEN
;
HRESULT
WINAPI
CUrlHistory_Create
(
IClassFactory
*
,
IUnknown
*
,
REFIID
,
void
**
)
DECLSPEC_HIDDEN
;
HRESULT
WINAPI
InternetExplorer_Create
(
IClassFactory
*
,
IUnknown
*
,
REFIID
,
void
**
)
DECLSPEC_HIDDEN
;
HRESULT
WINAPI
InternetShortcut_Create
(
IClassFactory
*
,
IUnknown
*
,
REFIID
,
void
**
)
DECLSPEC_HIDDEN
;
HRESULT
WINAPI
TaskbarList_Create
(
IClassFactory
*
,
IUnknown
*
,
REFIID
,
void
**
)
DECLSPEC_HIDDEN
;
HRESULT
WINAPI
WebBrowser_Create
(
IClassFactory
*
,
IUnknown
*
,
REFIID
,
void
**
)
DECLSPEC_HIDDEN
;
HRESULT
WINAPI
WebBrowserV1_Create
(
IClassFactory
*
,
IUnknown
*
,
REFIID
,
void
**
)
DECLSPEC_HIDDEN
;
const
char
*
debugstr_variant
(
const
VARIANT
*
)
DECLSPEC_HIDDEN
;
extern
LONG
module_ref
DECLSPEC_HIDDEN
;
extern
HINSTANCE
ieframe_instance
DECLSPEC_HIDDEN
;
static
inline
void
lock_module
(
void
)
{
InterlockedIncrement
(
&
module_ref
);
...
...
@@ -57,11 +273,32 @@ static inline void *heap_alloc_zero(size_t len)
return
HeapAlloc
(
GetProcessHeap
(),
HEAP_ZERO_MEMORY
,
len
);
}
static
inline
void
*
heap_realloc
(
void
*
mem
,
size_t
len
)
{
return
HeapReAlloc
(
GetProcessHeap
(),
0
,
mem
,
len
);
}
static
inline
BOOL
heap_free
(
void
*
mem
)
{
return
HeapFree
(
GetProcessHeap
(),
0
,
mem
);
}
static
inline
LPWSTR
heap_strdupW
(
LPCWSTR
str
)
{
LPWSTR
ret
=
NULL
;
if
(
str
)
{
DWORD
size
;
size
=
(
strlenW
(
str
)
+
1
)
*
sizeof
(
WCHAR
);
ret
=
heap_alloc
(
size
);
if
(
ret
)
memcpy
(
ret
,
str
,
size
);
}
return
ret
;
}
static
inline
LPWSTR
co_strdupW
(
LPCWSTR
str
)
{
WCHAR
*
ret
=
CoTaskMemAlloc
((
strlenW
(
str
)
+
1
)
*
sizeof
(
WCHAR
));
...
...
dlls/ieframe/ieframe.spec
View file @
4acbae4d
# ordinal exports
101 stdcall -noname IEWinMain(str long)
@ stdcall -private DllCanUnloadNow()
@ stdcall -private DllGetClassObject(ptr ptr ptr)
@ stdcall -private DllRegisterServer()
...
...
dlls/ieframe/ieframe_main.c
View file @
4acbae4d
...
...
@@ -26,6 +26,57 @@
WINE_DEFAULT_DEBUG_CHANNEL
(
ieframe
);
LONG
module_ref
=
0
;
HINSTANCE
ieframe_instance
;
const
char
*
debugstr_variant
(
const
VARIANT
*
v
)
{
if
(
!
v
)
return
"(null)"
;
switch
(
V_VT
(
v
))
{
case
VT_EMPTY
:
return
"{VT_EMPTY}"
;
case
VT_NULL
:
return
"{VT_NULL}"
;
case
VT_I4
:
return
wine_dbg_sprintf
(
"{VT_I4: %d}"
,
V_I4
(
v
));
case
VT_R8
:
return
wine_dbg_sprintf
(
"{VT_R8: %lf}"
,
V_R8
(
v
));
case
VT_BSTR
:
return
wine_dbg_sprintf
(
"{VT_BSTR: %s}"
,
debugstr_w
(
V_BSTR
(
v
)));
case
VT_DISPATCH
:
return
wine_dbg_sprintf
(
"{VT_DISPATCH: %p}"
,
V_DISPATCH
(
v
));
case
VT_BOOL
:
return
wine_dbg_sprintf
(
"{VT_BOOL: %x}"
,
V_BOOL
(
v
));
default:
return
wine_dbg_sprintf
(
"{vt %d}"
,
V_VT
(
v
));
}
}
static
ITypeInfo
*
wb_typeinfo
=
NULL
;
HRESULT
get_typeinfo
(
ITypeInfo
**
typeinfo
)
{
ITypeLib
*
typelib
;
HRESULT
hres
;
if
(
wb_typeinfo
)
{
*
typeinfo
=
wb_typeinfo
;
return
S_OK
;
}
hres
=
LoadRegTypeLib
(
&
LIBID_SHDocVw
,
1
,
1
,
LOCALE_SYSTEM_DEFAULT
,
&
typelib
);
if
(
FAILED
(
hres
))
{
ERR
(
"LoadRegTypeLib failed: %08x
\n
"
,
hres
);
return
hres
;
}
hres
=
ITypeLib_GetTypeInfoOfGuid
(
typelib
,
&
IID_IWebBrowser2
,
&
wb_typeinfo
);
ITypeLib_Release
(
typelib
);
*
typeinfo
=
wb_typeinfo
;
return
hres
;
}
static
HRESULT
WINAPI
ClassFactory_QueryInterface
(
IClassFactory
*
iface
,
REFIID
riid
,
void
**
ppv
)
{
...
...
@@ -66,6 +117,26 @@ static HRESULT WINAPI ClassFactory_LockServer(IClassFactory *iface, BOOL fLock)
return
S_OK
;
}
static
const
IClassFactoryVtbl
WebBrowserFactoryVtbl
=
{
ClassFactory_QueryInterface
,
ClassFactory_AddRef
,
ClassFactory_Release
,
WebBrowser_Create
,
ClassFactory_LockServer
};
static
IClassFactory
WebBrowserFactory
=
{
&
WebBrowserFactoryVtbl
};
static
const
IClassFactoryVtbl
WebBrowserV1FactoryVtbl
=
{
ClassFactory_QueryInterface
,
ClassFactory_AddRef
,
ClassFactory_Release
,
WebBrowserV1_Create
,
ClassFactory_LockServer
};
static
IClassFactory
WebBrowserV1Factory
=
{
&
WebBrowserV1FactoryVtbl
};
static
const
IClassFactoryVtbl
InternetShortcutFactoryVtbl
=
{
ClassFactory_QueryInterface
,
ClassFactory_AddRef
,
...
...
@@ -108,8 +179,14 @@ BOOL WINAPI DllMain(HINSTANCE hInstDLL, DWORD fdwReason, LPVOID lpv)
case
DLL_WINE_PREATTACH
:
return
FALSE
;
/* prefer native version */
case
DLL_PROCESS_ATTACH
:
DisableThreadLibraryCalls
(
hInstDLL
);
ieframe_instance
=
hInstDLL
;
register_iewindow_class
();
DisableThreadLibraryCalls
(
ieframe_instance
);
break
;
case
DLL_PROCESS_DETACH
:
unregister_iewindow_class
();
if
(
wb_typeinfo
)
ITypeInfo_Release
(
wb_typeinfo
);
}
return
TRUE
;
...
...
@@ -120,6 +197,17 @@ BOOL WINAPI DllMain(HINSTANCE hInstDLL, DWORD fdwReason, LPVOID lpv)
*/
HRESULT
WINAPI
DllGetClassObject
(
REFCLSID
rclsid
,
REFIID
riid
,
LPVOID
*
ppv
)
{
if
(
IsEqualGUID
(
&
CLSID_WebBrowser
,
rclsid
))
{
TRACE
(
"(CLSID_WebBrowser %s %p)
\n
"
,
debugstr_guid
(
riid
),
ppv
);
return
IClassFactory_QueryInterface
(
&
WebBrowserFactory
,
riid
,
ppv
);
}
if
(
IsEqualGUID
(
&
CLSID_WebBrowser_V1
,
rclsid
))
{
TRACE
(
"(CLSID_WebBrowser_V1 %s %p)
\n
"
,
debugstr_guid
(
riid
),
ppv
);
return
IClassFactory_QueryInterface
(
&
WebBrowserV1Factory
,
riid
,
ppv
);
}
if
(
IsEqualGUID
(
rclsid
,
&
CLSID_InternetShortcut
))
{
TRACE
(
"(CLSID_InternetShortcut %s %p)
\n
"
,
debugstr_guid
(
riid
),
ppv
);
return
IClassFactory_QueryInterface
(
&
InternetShortcutFactory
,
riid
,
ppv
);
...
...
@@ -140,6 +228,41 @@ HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv)
return
CLASS_E_CLASSNOTAVAILABLE
;
}
static
const
IClassFactoryVtbl
InternetExplorerFactoryVtbl
=
{
ClassFactory_QueryInterface
,
ClassFactory_AddRef
,
ClassFactory_Release
,
InternetExplorer_Create
,
ClassFactory_LockServer
};
static
IClassFactory
InternetExplorerFactory
=
{
&
InternetExplorerFactoryVtbl
};
HRESULT
register_class_object
(
BOOL
do_reg
)
{
HRESULT
hres
;
static
DWORD
cookie
;
if
(
do_reg
)
{
hres
=
CoRegisterClassObject
(
&
CLSID_InternetExplorer
,
(
IUnknown
*
)
&
InternetExplorerFactory
,
CLSCTX_SERVER
,
REGCLS_MULTIPLEUSE
|
REGCLS_SUSPENDED
,
&
cookie
);
if
(
FAILED
(
hres
))
{
ERR
(
"failed to register object %08x
\n
"
,
hres
);
return
hres
;
}
hres
=
CoResumeClassObjects
();
if
(
SUCCEEDED
(
hres
))
return
hres
;
ERR
(
"failed to resume object %08x
\n
"
,
hres
);
}
return
CoRevokeClassObject
(
cookie
);
}
/***********************************************************************
* DllCanUnloadNow (ieframe.@)
*/
...
...
dlls/
shdocvw
/iexplore.c
→
dlls/
ieframe
/iexplore.c
View file @
4acbae4d
/*
*
SHDOCVW
- Internet Explorer main frame window
*
ieframe
- Internet Explorer main frame window
*
* Copyright 2006 Mike McCormack (for CodeWeavers)
* Copyright 2006 Jacek Caban (for CodeWeavers)
...
...
@@ -22,8 +22,10 @@
#define COBJMACROS
#include <stdarg.h>
#include "windef.h"
#include "winbase.h"
#include "ieframe.h"
#include "resource.h"
#include "winuser.h"
#include "wingdi.h"
#include "winnls.h"
...
...
@@ -31,7 +33,6 @@
#include "exdisp.h"
#include "oleidl.h"
#include "shdocvw.h"
#include "mshtmcid.h"
#include "shellapi.h"
#include "winreg.h"
...
...
@@ -45,6 +46,8 @@ WINE_DEFAULT_DEBUG_CHANNEL(shdocvw);
#define IDI_APPICON 1
#define WM_UPDATEADDRBAR (WM_APP+1)
static
const
WCHAR
szIEWinFrame
[]
=
{
'I'
,
'E'
,
'F'
,
'r'
,
'a'
,
'm'
,
'e'
,
0
};
/* Windows uses "Microsoft Internet Explorer" */
...
...
@@ -54,7 +57,7 @@ static const WCHAR wszWineInternetExplorer[] =
static
LONG
obj_cnt
;
static
DWORD
dde_inst
;
static
HSZ
ddestr_iexplore
,
ddestr_openurl
;
static
struct
list
ie_list
;
static
struct
list
ie_list
=
LIST_INIT
(
ie_list
)
;
HRESULT
update_ie_statustext
(
InternetExplorer
*
This
,
LPCWSTR
text
)
{
...
...
@@ -314,7 +317,7 @@ static void add_tbs_to_menu(HMENU menu)
static
HMENU
create_ie_menu
(
void
)
{
HMENU
menu
=
LoadMenuW
(
get_ieframe_instance
()
,
MAKEINTRESOURCEW
(
IDR_BROWSE_MAIN_MENU
));
HMENU
menu
=
LoadMenuW
(
ieframe_instance
,
MAKEINTRESOURCEW
(
IDR_BROWSE_MAIN_MENU
));
HMENU
favmenu
=
get_fav_menu
(
menu
);
WCHAR
path
[
MAX_PATH
];
...
...
@@ -415,7 +418,7 @@ static void add_tb_button(HWND hwnd, int bmp, int cmd, int strId)
TBBUTTON
btn
;
WCHAR
buf
[
30
];
LoadStringW
(
get_ieframe_instance
()
,
strId
,
buf
,
sizeof
(
buf
)
/
sizeof
(
buf
[
0
]));
LoadStringW
(
ieframe_instance
,
strId
,
buf
,
sizeof
(
buf
)
/
sizeof
(
buf
[
0
]));
btn
.
iBitmap
=
bmp
;
btn
.
idCommand
=
cmd
;
...
...
@@ -438,9 +441,11 @@ static void create_rebar(HWND hwnd)
HIMAGELIST
imagelist
;
WCHAR
idb_ietoolbar
[]
=
{
'I'
,
'D'
,
'B'
,
'_'
,
'I'
,
'E'
,
'T'
,
'O'
,
'O'
,
'L'
,
'B'
,
'A'
,
'R'
,
0
};
LoadStringW
(
get_ieframe_instance
()
,
IDS_ADDRESS
,
addr
,
sizeof
(
addr
)
/
sizeof
(
addr
[
0
]));
LoadStringW
(
ieframe_instance
,
IDS_ADDRESS
,
addr
,
sizeof
(
addr
)
/
sizeof
(
addr
[
0
]));
hwndRebar
=
CreateWindowExW
(
WS_EX_TOOLWINDOW
,
REBARCLASSNAMEW
,
NULL
,
WS_CHILD
|
WS_VISIBLE
|
WS_CLIPSIBLINGS
|
WS_CLIPCHILDREN
|
RBS_VARHEIGHT
|
CCS_TOP
|
CCS_NODIVIDER
,
0
,
0
,
0
,
0
,
hwnd
,
(
HMENU
)
IDC_BROWSE_REBAR
,
shdocvw_hinstance
,
NULL
);
hwndRebar
=
CreateWindowExW
(
WS_EX_TOOLWINDOW
,
REBARCLASSNAMEW
,
NULL
,
WS_CHILD
|
WS_VISIBLE
|
WS_CLIPSIBLINGS
|
WS_CLIPCHILDREN
|
RBS_VARHEIGHT
|
CCS_TOP
|
CCS_NODIVIDER
,
0
,
0
,
0
,
0
,
hwnd
,
(
HMENU
)
IDC_BROWSE_REBAR
,
ieframe_instance
,
NULL
);
rebarinf
.
cbSize
=
sizeof
(
rebarinf
);
rebarinf
.
fMask
=
0
;
...
...
@@ -449,9 +454,10 @@ static void create_rebar(HWND hwnd)
SendMessageW
(
hwndRebar
,
RB_SETBARINFO
,
0
,
(
LPARAM
)
&
rebarinf
);
hwndToolbar
=
CreateWindowExW
(
TBSTYLE_EX_MIXEDBUTTONS
,
TOOLBARCLASSNAMEW
,
NULL
,
TBSTYLE_FLAT
|
WS_CHILD
|
WS_VISIBLE
,
0
,
0
,
0
,
0
,
hwndRebar
,
(
HMENU
)
IDC_BROWSE_TOOLBAR
,
shdocvw_hinstance
,
NULL
);
hwndToolbar
=
CreateWindowExW
(
TBSTYLE_EX_MIXEDBUTTONS
,
TOOLBARCLASSNAMEW
,
NULL
,
TBSTYLE_FLAT
|
WS_CHILD
|
WS_VISIBLE
,
0
,
0
,
0
,
0
,
hwndRebar
,
(
HMENU
)
IDC_BROWSE_TOOLBAR
,
ieframe_instance
,
NULL
);
imagelist
=
ImageList_LoadImageW
(
shdocvw_h
instance
,
idb_ietoolbar
,
32
,
0
,
CLR_NONE
,
IMAGE_BITMAP
,
LR_CREATEDIBSECTION
);
imagelist
=
ImageList_LoadImageW
(
ieframe_
instance
,
idb_ietoolbar
,
32
,
0
,
CLR_NONE
,
IMAGE_BITMAP
,
LR_CREATEDIBSECTION
);
SendMessageW
(
hwndToolbar
,
TB_SETIMAGELIST
,
0
,
(
LPARAM
)
imagelist
);
SendMessageW
(
hwndToolbar
,
TB_BUTTONSTRUCTSIZE
,
sizeof
(
TBBUTTON
),
0
);
...
...
@@ -474,7 +480,8 @@ static void create_rebar(HWND hwnd)
SendMessageW
(
hwndRebar
,
RB_INSERTBANDW
,
-
1
,
(
LPARAM
)
&
bandinf
);
hwndAddress
=
CreateWindowExW
(
0
,
WC_COMBOBOXEXW
,
NULL
,
WS_BORDER
|
WS_CHILD
|
WS_VISIBLE
|
CBS_DROPDOWN
,
0
,
0
,
100
,
20
,
hwndRebar
,
(
HMENU
)
IDC_BROWSE_ADDRESSBAR
,
shdocvw_hinstance
,
NULL
);
hwndAddress
=
CreateWindowExW
(
0
,
WC_COMBOBOXEXW
,
NULL
,
WS_BORDER
|
WS_CHILD
|
WS_VISIBLE
|
CBS_DROPDOWN
,
0
,
0
,
100
,
20
,
hwndRebar
,
(
HMENU
)
IDC_BROWSE_ADDRESSBAR
,
ieframe_instance
,
NULL
);
bandinf
.
fMask
|=
RBBIM_TEXT
;
bandinf
.
fStyle
=
RBBS_CHILDEDGE
|
RBBS_BREAK
;
...
...
@@ -566,7 +573,7 @@ static LRESULT iewnd_OnCommand(InternetExplorer *This, HWND hwnd, UINT msg, WPAR
switch
(
LOWORD
(
wparam
))
{
case
ID_BROWSE_OPEN
:
DialogBoxParamW
(
get_ieframe_instance
()
,
MAKEINTRESOURCEW
(
IDD_BROWSE_OPEN
),
hwnd
,
ie_dialog_open_proc
,
(
LPARAM
)
This
);
DialogBoxParamW
(
ieframe_instance
,
MAKEINTRESOURCEW
(
IDD_BROWSE_OPEN
),
hwnd
,
ie_dialog_open_proc
,
(
LPARAM
)
This
);
break
;
case
ID_BROWSE_PRINT
:
...
...
@@ -620,8 +627,7 @@ static LRESULT update_addrbar(InternetExplorer *This, LPARAM lparam)
return
0
;
}
static
LRESULT
CALLBACK
ie_window_proc
(
HWND
hwnd
,
UINT
msg
,
WPARAM
wparam
,
LPARAM
lparam
)
static
LRESULT
WINAPI
ie_window_proc
(
HWND
hwnd
,
UINT
msg
,
WPARAM
wparam
,
LPARAM
lparam
)
{
InternetExplorer
*
This
=
(
InternetExplorer
*
)
GetWindowLongPtrW
(
hwnd
,
0
);
...
...
@@ -666,7 +672,7 @@ void register_iewindow_class(void)
wc
.
lpfnWndProc
=
ie_window_proc
;
wc
.
cbClsExtra
=
0
;
wc
.
cbWndExtra
=
sizeof
(
InternetExplorer
*
);
wc
.
hInstance
=
shdocvw_h
instance
;
wc
.
hInstance
=
ieframe_
instance
;
wc
.
hIcon
=
LoadIconW
(
GetModuleHandleW
(
0
),
MAKEINTRESOURCEW
(
IDI_APPICON
));
wc
.
hIconSm
=
LoadImageW
(
GetModuleHandleW
(
0
),
MAKEINTRESOURCEW
(
IDI_APPICON
),
IMAGE_ICON
,
GetSystemMetrics
(
SM_CXSMICON
),
GetSystemMetrics
(
SM_CYSMICON
),
LR_SHARED
);
...
...
@@ -680,7 +686,7 @@ void register_iewindow_class(void)
void
unregister_iewindow_class
(
void
)
{
UnregisterClassW
(
szIEWinFrame
,
shdocvw_h
instance
);
UnregisterClassW
(
szIEWinFrame
,
ieframe_
instance
);
}
static
void
create_frame_hwnd
(
InternetExplorer
*
This
)
...
...
@@ -691,7 +697,7 @@ static void create_frame_hwnd(InternetExplorer *This)
WS_CLIPCHILDREN
|
WS_CAPTION
|
WS_SYSMENU
|
WS_THICKFRAME
|
WS_MINIMIZEBOX
|
WS_MAXIMIZEBOX
,
CW_USEDEFAULT
,
CW_USEDEFAULT
,
CW_USEDEFAULT
,
CW_USEDEFAULT
,
NULL
,
NULL
/* FIXME */
,
shdocvw_h
instance
,
This
);
NULL
,
NULL
/* FIXME */
,
ieframe_
instance
,
This
);
}
static
inline
IEDocHost
*
impl_from_DocHost
(
DocHost
*
iface
)
...
...
@@ -795,7 +801,7 @@ static HRESULT create_ie(InternetExplorer **ret_obj)
return
S_OK
;
}
HRESULT
InternetExplorer_Create
(
IUnknown
*
pOuter
,
REFIID
riid
,
void
**
ppv
)
HRESULT
WINAPI
InternetExplorer_Create
(
IClassFactory
*
iface
,
IUnknown
*
pOuter
,
REFIID
riid
,
void
**
ppv
)
{
InternetExplorer
*
ret
;
HRESULT
hres
;
...
...
@@ -1014,22 +1020,13 @@ static void release_dde(void)
*
* Only returns on error.
*/
DWORD
WINAPI
IEWinMain
(
LPSTR
szCommandLine
,
int
nShowWindow
)
DWORD
WINAPI
IEWinMain
(
const
char
*
szCommandLine
,
int
nShowWindow
)
{
MSG
msg
;
HRESULT
hres
;
TRACE
(
"%s %d
\n
"
,
debugstr_a
(
szCommandLine
),
nShowWindow
);
list_init
(
&
ie_list
);
if
(
*
szCommandLine
==
'-'
||
*
szCommandLine
==
'/'
)
{
if
(
!
strcasecmp
(
szCommandLine
+
1
,
"regserver"
))
return
register_iexplore
(
TRUE
);
if
(
!
strcasecmp
(
szCommandLine
+
1
,
"unregserver"
))
return
register_iexplore
(
FALSE
);
}
CoInitialize
(
NULL
);
hres
=
register_class_object
(
TRUE
);
...
...
dlls/
shdocvw
/navigate.c
→
dlls/
ieframe
/navigate.c
View file @
4acbae4d
...
...
@@ -19,9 +19,8 @@
#define NONAMELESSUNION
#define NONAMELESSSTRUCT
#include "
wine/debug
.h"
#include "
ieframe
.h"
#include "shdocvw.h"
#include "exdispid.h"
#include "shellapi.h"
#include "winreg.h"
...
...
@@ -29,6 +28,8 @@
#include "wininet.h"
#include "mshtml.h"
#include "wine/debug.h"
WINE_DEFAULT_DEBUG_CHANNEL
(
shdocvw
);
static
const
WCHAR
emptyW
[]
=
{
0
};
...
...
@@ -560,7 +561,7 @@ static BOOL try_application_url(LPCWSTR url)
return
FALSE
;
TRACE
(
"openning application %s
\n
"
,
debugstr_w
(
app
));
memset
(
&
exec_info
,
0
,
sizeof
(
exec_info
));
exec_info
.
cbSize
=
sizeof
(
exec_info
);
exec_info
.
lpFile
=
url
;
...
...
@@ -840,7 +841,7 @@ HRESULT navigate_url(DocHost *This, LPCWSTR url, const VARIANT *Flags,
TRACE
(
"navigating to %s
\n
"
,
debugstr_w
(
url
));
if
((
Flags
&&
V_VT
(
Flags
)
!=
VT_EMPTY
)
if
((
Flags
&&
V_VT
(
Flags
)
!=
VT_EMPTY
)
||
(
TargetFrameName
&&
V_VT
(
TargetFrameName
)
!=
VT_EMPTY
))
FIXME
(
"Unsupported args (Flags %p:%d; TargetFrameName %p:%d)
\n
"
,
Flags
,
Flags
?
V_VT
(
Flags
)
:
-
1
,
TargetFrameName
,
...
...
dlls/
shdocvw
/oleobject.c
→
dlls/
ieframe
/oleobject.c
View file @
4acbae4d
...
...
@@ -24,12 +24,15 @@
*/
#include <string.h>
#include "wine/debug.h"
#include "shdocvw.h"
#include "ieframe.h"
#include "htiframe.h"
#include "idispids.h"
#include "mshtmdid.h"
#include "wine/debug.h"
WINE_DEFAULT_DEBUG_CHANNEL
(
shdocvw
);
/* shlwapi.dll */
...
...
@@ -88,7 +91,7 @@ static void create_shell_embedding_hwnd(WebBrowser *This)
wszShellEmbedding
,
NULL
};
wndclass
.
hInstance
=
shdocvw_h
instance
;
wndclass
.
hInstance
=
ieframe_
instance
;
RegisterClassExW
(
&
wndclass
);
}
...
...
@@ -105,7 +108,7 @@ static void create_shell_embedding_hwnd(WebBrowser *This)
WS_CLIPSIBLINGS
|
WS_CLIPCHILDREN
|
(
parent
?
WS_CHILD
|
WS_TABSTOP
:
WS_POPUP
|
WS_MAXIMIZEBOX
),
0
,
0
,
0
,
0
,
parent
,
NULL
,
shdocvw_h
instance
,
This
);
NULL
,
ieframe_
instance
,
This
);
TRACE
(
"parent=%p hwnd=%p
\n
"
,
parent
,
This
->
shell_embedding_hwnd
);
}
...
...
dlls/
shdocvw
/persist.c
→
dlls/
ieframe
/persist.c
View file @
4acbae4d
...
...
@@ -19,8 +19,9 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include "ieframe.h"
#include "wine/debug.h"
#include "shdocvw.h"
WINE_DEFAULT_DEBUG_CHANNEL
(
shdocvw
);
...
...
dlls/
shdocvw
/shellbrowser.c
→
dlls/
ieframe
/shellbrowser.c
View file @
4acbae4d
...
...
@@ -18,11 +18,13 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include "
wine/debug
.h"
#include "shdocvw.h"
#include "
ieframe
.h"
#include "shdeprecated.h"
#include "docobjectservice.h"
#include "wine/debug.h"
WINE_DEFAULT_DEBUG_CHANNEL
(
shdocvw
);
typedef
struct
{
...
...
dlls/
shdocvw
/view.c
→
dlls/
ieframe
/view.c
View file @
4acbae4d
...
...
@@ -17,8 +17,9 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include "ieframe.h"
#include "wine/debug.h"
#include "shdocvw.h"
WINE_DEFAULT_DEBUG_CHANNEL
(
shdocvw
);
...
...
dlls/
shdocvw
/webbrowser.c
→
dlls/
ieframe
/webbrowser.c
View file @
4acbae4d
...
...
@@ -19,12 +19,14 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include "
wine/debug
.h"
#include "shdocvw.h"
#include "
ieframe
.h"
#include "exdispid.h"
#include "mshtml.h"
#include "shdeprecated.h"
#include "wine/debug.h"
WINE_DEFAULT_DEBUG_CHANNEL
(
shdocvw
);
static
inline
WebBrowser
*
impl_from_IWebBrowser2
(
IWebBrowser2
*
iface
)
...
...
@@ -173,7 +175,7 @@ static ULONG WINAPI WebBrowser_Release(IWebBrowser2 *iface)
WebBrowser_OleObject_Destroy
(
This
);
heap_free
(
This
);
SHDOCVW_UnlockM
odule
();
unlock_m
odule
();
}
return
ref
;
...
...
@@ -1234,12 +1236,12 @@ static const IDocHostContainerVtbl DocHostContainerVtbl = {
DocHostContainer_exec
};
static
HRESULT
WebBrowser_Create
(
INT
version
,
IUnknown
*
pO
uter
,
REFIID
riid
,
void
**
ppv
)
static
HRESULT
create_webbrowser
(
int
version
,
IUnknown
*
o
uter
,
REFIID
riid
,
void
**
ppv
)
{
WebBrowser
*
ret
;
HRESULT
hres
;
TRACE
(
"(%p %s %p) version=%d
\n
"
,
pO
uter
,
debugstr_guid
(
riid
),
ppv
,
version
);
TRACE
(
"(%p %s %p) version=%d
\n
"
,
o
uter
,
debugstr_guid
(
riid
),
ppv
,
version
);
ret
=
heap_alloc_zero
(
sizeof
(
WebBrowser
));
...
...
@@ -1263,7 +1265,7 @@ static HRESULT WebBrowser_Create(INT version, IUnknown *pOuter, REFIID riid, voi
HlinkFrame_Init
(
&
ret
->
hlink_frame
,
(
IUnknown
*
)
&
ret
->
IWebBrowser2_iface
,
&
ret
->
doc_host
);
SHDOCVW_LockM
odule
();
lock_m
odule
();
hres
=
IWebBrowser_QueryInterface
(
&
ret
->
IWebBrowser2_iface
,
riid
,
ppv
);
...
...
@@ -1271,12 +1273,12 @@ static HRESULT WebBrowser_Create(INT version, IUnknown *pOuter, REFIID riid, voi
return
hres
;
}
HRESULT
W
ebBrowserV1_Create
(
IUnknown
*
pOuter
,
REFIID
riid
,
void
**
ppv
)
HRESULT
W
INAPI
WebBrowserV1_Create
(
IClassFactory
*
iface
,
IUnknown
*
pOuter
,
REFIID
riid
,
void
**
ppv
)
{
return
WebBrowser_Create
(
1
,
pOuter
,
riid
,
ppv
);
return
create_webbrowser
(
1
,
pOuter
,
riid
,
ppv
);
}
HRESULT
W
ebBrowserV2_Create
(
IUnknown
*
pOuter
,
REFIID
riid
,
void
**
ppv
)
HRESULT
W
INAPI
WebBrowser_Create
(
IClassFactory
*
iface
,
IUnknown
*
pOuter
,
REFIID
riid
,
void
**
ppv
)
{
return
WebBrowser_Create
(
2
,
pOuter
,
riid
,
ppv
);
return
create_webbrowser
(
2
,
pOuter
,
riid
,
ppv
);
}
dlls/shdocvw/Makefile.in
View file @
4acbae4d
EXTRADEFS
=
-D_SHDOCVW_
MODULE
=
shdocvw.dll
IMPORTLIB
=
shdocvw
IMPORTS
=
uuid sh
ell32 comctl32 shlwapi user32 gdi32 advapi32
DELAYIMPORTS
=
version
urlmon
ole32 oleaut32 ieframe
IMPORTS
=
uuid sh
lwapi
DELAYIMPORTS
=
version ole32 oleaut32 ieframe
C_SRCS
=
\
classinfo.c
\
client.c
\
dochost.c
\
events.c
\
factory.c
\
frame.c
\
ie.c
\
iexplore.c
\
navigate.c
\
oleobject.c
\
persist.c
\
shdocvw_main.c
\
shellbrowser.c
\
shlinstobj.c
\
view.c
\
webbrowser.c
shlinstobj.c
RC_SRCS
=
\
shdocvw.rc
...
...
dlls/shdocvw/factory.c
View file @
4acbae4d
...
...
@@ -37,97 +37,6 @@ WINE_DEFAULT_DEBUG_CHANNEL(shdocvw);
* Implement the WebBrowser class factory
*/
typedef
struct
{
/* IUnknown fields */
IClassFactory
IClassFactory_iface
;
HRESULT
(
*
cf
)(
LPUNKNOWN
,
REFIID
,
LPVOID
*
);
LONG
ref
;
}
IClassFactoryImpl
;
static
inline
IClassFactoryImpl
*
impl_from_IClassFactory
(
IClassFactory
*
iface
)
{
return
CONTAINING_RECORD
(
iface
,
IClassFactoryImpl
,
IClassFactory_iface
);
}
/**********************************************************************
* WBCF_QueryInterface (IUnknown)
*/
static
HRESULT
WINAPI
WBCF_QueryInterface
(
LPCLASSFACTORY
iface
,
REFIID
riid
,
LPVOID
*
ppobj
)
{
TRACE
(
"(%s %p)
\n
"
,
debugstr_guid
(
riid
),
ppobj
);
if
(
!
ppobj
)
return
E_POINTER
;
if
(
IsEqualGUID
(
&
IID_IUnknown
,
riid
)
||
IsEqualGUID
(
&
IID_IClassFactory
,
riid
))
{
*
ppobj
=
iface
;
IClassFactory_AddRef
(
iface
);
return
S_OK
;
}
WARN
(
"Not supported interface %s
\n
"
,
debugstr_guid
(
riid
));
*
ppobj
=
NULL
;
return
E_NOINTERFACE
;
}
/************************************************************************
* WBCF_AddRef (IUnknown)
*/
static
ULONG
WINAPI
WBCF_AddRef
(
LPCLASSFACTORY
iface
)
{
SHDOCVW_LockModule
();
return
2
;
/* non-heap based object */
}
/************************************************************************
* WBCF_Release (IUnknown)
*/
static
ULONG
WINAPI
WBCF_Release
(
LPCLASSFACTORY
iface
)
{
SHDOCVW_UnlockModule
();
return
1
;
/* non-heap based object */
}
/************************************************************************
* WBCF_CreateInstance (IClassFactory)
*/
static
HRESULT
WINAPI
WBCF_CreateInstance
(
LPCLASSFACTORY
iface
,
LPUNKNOWN
pOuter
,
REFIID
riid
,
LPVOID
*
ppobj
)
{
IClassFactoryImpl
*
This
=
(
IClassFactoryImpl
*
)
iface
;
return
This
->
cf
(
pOuter
,
riid
,
ppobj
);
}
/************************************************************************
* WBCF_LockServer (IClassFactory)
*/
static
HRESULT
WINAPI
WBCF_LockServer
(
LPCLASSFACTORY
iface
,
BOOL
dolock
)
{
TRACE
(
"(%d)
\n
"
,
dolock
);
if
(
dolock
)
SHDOCVW_LockModule
();
else
SHDOCVW_UnlockModule
();
return
S_OK
;
}
static
const
IClassFactoryVtbl
WBCF_Vtbl
=
{
WBCF_QueryInterface
,
WBCF_AddRef
,
WBCF_Release
,
WBCF_CreateInstance
,
WBCF_LockServer
};
static
HRESULT
get_ieframe_object
(
REFCLSID
rclsid
,
REFIID
riid
,
void
**
ppv
)
{
HINSTANCE
ieframe_instance
;
...
...
@@ -152,18 +61,11 @@ static HRESULT get_ieframe_object(REFCLSID rclsid, REFIID riid, void **ppv)
*/
HRESULT
WINAPI
DllGetClassObject
(
REFCLSID
rclsid
,
REFIID
riid
,
void
**
ppv
)
{
static
IClassFactoryImpl
WB1ClassFactory
=
{{
&
WBCF_Vtbl
},
WebBrowserV1_Create
};
static
IClassFactoryImpl
WB2ClassFactory
=
{{
&
WBCF_Vtbl
},
WebBrowserV2_Create
};
TRACE
(
"
\n
"
);
if
(
IsEqualGUID
(
&
CLSID_WebBrowser
,
rclsid
))
return
IClassFactory_QueryInterface
(
&
WB2ClassFactory
.
IClassFactory_iface
,
riid
,
ppv
);
if
(
IsEqualGUID
(
&
CLSID_WebBrowser_V1
,
rclsid
))
return
IClassFactory_QueryInterface
(
&
WB1ClassFactory
.
IClassFactory_iface
,
riid
,
ppv
);
if
(
IsEqualGUID
(
&
CLSID_InternetShortcut
,
rclsid
)
if
(
IsEqualGUID
(
&
CLSID_WebBrowser
,
rclsid
)
||
IsEqualGUID
(
&
CLSID_WebBrowser_V1
,
rclsid
)
||
IsEqualGUID
(
&
CLSID_InternetShortcut
,
rclsid
)
||
IsEqualGUID
(
&
CLSID_CUrlHistory
,
rclsid
)
||
IsEqualGUID
(
&
CLSID_TaskbarList
,
rclsid
))
return
get_ieframe_object
(
rclsid
,
riid
,
ppv
);
...
...
@@ -172,32 +74,6 @@ HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, void **ppv)
return
SHDOCVW_GetShellInstanceObjectClassObject
(
rclsid
,
riid
,
ppv
);
}
HRESULT
register_class_object
(
BOOL
do_reg
)
{
HRESULT
hres
;
static
DWORD
cookie
;
static
IClassFactoryImpl
IEClassFactory
=
{{
&
WBCF_Vtbl
},
InternetExplorer_Create
};
if
(
do_reg
)
{
hres
=
CoRegisterClassObject
(
&
CLSID_InternetExplorer
,
(
IUnknown
*
)
&
IEClassFactory
.
IClassFactory_iface
,
CLSCTX_SERVER
,
REGCLS_MULTIPLEUSE
|
REGCLS_SUSPENDED
,
&
cookie
);
if
(
FAILED
(
hres
))
{
ERR
(
"failed to register object %08x
\n
"
,
hres
);
return
hres
;
}
hres
=
CoResumeClassObjects
();
if
(
SUCCEEDED
(
hres
))
return
hres
;
ERR
(
"failed to resume object %08x
\n
"
,
hres
);
}
return
CoRevokeClassObject
(
cookie
);
}
static
HRESULT
reg_install
(
LPCSTR
section
,
STRTABLEA
*
strtable
)
{
HRESULT
(
WINAPI
*
pRegInstall
)(
HMODULE
hm
,
LPCSTR
pszSection
,
const
STRTABLEA
*
pstTable
);
...
...
@@ -313,7 +189,7 @@ static BOOL check_native_ie(void)
return
ret
;
}
DWORD
register_iexplore
(
BOOL
doregister
)
static
DWORD
register_iexplore
(
BOOL
doregister
)
{
HRESULT
hres
;
if
(
check_native_ie
())
...
...
@@ -324,3 +200,28 @@ DWORD register_iexplore(BOOL doregister)
hres
=
reg_install
(
doregister
?
"RegisterIE"
:
"UnregisterIE"
,
NULL
);
return
FAILED
(
hres
);
}
/******************************************************************
* IEWinMain (SHDOCVW.101)
*
* Only returns on error.
*/
DWORD
WINAPI
IEWinMain
(
LPSTR
szCommandLine
,
int
nShowWindow
)
{
DWORD
(
WINAPI
*
pIEWinMain
)(
LPSTR
,
int
);
TRACE
(
"%s %d
\n
"
,
debugstr_a
(
szCommandLine
),
nShowWindow
);
if
(
*
szCommandLine
==
'-'
||
*
szCommandLine
==
'/'
)
{
if
(
!
strcasecmp
(
szCommandLine
+
1
,
"regserver"
))
return
register_iexplore
(
TRUE
);
if
(
!
strcasecmp
(
szCommandLine
+
1
,
"unregserver"
))
return
register_iexplore
(
FALSE
);
}
pIEWinMain
=
(
void
*
)
GetProcAddress
(
get_ieframe_instance
(),
MAKEINTRESOURCEA
(
101
));
if
(
!
pIEWinMain
)
ExitProcess
(
1
);
return
pIEWinMain
(
szCommandLine
,
nShowWindow
);
}
dlls/shdocvw/resource.h
deleted
100644 → 0
View file @
d134e752
/*
* Resource identifiers for shdocvw.dll
*
* Copyright 2010 Alexander N. Sørnes <alex@thehandofagony.com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include <windef.h>
#include <winuser.h>
#define IDR_BROWSE_MAIN_MENU 1000
#define IDD_BROWSE_OPEN 1001
#define IDC_BROWSE_OPEN_URL 1002
#define IDC_BROWSE_REBAR 1003
#define IDC_BROWSE_ADDRESSBAR 1004
#define IDC_BROWSE_STATUSBAR 1005
#define IDC_BROWSE_TOOLBAR 1006
#define ID_BROWSE_NEW_WINDOW 275
#define ID_BROWSE_OPEN 256
#define ID_BROWSE_SAVE 257
#define ID_BROWSE_SAVE_AS 258
#define ID_BROWSE_PRINT_FORMAT 259
#define ID_BROWSE_PRINT 260
#define ID_BROWSE_PRINT_PREVIEW 277
#define ID_BROWSE_PROPERTIES 262
#define ID_BROWSE_QUIT 278
#define ID_BROWSE_ABOUT 336
#define ID_BROWSE_ADDFAV 1200
#define ID_BROWSE_HOME 1201
#define ID_BROWSE_BAR_STD 1300
#define ID_BROWSE_BAR_ADDR 1301
#define ID_BROWSE_GOTOFAV_FIRST 2000
#define ID_BROWSE_GOTOFAV_MAX 65000
#define IDS_TB_BACK 1100
#define IDS_TB_FORWARD 1101
#define IDS_TB_STOP 1102
#define IDS_TB_REFRESH 1103
#define IDS_TB_HOME 1104
#define IDS_TB_PRINT 1105
#define IDS_ADDRESS 1106
dlls/shdocvw/shdocvw.h
View file @
4acbae4d
...
...
@@ -28,23 +28,14 @@
#include "windef.h"
#include "winbase.h"
#include "wingdi.h"
#include "winuser.h"
#include "ole2.h"
#include "olectl.h"
#include "shlobj.h"
#include "exdisp.h"
#include "mshtmhst.h"
#include "hlink.h"
#include "htiframe.h"
#include "wine/unicode.h"
#include "wine/list.h"
#include "resource.h"
#define WM_UPDATEADDRBAR (WM_APP+1)
/**********************************************************************
* Shell Instance Objects
...
...
@@ -53,212 +44,6 @@ extern HRESULT SHDOCVW_GetShellInstanceObjectClassObject(REFCLSID rclsid,
REFIID
riid
,
LPVOID
*
ppvClassObj
)
DECLSPEC_HIDDEN
;
/**********************************************************************
* WebBrowser declaration for SHDOCVW.DLL
*/
typedef
struct
ConnectionPoint
ConnectionPoint
;
typedef
struct
DocHost
DocHost
;
typedef
struct
{
IConnectionPointContainer
IConnectionPointContainer_iface
;
ConnectionPoint
*
wbe2
;
ConnectionPoint
*
wbe
;
ConnectionPoint
*
pns
;
IUnknown
*
impl
;
}
ConnectionPointContainer
;
typedef
struct
{
IHlinkFrame
IHlinkFrame_iface
;
ITargetFrame2
ITargetFrame2_iface
;
IUnknown
*
outer
;
DocHost
*
doc_host
;
}
HlinkFrame
;
struct
_task_header_t
;
typedef
void
(
*
task_proc_t
)(
DocHost
*
,
struct
_task_header_t
*
);
typedef
void
(
*
task_destr_t
)(
struct
_task_header_t
*
);
typedef
struct
_task_header_t
{
struct
list
entry
;
task_proc_t
proc
;
task_destr_t
destr
;
}
task_header_t
;
typedef
struct
_IDocHostContainerVtbl
{
ULONG
(
*
addref
)(
DocHost
*
);
ULONG
(
*
release
)(
DocHost
*
);
void
(
WINAPI
*
GetDocObjRect
)(
DocHost
*
,
RECT
*
);
HRESULT
(
WINAPI
*
SetStatusText
)(
DocHost
*
,
LPCWSTR
);
void
(
WINAPI
*
SetURL
)(
DocHost
*
,
LPCWSTR
);
HRESULT
(
*
exec
)(
DocHost
*
,
const
GUID
*
,
DWORD
,
DWORD
,
VARIANT
*
,
VARIANT
*
);
}
IDocHostContainerVtbl
;
struct
DocHost
{
IOleClientSite
IOleClientSite_iface
;
IOleInPlaceSiteEx
IOleInPlaceSiteEx_iface
;
IDocHostUIHandler2
IDocHostUIHandler2_iface
;
IOleDocumentSite
IOleDocumentSite_iface
;
IOleControlSite
IOleControlSite_iface
;
IOleCommandTarget
IOleCommandTarget_iface
;
IDispatch
IDispatch_iface
;
IPropertyNotifySink
IPropertyNotifySink_iface
;
IServiceProvider
IServiceProvider_iface
;
/* Interfaces of InPlaceFrame object */
IOleInPlaceFrame
IOleInPlaceFrame_iface
;
IDispatch
*
disp
;
IDispatch
*
client_disp
;
IDocHostUIHandler
*
hostui
;
IOleInPlaceFrame
*
frame
;
IUnknown
*
document
;
IOleDocumentView
*
view
;
IUnknown
*
doc_navigate
;
const
IDocHostContainerVtbl
*
container_vtbl
;
HWND
hwnd
;
HWND
frame_hwnd
;
struct
list
task_queue
;
LPOLESTR
url
;
VARIANT_BOOL
silent
;
VARIANT_BOOL
offline
;
VARIANT_BOOL
busy
;
READYSTATE
ready_state
;
READYSTATE
doc_state
;
DWORD
prop_notif_cookie
;
BOOL
is_prop_notif
;
ConnectionPointContainer
cps
;
};
struct
WebBrowser
{
IWebBrowser2
IWebBrowser2_iface
;
IOleObject
IOleObject_iface
;
IOleInPlaceObject
IOleInPlaceObject_iface
;
IOleControl
IOleControl_iface
;
IPersistStorage
IPersistStorage_iface
;
IPersistMemory
IPersistMemory_iface
;
IPersistStreamInit
IPersistStreamInit_iface
;
IProvideClassInfo2
IProvideClassInfo2_iface
;
IViewObject2
IViewObject2_iface
;
IOleInPlaceActiveObject
IOleInPlaceActiveObject_iface
;
IOleCommandTarget
IOleCommandTarget_iface
;
IServiceProvider
IServiceProvider_iface
;
IDataObject
IDataObject_iface
;
HlinkFrame
hlink_frame
;
LONG
ref
;
INT
version
;
IOleClientSite
*
client
;
IOleContainer
*
container
;
IOleInPlaceSiteEx
*
inplace
;
/* window context */
HWND
frame_hwnd
;
IOleInPlaceUIWindow
*
uiwindow
;
RECT
pos_rect
;
RECT
clip_rect
;
OLEINPLACEFRAMEINFO
frameinfo
;
SIZEL
extent
;
HWND
shell_embedding_hwnd
;
VARIANT_BOOL
register_browser
;
VARIANT_BOOL
visible
;
VARIANT_BOOL
menu_bar
;
VARIANT_BOOL
address_bar
;
VARIANT_BOOL
status_bar
;
VARIANT_BOOL
tool_bar
;
VARIANT_BOOL
full_screen
;
VARIANT_BOOL
theater_mode
;
DocHost
doc_host
;
};
typedef
struct
{
DocHost
doc_host
;
LONG
ref
;
InternetExplorer
*
ie
;
}
IEDocHost
;
struct
InternetExplorer
{
IWebBrowser2
IWebBrowser2_iface
;
HlinkFrame
hlink_frame
;
LONG
ref
;
HWND
frame_hwnd
;
HWND
status_hwnd
;
HMENU
menu
;
BOOL
nohome
;
struct
list
entry
;
IEDocHost
*
doc_host
;
};
void
WebBrowser_OleObject_Init
(
WebBrowser
*
)
DECLSPEC_HIDDEN
;
void
WebBrowser_ViewObject_Init
(
WebBrowser
*
)
DECLSPEC_HIDDEN
;
void
WebBrowser_Persist_Init
(
WebBrowser
*
)
DECLSPEC_HIDDEN
;
void
WebBrowser_ClassInfo_Init
(
WebBrowser
*
)
DECLSPEC_HIDDEN
;
void
WebBrowser_OleObject_Destroy
(
WebBrowser
*
)
DECLSPEC_HIDDEN
;
void
DocHost_Init
(
DocHost
*
,
IDispatch
*
,
const
IDocHostContainerVtbl
*
)
DECLSPEC_HIDDEN
;
void
DocHost_ClientSite_Init
(
DocHost
*
)
DECLSPEC_HIDDEN
;
void
DocHost_Frame_Init
(
DocHost
*
)
DECLSPEC_HIDDEN
;
void
release_dochost_client
(
DocHost
*
)
DECLSPEC_HIDDEN
;
void
DocHost_Release
(
DocHost
*
)
DECLSPEC_HIDDEN
;
void
DocHost_ClientSite_Release
(
DocHost
*
)
DECLSPEC_HIDDEN
;
void
ConnectionPointContainer_Init
(
ConnectionPointContainer
*
,
IUnknown
*
)
DECLSPEC_HIDDEN
;
void
ConnectionPointContainer_Destroy
(
ConnectionPointContainer
*
)
DECLSPEC_HIDDEN
;
void
HlinkFrame_Init
(
HlinkFrame
*
,
IUnknown
*
,
DocHost
*
)
DECLSPEC_HIDDEN
;
BOOL
HlinkFrame_QI
(
HlinkFrame
*
,
REFIID
,
void
**
)
DECLSPEC_HIDDEN
;
HRESULT
ShellBrowser_Create
(
IShellBrowser
**
)
DECLSPEC_HIDDEN
;
HRESULT
WebBrowserV1_Create
(
IUnknown
*
,
REFIID
,
void
**
)
DECLSPEC_HIDDEN
;
HRESULT
WebBrowserV2_Create
(
IUnknown
*
,
REFIID
,
void
**
)
DECLSPEC_HIDDEN
;
void
create_doc_view_hwnd
(
DocHost
*
)
DECLSPEC_HIDDEN
;
void
deactivate_document
(
DocHost
*
)
DECLSPEC_HIDDEN
;
HRESULT
dochost_object_available
(
DocHost
*
,
IUnknown
*
)
DECLSPEC_HIDDEN
;
void
call_sink
(
ConnectionPoint
*
,
DISPID
,
DISPPARAMS
*
)
DECLSPEC_HIDDEN
;
HRESULT
navigate_url
(
DocHost
*
,
LPCWSTR
,
const
VARIANT
*
,
const
VARIANT
*
,
VARIANT
*
,
VARIANT
*
)
DECLSPEC_HIDDEN
;
HRESULT
go_home
(
DocHost
*
)
DECLSPEC_HIDDEN
;
void
set_doc_state
(
DocHost
*
,
READYSTATE
)
DECLSPEC_HIDDEN
;
HRESULT
get_location_url
(
DocHost
*
,
BSTR
*
)
DECLSPEC_HIDDEN
;
void
handle_navigation_error
(
DocHost
*
,
HRESULT
,
BSTR
,
IHTMLWindow2
*
)
DECLSPEC_HIDDEN
;
#define WM_DOCHOSTTASK (WM_USER+0x300)
void
push_dochost_task
(
DocHost
*
,
task_header_t
*
,
task_proc_t
,
task_destr_t
,
BOOL
)
DECLSPEC_HIDDEN
;
LRESULT
process_dochost_tasks
(
DocHost
*
)
DECLSPEC_HIDDEN
;
void
abort_dochost_tasks
(
DocHost
*
,
task_proc_t
)
DECLSPEC_HIDDEN
;
HRESULT
InternetExplorer_Create
(
IUnknown
*
,
REFIID
,
void
**
)
DECLSPEC_HIDDEN
;
void
InternetExplorer_WebBrowser_Init
(
InternetExplorer
*
)
DECLSPEC_HIDDEN
;
void
released_obj
(
void
)
DECLSPEC_HIDDEN
;
/**********************************************************************
* Dll lifetime tracking declaration for shdocvw.dll
*/
extern
LONG
SHDOCVW_refCount
DECLSPEC_HIDDEN
;
...
...
@@ -266,18 +51,9 @@ static inline void SHDOCVW_LockModule(void) { InterlockedIncrement( &SHDOCVW_ref
static
inline
void
SHDOCVW_UnlockModule
(
void
)
{
InterlockedDecrement
(
&
SHDOCVW_refCount
);
}
extern
HINSTANCE
shdocvw_hinstance
DECLSPEC_HIDDEN
;
extern
void
register_iewindow_class
(
void
)
DECLSPEC_HIDDEN
;
extern
void
unregister_iewindow_class
(
void
)
DECLSPEC_HIDDEN
;
extern
HRESULT
update_ie_statustext
(
InternetExplorer
*
,
LPCWSTR
)
DECLSPEC_HIDDEN
;
HINSTANCE
get_ieframe_instance
(
void
)
DECLSPEC_HIDDEN
;
HRESULT
register_class_object
(
BOOL
)
DECLSPEC_HIDDEN
;
HRESULT
get_typeinfo
(
ITypeInfo
**
)
DECLSPEC_HIDDEN
;
DWORD
register_iexplore
(
BOOL
)
DECLSPEC_HIDDEN
;
const
char
*
debugstr_variant
(
const
VARIANT
*
)
DECLSPEC_HIDDEN
;
/* memory allocation functions */
static
inline
void
*
heap_alloc
(
size_t
len
)
...
...
@@ -285,64 +61,9 @@ static inline void *heap_alloc(size_t len)
return
HeapAlloc
(
GetProcessHeap
(),
0
,
len
);
}
static
inline
void
*
heap_alloc_zero
(
size_t
len
)
{
return
HeapAlloc
(
GetProcessHeap
(),
HEAP_ZERO_MEMORY
,
len
);
}
static
inline
void
*
heap_realloc
(
void
*
mem
,
size_t
len
)
{
return
HeapReAlloc
(
GetProcessHeap
(),
0
,
mem
,
len
);
}
static
inline
BOOL
heap_free
(
void
*
mem
)
{
return
HeapFree
(
GetProcessHeap
(),
0
,
mem
);
}
static
inline
LPWSTR
heap_strdupW
(
LPCWSTR
str
)
{
LPWSTR
ret
=
NULL
;
if
(
str
)
{
DWORD
size
;
size
=
(
strlenW
(
str
)
+
1
)
*
sizeof
(
WCHAR
);
ret
=
heap_alloc
(
size
);
memcpy
(
ret
,
str
,
size
);
}
return
ret
;
}
static
inline
LPWSTR
co_strdupW
(
LPCWSTR
str
)
{
WCHAR
*
ret
=
CoTaskMemAlloc
((
strlenW
(
str
)
+
1
)
*
sizeof
(
WCHAR
));
if
(
ret
)
lstrcpyW
(
ret
,
str
);
return
ret
;
}
static
inline
LPWSTR
co_strdupAtoW
(
LPCSTR
str
)
{
INT
len
;
WCHAR
*
ret
;
len
=
MultiByteToWideChar
(
CP_ACP
,
0
,
str
,
-
1
,
NULL
,
0
);
ret
=
CoTaskMemAlloc
(
len
*
sizeof
(
WCHAR
));
if
(
ret
)
MultiByteToWideChar
(
CP_ACP
,
0
,
str
,
-
1
,
ret
,
len
);
return
ret
;
}
static
inline
LPSTR
co_strdupWtoA
(
LPCWSTR
str
)
{
INT
len
;
CHAR
*
ret
;
len
=
WideCharToMultiByte
(
CP_ACP
,
0
,
str
,
-
1
,
NULL
,
0
,
0
,
0
);
ret
=
CoTaskMemAlloc
(
len
);
if
(
ret
)
WideCharToMultiByte
(
CP_ACP
,
0
,
str
,
-
1
,
ret
,
len
,
0
,
0
);
return
ret
;
}
#endif
/* __WINE_SHDOCVW_H */
dlls/shdocvw/shdocvw.rc
View file @
4acbae4d
...
...
@@ -16,7 +16,7 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include "
resource
.h"
#include "
windef
.h"
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
...
...
dlls/shdocvw/shdocvw_main.c
View file @
4acbae4d
...
...
@@ -42,56 +42,6 @@ LONG SHDOCVW_refCount = 0;
HINSTANCE
shdocvw_hinstance
=
0
;
static
HMODULE
SHDOCVW_hshell32
=
0
;
static
ITypeInfo
*
wb_typeinfo
=
NULL
;
HRESULT
get_typeinfo
(
ITypeInfo
**
typeinfo
)
{
ITypeLib
*
typelib
;
HRESULT
hres
;
if
(
wb_typeinfo
)
{
*
typeinfo
=
wb_typeinfo
;
return
S_OK
;
}
hres
=
LoadRegTypeLib
(
&
LIBID_SHDocVw
,
1
,
1
,
LOCALE_SYSTEM_DEFAULT
,
&
typelib
);
if
(
FAILED
(
hres
))
{
ERR
(
"LoadRegTypeLib failed: %08x
\n
"
,
hres
);
return
hres
;
}
hres
=
ITypeLib_GetTypeInfoOfGuid
(
typelib
,
&
IID_IWebBrowser2
,
&
wb_typeinfo
);
ITypeLib_Release
(
typelib
);
*
typeinfo
=
wb_typeinfo
;
return
hres
;
}
const
char
*
debugstr_variant
(
const
VARIANT
*
v
)
{
if
(
!
v
)
return
"(null)"
;
switch
(
V_VT
(
v
))
{
case
VT_EMPTY
:
return
"{VT_EMPTY}"
;
case
VT_NULL
:
return
"{VT_NULL}"
;
case
VT_I4
:
return
wine_dbg_sprintf
(
"{VT_I4: %d}"
,
V_I4
(
v
));
case
VT_R8
:
return
wine_dbg_sprintf
(
"{VT_R8: %lf}"
,
V_R8
(
v
));
case
VT_BSTR
:
return
wine_dbg_sprintf
(
"{VT_BSTR: %s}"
,
debugstr_w
(
V_BSTR
(
v
)));
case
VT_DISPATCH
:
return
wine_dbg_sprintf
(
"{VT_DISPATCH: %p}"
,
V_DISPATCH
(
v
));
case
VT_BOOL
:
return
wine_dbg_sprintf
(
"{VT_BOOL: %x}"
,
V_BOOL
(
v
));
default:
return
wine_dbg_sprintf
(
"{vt %d}"
,
V_VT
(
v
));
}
}
static
HINSTANCE
ieframe_instance
;
HINSTANCE
get_ieframe_instance
(
void
)
...
...
@@ -114,13 +64,9 @@ BOOL WINAPI DllMain(HINSTANCE hinst, DWORD fdwReason, LPVOID fImpLoad)
{
case
DLL_PROCESS_ATTACH
:
shdocvw_hinstance
=
hinst
;
register_iewindow_class
();
break
;
case
DLL_PROCESS_DETACH
:
if
(
SHDOCVW_hshell32
)
FreeLibrary
(
SHDOCVW_hshell32
);
unregister_iewindow_class
();
if
(
wb_typeinfo
)
ITypeInfo_Release
(
wb_typeinfo
);
if
(
ieframe_instance
)
FreeLibrary
(
ieframe_instance
);
break
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment