Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-cw
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-cw
Commits
c56614e1
Commit
c56614e1
authored
Jan 07, 2011
by
Jacek Caban
Committed by
Alexandre Julliard
Jan 10, 2011
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
shdocvw: Moved allocating InternetExplorer object to separated function.
parent
e2fa7a40
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
69 additions
and
56 deletions
+69
-56
iexplore.c
dlls/shdocvw/iexplore.c
+69
-56
No files found.
dlls/shdocvw/iexplore.c
View file @
c56614e1
...
...
@@ -693,50 +693,6 @@ static void create_frame_hwnd(InternetExplorer *This)
NULL
,
NULL
/* FIXME */
,
shdocvw_hinstance
,
This
);
}
static
BOOL
create_ie_window
(
LPCSTR
cmdline
)
{
IWebBrowser2
*
wb
=
NULL
;
InternetExplorer_Create
(
NULL
,
&
IID_IWebBrowser2
,
(
void
**
)
&
wb
);
if
(
!
wb
)
return
FALSE
;
IWebBrowser2_put_Visible
(
wb
,
VARIANT_TRUE
);
IWebBrowser2_put_MenuBar
(
wb
,
VARIANT_TRUE
);
if
(
!*
cmdline
)
{
IWebBrowser2_GoHome
(
wb
);
}
else
{
VARIANT
var_url
;
DWORD
len
;
int
cmdlen
;
if
(
!
strncasecmp
(
cmdline
,
"-nohome"
,
7
))
cmdline
+=
7
;
while
(
*
cmdline
==
' '
||
*
cmdline
==
'\t'
)
cmdline
++
;
cmdlen
=
lstrlenA
(
cmdline
);
if
(
cmdlen
>
2
&&
cmdline
[
0
]
==
'"'
&&
cmdline
[
cmdlen
-
1
]
==
'"'
)
{
cmdline
++
;
cmdlen
-=
2
;
}
V_VT
(
&
var_url
)
=
VT_BSTR
;
len
=
MultiByteToWideChar
(
CP_ACP
,
0
,
cmdline
,
cmdlen
,
NULL
,
0
);
V_BSTR
(
&
var_url
)
=
SysAllocStringLen
(
NULL
,
len
);
MultiByteToWideChar
(
CP_ACP
,
0
,
cmdline
,
cmdlen
,
V_BSTR
(
&
var_url
),
len
);
/* navigate to the first page */
IWebBrowser2_Navigate2
(
wb
,
&
var_url
,
NULL
,
NULL
,
NULL
,
NULL
);
SysFreeString
(
V_BSTR
(
&
var_url
));
}
IWebBrowser2_Release
(
wb
);
return
TRUE
;
}
static
inline
IEDocHost
*
impl_from_DocHost
(
DocHost
*
iface
)
{
return
CONTAINING_RECORD
(
iface
,
IEDocHost
,
doc_host
);
...
...
@@ -799,12 +755,9 @@ static const IDocHostContainerVtbl DocHostContainerVtbl = {
DocHostContainer_exec
};
HRESULT
InternetExplorer_Create
(
IUnknown
*
pOuter
,
REFIID
riid
,
void
**
ppv
)
static
HRESULT
create_ie
(
InternetExplorer
**
ret_obj
)
{
InternetExplorer
*
ret
;
HRESULT
hres
;
TRACE
(
"(%p %s %p)
\n
"
,
pOuter
,
debugstr_guid
(
riid
),
ppv
);
ret
=
heap_alloc_zero
(
sizeof
(
InternetExplorer
));
if
(
!
ret
)
...
...
@@ -828,12 +781,27 @@ HRESULT InternetExplorer_Create(IUnknown *pOuter, REFIID riid, void **ppv)
create_frame_hwnd
(
ret
);
ret
->
doc_host
->
doc_host
.
frame_hwnd
=
ret
->
frame_hwnd
;
InterlockedIncrement
(
&
obj_cnt
);
*
ret_obj
=
ret
;
return
S_OK
;
}
HRESULT
InternetExplorer_Create
(
IUnknown
*
pOuter
,
REFIID
riid
,
void
**
ppv
)
{
InternetExplorer
*
ret
;
HRESULT
hres
;
TRACE
(
"(%p %s %p)
\n
"
,
pOuter
,
debugstr_guid
(
riid
),
ppv
);
hres
=
create_ie
(
&
ret
);
if
(
FAILED
(
hres
))
return
hres
;
hres
=
IWebBrowser2_QueryInterface
(
&
ret
->
IWebBrowser2_iface
,
riid
,
ppv
);
IWebBrowser2_Release
(
&
ret
->
IWebBrowser2_iface
);
if
(
FAILED
(
hres
))
return
hres
;
InterlockedIncrement
(
&
obj_cnt
);
return
S_OK
;
}
...
...
@@ -843,9 +811,54 @@ void released_obj(void)
PostQuitMessage
(
0
);
}
static
BOOL
create_ie_window
(
LPCSTR
cmdline
)
{
InternetExplorer
*
ie
;
HRESULT
hres
;
hres
=
create_ie
(
&
ie
);
if
(
FAILED
(
hres
))
return
FALSE
;
IWebBrowser2_put_Visible
(
&
ie
->
IWebBrowser2_iface
,
VARIANT_TRUE
);
IWebBrowser2_put_MenuBar
(
&
ie
->
IWebBrowser2_iface
,
VARIANT_TRUE
);
if
(
!*
cmdline
)
{
IWebBrowser2_GoHome
(
&
ie
->
IWebBrowser2_iface
);
}
else
{
VARIANT
var_url
;
DWORD
len
;
int
cmdlen
;
if
(
!
strncasecmp
(
cmdline
,
"-nohome"
,
7
))
cmdline
+=
7
;
while
(
*
cmdline
==
' '
||
*
cmdline
==
'\t'
)
cmdline
++
;
cmdlen
=
lstrlenA
(
cmdline
);
if
(
cmdlen
>
2
&&
cmdline
[
0
]
==
'"'
&&
cmdline
[
cmdlen
-
1
]
==
'"'
)
{
cmdline
++
;
cmdlen
-=
2
;
}
V_VT
(
&
var_url
)
=
VT_BSTR
;
len
=
MultiByteToWideChar
(
CP_ACP
,
0
,
cmdline
,
cmdlen
,
NULL
,
0
);
V_BSTR
(
&
var_url
)
=
SysAllocStringLen
(
NULL
,
len
);
MultiByteToWideChar
(
CP_ACP
,
0
,
cmdline
,
cmdlen
,
V_BSTR
(
&
var_url
),
len
);
/* navigate to the first page */
IWebBrowser2_Navigate2
(
&
ie
->
IWebBrowser2_iface
,
&
var_url
,
NULL
,
NULL
,
NULL
,
NULL
);
SysFreeString
(
V_BSTR
(
&
var_url
));
}
IWebBrowser2_Release
(
&
ie
->
IWebBrowser2_iface
);
return
TRUE
;
}
static
ULONG
open_dde_url
(
WCHAR
*
dde_url
)
{
I
WebBrowser2
*
wb
;
I
nternetExplorer
*
ie
;
WCHAR
*
url
,
*
url_end
;
VARIANT
urlv
;
HRESULT
hres
;
...
...
@@ -869,25 +882,25 @@ static ULONG open_dde_url(WCHAR *dde_url)
url_end
=
url
+
strlenW
(
url
);
}
hres
=
InternetExplorer_Create
(
NULL
,
&
IID_IWebBrowser2
,
(
void
**
)
&
wb
);
hres
=
create_ie
(
&
ie
);
if
(
FAILED
(
hres
))
return
0
;
IWebBrowser2_put_Visible
(
wb
,
VARIANT_TRUE
);
IWebBrowser2_put_MenuBar
(
wb
,
VARIANT_TRUE
);
IWebBrowser2_put_Visible
(
&
ie
->
IWebBrowser2_iface
,
VARIANT_TRUE
);
IWebBrowser2_put_MenuBar
(
&
ie
->
IWebBrowser2_iface
,
VARIANT_TRUE
);
V_VT
(
&
urlv
)
=
VT_BSTR
;
V_BSTR
(
&
urlv
)
=
SysAllocStringLen
(
url
,
url_end
-
url
);
if
(
!
V_BSTR
(
&
urlv
))
{
IWebBrowser2_Release
(
wb
);
IWebBrowser2_Release
(
&
ie
->
IWebBrowser2_iface
);
return
0
;
}
hres
=
IWebBrowser2_Navigate2
(
wb
,
&
urlv
,
NULL
,
NULL
,
NULL
,
NULL
);
hres
=
IWebBrowser2_Navigate2
(
&
ie
->
IWebBrowser2_iface
,
&
urlv
,
NULL
,
NULL
,
NULL
,
NULL
);
if
(
FAILED
(
hres
))
return
0
;
IWebBrowser2_Release
(
wb
);
IWebBrowser2_Release
(
&
ie
->
IWebBrowser2_iface
);
return
DDE_FACK
;
}
...
...
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