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
3e507e3c
Commit
3e507e3c
authored
Sep 13, 2005
by
James Hawkins
Committed by
Alexandre Julliard
Sep 13, 2005
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
- Add the WebBrowser implementation.
- Load the default Url in the HTML Pane.
parent
7bb00b1c
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
804 additions
and
2 deletions
+804
-2
Makefile.in
dlls/hhctrl.ocx/Makefile.in
+4
-2
help.c
dlls/hhctrl.ocx/help.c
+23
-0
webbrowser.c
dlls/hhctrl.ocx/webbrowser.c
+728
-0
webbrowser.h
dlls/hhctrl.ocx/webbrowser.h
+49
-0
No files found.
dlls/hhctrl.ocx/Makefile.in
View file @
3e507e3c
...
...
@@ -3,14 +3,16 @@ TOPOBJDIR = ../..
SRCDIR
=
@srcdir@
VPATH
=
@srcdir@
MODULE
=
hhctrl.ocx
IMPORTS
=
advapi32 comctl32 shell32 ole32 user32 gdi32 kernel32
IMPORTS
=
advapi32 comctl32 shell32 ole32 oleaut32 user32 gdi32 kernel32
EXTRALIBS
=
-luuid
C_SRCS
=
\
chm.c
\
help.c
\
hhctrl.c
\
main.c
\
regsvr.c
regsvr.c
\
webbrowser.c
RC_SRCS
=
hhctrl.rc
...
...
dlls/hhctrl.ocx/help.c
View file @
3e507e3c
...
...
@@ -32,6 +32,7 @@
#include "resource.h"
#include "chm.h"
#include "webbrowser.h"
/* Window type defaults */
...
...
@@ -45,6 +46,7 @@ typedef struct tagHHInfo
{
HH_WINTYPEW
*
pHHWinType
;
CHMInfo
*
pCHMInfo
;
WBInfo
*
pWBInfo
;
HINSTANCE
hInstance
;
LPWSTR
szCmdLine
;
HWND
hwndTabCtrl
;
...
...
@@ -387,6 +389,9 @@ static BOOL HH_AddHTMLPane(HHInfo *pHHInfo)
if
(
!
hWnd
)
return
FALSE
;
if
(
!
WB_EmbedBrowser
(
pHHInfo
->
pWBInfo
,
hwndParent
))
return
FALSE
;
/* store the pointer to the HH info struct */
SetWindowLongPtrW
(
hWnd
,
GWLP_USERDATA
,
(
LONG_PTR
)
pHHInfo
);
...
...
@@ -572,6 +577,7 @@ static HHInfo *HH_OpenHH(HINSTANCE hInstance, LPWSTR szCmdLine)
pHHInfo
->
pHHWinType
=
HeapAlloc
(
GetProcessHeap
(),
HEAP_ZERO_MEMORY
,
sizeof
(
HH_WINTYPEW
));
pHHInfo
->
pCHMInfo
=
HeapAlloc
(
GetProcessHeap
(),
0
,
sizeof
(
CHMInfo
));
pHHInfo
->
pWBInfo
=
HeapAlloc
(
GetProcessHeap
(),
0
,
sizeof
(
WBInfo
));
pHHInfo
->
hInstance
=
hInstance
;
pHHInfo
->
szCmdLine
=
szCmdLine
;
...
...
@@ -607,6 +613,21 @@ static void HH_Close(HHInfo *pHHInfo)
CHM_CloseCHM
(
pHHInfo
->
pCHMInfo
);
HeapFree
(
GetProcessHeap
(),
0
,
pHHInfo
->
pCHMInfo
);
}
if
(
pHHInfo
->
pWBInfo
)
{
WB_UnEmbedBrowser
(
pHHInfo
->
pWBInfo
);
HeapFree
(
GetProcessHeap
(),
0
,
pHHInfo
->
pWBInfo
);
}
}
static
void
HH_OpenDefaultTopic
(
HHInfo
*
pHHInfo
)
{
WCHAR
url
[
MAX_PATH
];
LPCWSTR
defTopic
=
pHHInfo
->
pHHWinType
->
pszFile
;
CHM_CreateITSUrl
(
pHHInfo
->
pCHMInfo
,
defTopic
,
url
);
WB_Navigate
(
pHHInfo
->
pWBInfo
,
url
);
}
static
BOOL
HH_OpenCHM
(
HHInfo
*
pHHInfo
)
...
...
@@ -636,6 +657,8 @@ int WINAPI doWinMain(HINSTANCE hInstance, LPSTR szCmdLine)
return
-
1
;
}
HH_OpenDefaultTopic
(
pHHInfo
);
while
(
GetMessageW
(
&
msg
,
0
,
0
,
0
))
{
TranslateMessage
(
&
msg
);
...
...
dlls/hhctrl.ocx/webbrowser.c
0 → 100644
View file @
3e507e3c
/*
* WebBrowser Implementation
*
* Copyright 2005 James Hawkins
*
* 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include <stdarg.h>
#define COBJMACROS
#include "windef.h"
#include "winbase.h"
#include "winuser.h"
#include "winnls.h"
#include "ole2.h"
#include "webbrowser.h"
#define ICOM_THIS_MULTI(impl,field,iface) impl* const This=(impl*)((char*)(iface) - offsetof(impl,field))
static
const
SAFEARRAYBOUND
ArrayBound
=
{
1
,
0
};
typedef
struct
IOleClientSiteImpl
{
const
IOleClientSiteVtbl
*
lpVtbl
;
const
IOleInPlaceSiteVtbl
*
lpvtblOleInPlaceSite
;
const
IOleInPlaceFrameVtbl
*
lpvtblOleInPlaceFrame
;
const
IDocHostUIHandlerVtbl
*
lpvtblDocHostUIHandler
;
/* IOleClientSiteImpl data */
IOleObject
*
pBrowserObject
;
LONG
ref
;
/* IOleInPlaceFrame data */
HWND
hwndWindow
;
}
IOleClientSiteImpl
;
static
HRESULT
STDMETHODCALLTYPE
Site_QueryInterface
(
IOleClientSite
*
iface
,
REFIID
riid
,
void
**
ppvObj
)
{
ICOM_THIS_MULTI
(
IOleClientSiteImpl
,
lpVtbl
,
iface
);
*
ppvObj
=
NULL
;
if
(
IsEqualIID
(
riid
,
&
IID_IUnknown
)
||
IsEqualIID
(
riid
,
&
IID_IOleClientSite
))
{
*
ppvObj
=
This
;
}
else
if
(
IsEqualIID
(
riid
,
&
IID_IOleInPlaceSite
))
{
*
ppvObj
=
&
(
This
->
lpvtblOleInPlaceSite
);
}
else
if
(
IsEqualIID
(
riid
,
&
IID_IDocHostUIHandler
))
{
*
ppvObj
=
&
(
This
->
lpvtblDocHostUIHandler
);
}
else
return
E_NOINTERFACE
;
return
S_OK
;
}
static
ULONG
STDMETHODCALLTYPE
Site_AddRef
(
IOleClientSite
*
iface
)
{
ICOM_THIS_MULTI
(
IOleClientSiteImpl
,
lpVtbl
,
iface
);
return
InterlockedIncrement
(
&
This
->
ref
);
}
static
ULONG
STDMETHODCALLTYPE
Site_Release
(
IOleClientSite
*
iface
)
{
ICOM_THIS_MULTI
(
IOleClientSiteImpl
,
lpVtbl
,
iface
);
LONG
refCount
=
InterlockedDecrement
(
&
This
->
ref
);
if
(
refCount
)
return
refCount
;
HeapFree
(
GetProcessHeap
(),
0
,
This
);
return
0
;
}
static
HRESULT
STDMETHODCALLTYPE
Site_SaveObject
(
IOleClientSite
*
iface
)
{
return
E_NOTIMPL
;
}
static
HRESULT
STDMETHODCALLTYPE
Site_GetMoniker
(
IOleClientSite
*
iface
,
DWORD
dwAssign
,
DWORD
dwWhichMoniker
,
IMoniker
**
ppmk
)
{
return
E_NOTIMPL
;
}
static
HRESULT
STDMETHODCALLTYPE
Site_GetContainer
(
IOleClientSite
*
iface
,
LPOLECONTAINER
*
ppContainer
)
{
*
ppContainer
=
NULL
;
return
E_NOINTERFACE
;
}
static
HRESULT
STDMETHODCALLTYPE
Site_ShowObject
(
IOleClientSite
*
iface
)
{
return
NOERROR
;
}
static
HRESULT
STDMETHODCALLTYPE
Site_OnShowWindow
(
IOleClientSite
*
iface
,
BOOL
fShow
)
{
return
E_NOTIMPL
;
}
static
HRESULT
STDMETHODCALLTYPE
Site_RequestNewObjectLayout
(
IOleClientSite
*
iface
)
{
return
E_NOTIMPL
;
}
static
const
IOleClientSiteVtbl
MyIOleClientSiteTable
=
{
Site_QueryInterface
,
Site_AddRef
,
Site_Release
,
Site_SaveObject
,
Site_GetMoniker
,
Site_GetContainer
,
Site_ShowObject
,
Site_OnShowWindow
,
Site_RequestNewObjectLayout
};
static
HRESULT
STDMETHODCALLTYPE
UI_QueryInterface
(
IDocHostUIHandler
*
iface
,
REFIID
riid
,
LPVOID
*
ppvObj
)
{
ICOM_THIS_MULTI
(
IOleClientSiteImpl
,
lpvtblDocHostUIHandler
,
iface
);
return
Site_QueryInterface
((
IOleClientSite
*
)
This
,
riid
,
ppvObj
);
}
static
ULONG
STDMETHODCALLTYPE
UI_AddRef
(
IDocHostUIHandler
*
iface
)
{
return
1
;
}
static
ULONG
STDMETHODCALLTYPE
UI_Release
(
IDocHostUIHandler
*
iface
)
{
return
2
;
}
static
HRESULT
STDMETHODCALLTYPE
UI_ShowContextMenu
(
IDocHostUIHandler
*
iface
,
DWORD
dwID
,
POINT
*
ppt
,
IUnknown
*
pcmdtReserved
,
IDispatch
*
pdispReserved
)
{
return
S_OK
;
}
static
HRESULT
STDMETHODCALLTYPE
UI_GetHostInfo
(
IDocHostUIHandler
*
iface
,
DOCHOSTUIINFO
*
pInfo
)
{
pInfo
->
cbSize
=
sizeof
(
DOCHOSTUIINFO
);
pInfo
->
dwFlags
=
DOCHOSTUIFLAG_NO3DBORDER
;
pInfo
->
dwDoubleClick
=
DOCHOSTUIDBLCLK_DEFAULT
;
return
S_OK
;
}
static
HRESULT
STDMETHODCALLTYPE
UI_ShowUI
(
IDocHostUIHandler
*
iface
,
DWORD
dwID
,
IOleInPlaceActiveObject
*
pActiveObject
,
IOleCommandTarget
*
pCommandTarget
,
IOleInPlaceFrame
*
pFrame
,
IOleInPlaceUIWindow
*
pDoc
)
{
return
S_OK
;
}
static
HRESULT
STDMETHODCALLTYPE
UI_HideUI
(
IDocHostUIHandler
*
iface
)
{
return
S_OK
;
}
static
HRESULT
STDMETHODCALLTYPE
UI_UpdateUI
(
IDocHostUIHandler
*
iface
)
{
return
S_OK
;
}
static
HRESULT
STDMETHODCALLTYPE
UI_EnableModeless
(
IDocHostUIHandler
*
iface
,
BOOL
fEnable
)
{
return
S_OK
;
}
static
HRESULT
STDMETHODCALLTYPE
UI_OnDocWindowActivate
(
IDocHostUIHandler
*
iface
,
BOOL
fActivate
)
{
return
S_OK
;
}
static
HRESULT
STDMETHODCALLTYPE
UI_OnFrameWindowActivate
(
IDocHostUIHandler
*
iface
,
BOOL
fActivate
)
{
return
S_OK
;
}
static
HRESULT
STDMETHODCALLTYPE
UI_ResizeBorder
(
IDocHostUIHandler
*
iface
,
LPCRECT
prcBorder
,
IOleInPlaceUIWindow
*
pUIWindow
,
BOOL
fRameWindow
)
{
return
S_OK
;
}
static
HRESULT
STDMETHODCALLTYPE
UI_TranslateAccelerator
(
IDocHostUIHandler
*
iface
,
LPMSG
lpMsg
,
const
GUID
*
pguidCmdGroup
,
DWORD
nCmdID
)
{
return
S_FALSE
;
}
static
HRESULT
STDMETHODCALLTYPE
UI_GetOptionKeyPath
(
IDocHostUIHandler
*
iface
,
LPOLESTR
*
pchKey
,
DWORD
dw
)
{
return
S_FALSE
;
}
static
HRESULT
STDMETHODCALLTYPE
UI_GetDropTarget
(
IDocHostUIHandler
*
iface
,
IDropTarget
*
pDropTarget
,
IDropTarget
**
ppDropTarget
)
{
return
S_FALSE
;
}
static
HRESULT
STDMETHODCALLTYPE
UI_GetExternal
(
IDocHostUIHandler
*
iface
,
IDispatch
**
ppDispatch
)
{
*
ppDispatch
=
NULL
;
return
S_FALSE
;
}
static
HRESULT
STDMETHODCALLTYPE
UI_TranslateUrl
(
IDocHostUIHandler
*
iface
,
DWORD
dwTranslate
,
OLECHAR
*
pchURLIn
,
OLECHAR
**
ppchURLOut
)
{
*
ppchURLOut
=
NULL
;
return
S_FALSE
;
}
static
HRESULT
STDMETHODCALLTYPE
UI_FilterDataObject
(
IDocHostUIHandler
*
iface
,
IDataObject
*
pDO
,
IDataObject
**
ppDORet
)
{
*
ppDORet
=
NULL
;
return
S_FALSE
;
}
static
const
IDocHostUIHandlerVtbl
MyIDocHostUIHandlerTable
=
{
UI_QueryInterface
,
UI_AddRef
,
UI_Release
,
UI_ShowContextMenu
,
UI_GetHostInfo
,
UI_ShowUI
,
UI_HideUI
,
UI_UpdateUI
,
UI_EnableModeless
,
UI_OnDocWindowActivate
,
UI_OnFrameWindowActivate
,
UI_ResizeBorder
,
UI_TranslateAccelerator
,
UI_GetOptionKeyPath
,
UI_GetDropTarget
,
UI_GetExternal
,
UI_TranslateUrl
,
UI_FilterDataObject
};
static
HRESULT
STDMETHODCALLTYPE
InPlace_QueryInterface
(
IOleInPlaceSite
*
iface
,
REFIID
riid
,
LPVOID
*
ppvObj
)
{
ICOM_THIS_MULTI
(
IOleClientSiteImpl
,
lpvtblOleInPlaceSite
,
iface
);
return
Site_QueryInterface
((
IOleClientSite
*
)
This
,
riid
,
ppvObj
);
}
static
ULONG
STDMETHODCALLTYPE
InPlace_AddRef
(
IOleInPlaceSite
*
iface
)
{
return
1
;
}
static
ULONG
STDMETHODCALLTYPE
InPlace_Release
(
IOleInPlaceSite
*
iface
)
{
return
2
;
}
static
HRESULT
STDMETHODCALLTYPE
InPlace_GetWindow
(
IOleInPlaceSite
*
iface
,
HWND
*
lphwnd
)
{
ICOM_THIS_MULTI
(
IOleClientSiteImpl
,
lpvtblOleInPlaceSite
,
iface
);
*
lphwnd
=
This
->
hwndWindow
;
return
S_OK
;
}
static
HRESULT
STDMETHODCALLTYPE
InPlace_ContextSensitiveHelp
(
IOleInPlaceSite
*
iface
,
BOOL
fEnterMode
)
{
return
E_NOTIMPL
;
}
static
HRESULT
STDMETHODCALLTYPE
InPlace_CanInPlaceActivate
(
IOleInPlaceSite
*
iface
)
{
return
S_OK
;
}
static
HRESULT
STDMETHODCALLTYPE
InPlace_OnInPlaceActivate
(
IOleInPlaceSite
*
iface
)
{
return
S_OK
;
}
static
HRESULT
STDMETHODCALLTYPE
InPlace_OnUIActivate
(
IOleInPlaceSite
*
iface
)
{
return
S_OK
;
}
static
HRESULT
STDMETHODCALLTYPE
InPlace_GetWindowContext
(
IOleInPlaceSite
*
iface
,
LPOLEINPLACEFRAME
*
lplpFrame
,
LPOLEINPLACEUIWINDOW
*
lplpDoc
,
LPRECT
lprcPosRect
,
LPRECT
lprcClipRect
,
LPOLEINPLACEFRAMEINFO
lpFrameInfo
)
{
ICOM_THIS_MULTI
(
IOleClientSiteImpl
,
lpvtblOleInPlaceSite
,
iface
);
*
lplpFrame
=
(
LPOLEINPLACEFRAME
)
&
This
->
lpvtblOleInPlaceFrame
;
*
lplpDoc
=
NULL
;
lpFrameInfo
->
fMDIApp
=
FALSE
;
lpFrameInfo
->
hwndFrame
=
This
->
hwndWindow
;
lpFrameInfo
->
haccel
=
NULL
;
lpFrameInfo
->
cAccelEntries
=
0
;
return
S_OK
;
}
static
HRESULT
STDMETHODCALLTYPE
InPlace_Scroll
(
IOleInPlaceSite
*
iface
,
SIZE
scrollExtent
)
{
return
E_NOTIMPL
;
}
static
HRESULT
STDMETHODCALLTYPE
InPlace_OnUIDeactivate
(
IOleInPlaceSite
*
iface
,
BOOL
fUndoable
)
{
return
S_OK
;
}
static
HRESULT
STDMETHODCALLTYPE
InPlace_OnInPlaceDeactivate
(
IOleInPlaceSite
*
iface
)
{
return
S_OK
;
}
static
HRESULT
STDMETHODCALLTYPE
InPlace_DiscardUndoState
(
IOleInPlaceSite
*
iface
)
{
return
E_NOTIMPL
;
}
static
HRESULT
STDMETHODCALLTYPE
InPlace_DeactivateAndUndo
(
IOleInPlaceSite
*
iface
)
{
return
E_NOTIMPL
;
}
static
HRESULT
STDMETHODCALLTYPE
InPlace_OnPosRectChange
(
IOleInPlaceSite
*
iface
,
LPCRECT
lprcPosRect
)
{
ICOM_THIS_MULTI
(
IOleClientSiteImpl
,
lpvtblOleInPlaceSite
,
iface
);
IOleInPlaceObject
*
inplace
;
if
(
!
IOleObject_QueryInterface
(
This
->
pBrowserObject
,
&
IID_IOleInPlaceObject
,
(
void
**
)
&
inplace
))
IOleInPlaceObject_SetObjectRects
(
inplace
,
lprcPosRect
,
lprcPosRect
);
return
S_OK
;
}
static
const
IOleInPlaceSiteVtbl
MyIOleInPlaceSiteTable
=
{
InPlace_QueryInterface
,
InPlace_AddRef
,
InPlace_Release
,
InPlace_GetWindow
,
InPlace_ContextSensitiveHelp
,
InPlace_CanInPlaceActivate
,
InPlace_OnInPlaceActivate
,
InPlace_OnUIActivate
,
InPlace_GetWindowContext
,
InPlace_Scroll
,
InPlace_OnUIDeactivate
,
InPlace_OnInPlaceDeactivate
,
InPlace_DiscardUndoState
,
InPlace_DeactivateAndUndo
,
InPlace_OnPosRectChange
};
static
HRESULT
STDMETHODCALLTYPE
Frame_QueryInterface
(
IOleInPlaceFrame
*
iface
,
REFIID
riid
,
LPVOID
*
ppvObj
)
{
return
E_NOTIMPL
;
}
static
ULONG
STDMETHODCALLTYPE
Frame_AddRef
(
IOleInPlaceFrame
*
iface
)
{
return
1
;
}
static
ULONG
STDMETHODCALLTYPE
Frame_Release
(
IOleInPlaceFrame
*
iface
)
{
return
2
;
}
static
HRESULT
STDMETHODCALLTYPE
Frame_GetWindow
(
IOleInPlaceFrame
*
iface
,
HWND
*
lphwnd
)
{
ICOM_THIS_MULTI
(
IOleClientSiteImpl
,
lpvtblOleInPlaceFrame
,
iface
);
*
lphwnd
=
This
->
hwndWindow
;
return
S_OK
;
}
static
HRESULT
STDMETHODCALLTYPE
Frame_ContextSensitiveHelp
(
IOleInPlaceFrame
*
iface
,
BOOL
fEnterMode
)
{
return
E_NOTIMPL
;
}
static
HRESULT
STDMETHODCALLTYPE
Frame_GetBorder
(
IOleInPlaceFrame
*
iface
,
LPRECT
lprectBorder
)
{
return
E_NOTIMPL
;
}
static
HRESULT
STDMETHODCALLTYPE
Frame_RequestBorderSpace
(
IOleInPlaceFrame
*
iface
,
LPCBORDERWIDTHS
pborderwidths
)
{
return
E_NOTIMPL
;
}
static
HRESULT
STDMETHODCALLTYPE
Frame_SetBorderSpace
(
IOleInPlaceFrame
*
iface
,
LPCBORDERWIDTHS
pborderwidths
)
{
return
E_NOTIMPL
;
}
static
HRESULT
STDMETHODCALLTYPE
Frame_SetActiveObject
(
IOleInPlaceFrame
*
iface
,
IOleInPlaceActiveObject
*
pActiveObject
,
LPCOLESTR
pszObjName
)
{
return
S_OK
;
}
static
HRESULT
STDMETHODCALLTYPE
Frame_InsertMenus
(
IOleInPlaceFrame
*
iface
,
HMENU
hmenuShared
,
LPOLEMENUGROUPWIDTHS
lpMenuWidths
)
{
return
E_NOTIMPL
;
}
static
HRESULT
STDMETHODCALLTYPE
Frame_SetMenu
(
IOleInPlaceFrame
*
iface
,
HMENU
hmenuShared
,
HOLEMENU
holemenu
,
HWND
hwndActiveObject
)
{
return
S_OK
;
}
static
HRESULT
STDMETHODCALLTYPE
Frame_RemoveMenus
(
IOleInPlaceFrame
*
iface
,
HMENU
hmenuShared
)
{
return
E_NOTIMPL
;
}
static
HRESULT
STDMETHODCALLTYPE
Frame_SetStatusText
(
IOleInPlaceFrame
*
iface
,
LPCOLESTR
pszStatusText
)
{
return
S_OK
;
}
static
HRESULT
STDMETHODCALLTYPE
Frame_EnableModeless
(
IOleInPlaceFrame
*
iface
,
BOOL
fEnable
)
{
return
S_OK
;
}
static
HRESULT
STDMETHODCALLTYPE
Frame_TranslateAccelerator
(
IOleInPlaceFrame
*
iface
,
LPMSG
lpmsg
,
WORD
wID
)
{
return
E_NOTIMPL
;
}
static
const
IOleInPlaceFrameVtbl
MyIOleInPlaceFrameTable
=
{
Frame_QueryInterface
,
Frame_AddRef
,
Frame_Release
,
Frame_GetWindow
,
Frame_ContextSensitiveHelp
,
Frame_GetBorder
,
Frame_RequestBorderSpace
,
Frame_SetBorderSpace
,
Frame_SetActiveObject
,
Frame_InsertMenus
,
Frame_SetMenu
,
Frame_RemoveMenus
,
Frame_SetStatusText
,
Frame_EnableModeless
,
Frame_TranslateAccelerator
};
static
HRESULT
STDMETHODCALLTYPE
Storage_QueryInterface
(
IStorage
*
This
,
REFIID
riid
,
LPVOID
*
ppvObj
)
{
return
E_NOTIMPL
;
}
static
ULONG
STDMETHODCALLTYPE
Storage_AddRef
(
IStorage
*
This
)
{
return
1
;
}
static
ULONG
STDMETHODCALLTYPE
Storage_Release
(
IStorage
*
This
)
{
return
2
;
}
static
HRESULT
STDMETHODCALLTYPE
Storage_CreateStream
(
IStorage
*
This
,
const
WCHAR
*
pwcsName
,
DWORD
grfMode
,
DWORD
reserved1
,
DWORD
reserved2
,
IStream
**
ppstm
)
{
return
E_NOTIMPL
;
}
static
HRESULT
STDMETHODCALLTYPE
Storage_OpenStream
(
IStorage
*
This
,
const
WCHAR
*
pwcsName
,
void
*
reserved1
,
DWORD
grfMode
,
DWORD
reserved2
,
IStream
**
ppstm
)
{
return
E_NOTIMPL
;
}
static
HRESULT
STDMETHODCALLTYPE
Storage_CreateStorage
(
IStorage
*
This
,
const
WCHAR
*
pwcsName
,
DWORD
grfMode
,
DWORD
reserved1
,
DWORD
reserved2
,
IStorage
**
ppstg
)
{
return
E_NOTIMPL
;
}
static
HRESULT
STDMETHODCALLTYPE
Storage_OpenStorage
(
IStorage
*
This
,
const
WCHAR
*
pwcsName
,
IStorage
*
pstgPriority
,
DWORD
grfMode
,
SNB
snbExclude
,
DWORD
reserved
,
IStorage
**
ppstg
)
{
return
E_NOTIMPL
;
}
static
HRESULT
STDMETHODCALLTYPE
Storage_CopyTo
(
IStorage
*
This
,
DWORD
ciidExclude
,
IID
const
*
rgiidExclude
,
SNB
snbExclude
,
IStorage
*
pstgDest
)
{
return
E_NOTIMPL
;
}
static
HRESULT
STDMETHODCALLTYPE
Storage_MoveElementTo
(
IStorage
*
This
,
const
OLECHAR
*
pwcsName
,
IStorage
*
pstgDest
,
const
OLECHAR
*
pwcsNewName
,
DWORD
grfFlags
)
{
return
E_NOTIMPL
;
}
static
HRESULT
STDMETHODCALLTYPE
Storage_Commit
(
IStorage
*
This
,
DWORD
grfCommitFlags
)
{
return
E_NOTIMPL
;
}
static
HRESULT
STDMETHODCALLTYPE
Storage_Revert
(
IStorage
*
This
)
{
return
E_NOTIMPL
;
}
static
HRESULT
STDMETHODCALLTYPE
Storage_EnumElements
(
IStorage
*
This
,
DWORD
reserved1
,
void
*
reserved2
,
DWORD
reserved3
,
IEnumSTATSTG
**
ppenum
)
{
return
E_NOTIMPL
;
}
static
HRESULT
STDMETHODCALLTYPE
Storage_DestroyElement
(
IStorage
*
This
,
const
OLECHAR
*
pwcsName
)
{
return
E_NOTIMPL
;
}
static
HRESULT
STDMETHODCALLTYPE
Storage_RenameElement
(
IStorage
*
This
,
const
WCHAR
*
pwcsOldName
,
const
WCHAR
*
pwcsNewName
)
{
return
E_NOTIMPL
;
}
static
HRESULT
STDMETHODCALLTYPE
Storage_SetElementTimes
(
IStorage
*
This
,
const
WCHAR
*
pwcsName
,
FILETIME
const
*
pctime
,
FILETIME
const
*
patime
,
FILETIME
const
*
pmtime
)
{
return
E_NOTIMPL
;
}
static
HRESULT
STDMETHODCALLTYPE
Storage_SetClass
(
IStorage
*
This
,
REFCLSID
clsid
)
{
return
S_OK
;
}
static
HRESULT
STDMETHODCALLTYPE
Storage_SetStateBits
(
IStorage
*
This
,
DWORD
grfStateBits
,
DWORD
grfMask
)
{
return
E_NOTIMPL
;
}
static
HRESULT
STDMETHODCALLTYPE
Storage_Stat
(
IStorage
*
This
,
STATSTG
*
pstatstg
,
DWORD
grfStatFlag
)
{
return
E_NOTIMPL
;
}
static
const
IStorageVtbl
MyIStorageTable
=
{
Storage_QueryInterface
,
Storage_AddRef
,
Storage_Release
,
Storage_CreateStream
,
Storage_OpenStream
,
Storage_CreateStorage
,
Storage_OpenStorage
,
Storage_CopyTo
,
Storage_MoveElementTo
,
Storage_Commit
,
Storage_Revert
,
Storage_EnumElements
,
Storage_DestroyElement
,
Storage_RenameElement
,
Storage_SetElementTimes
,
Storage_SetClass
,
Storage_SetStateBits
,
Storage_Stat
};
static
IStorage
MyIStorage
=
{
&
MyIStorageTable
};
BOOL
WB_EmbedBrowser
(
WBInfo
*
pWBInfo
,
HWND
hwndParent
)
{
IOleClientSiteImpl
*
iOleClientSiteImpl
;
IOleObject
*
browserObject
;
IWebBrowser2
*
webBrowser2
;
HRESULT
hr
;
RECT
rc
;
static
const
WCHAR
hostNameW
[]
=
{
'H'
,
'o'
,
's'
,
't'
,
' '
,
'N'
,
'a'
,
'm'
,
'e'
,
0
};
iOleClientSiteImpl
=
HeapAlloc
(
GetProcessHeap
(),
HEAP_ZERO_MEMORY
,
sizeof
(
IOleClientSiteImpl
));
if
(
!
iOleClientSiteImpl
)
return
FALSE
;
iOleClientSiteImpl
->
ref
=
0
;
iOleClientSiteImpl
->
lpVtbl
=
&
MyIOleClientSiteTable
;
iOleClientSiteImpl
->
lpvtblOleInPlaceSite
=
&
MyIOleInPlaceSiteTable
;
iOleClientSiteImpl
->
lpvtblOleInPlaceFrame
=
&
MyIOleInPlaceFrameTable
;
iOleClientSiteImpl
->
hwndWindow
=
hwndParent
;
iOleClientSiteImpl
->
lpvtblDocHostUIHandler
=
&
MyIDocHostUIHandlerTable
;
hr
=
OleCreate
(
&
CLSID_WebBrowser
,
&
IID_IOleObject
,
OLERENDER_DRAW
,
0
,
(
IOleClientSite
*
)
iOleClientSiteImpl
,
&
MyIStorage
,
(
void
**
)
&
browserObject
);
if
(
FAILED
(
hr
))
goto
error
;
/* make the browser object accessible to the IOleClientSite implementation */
iOleClientSiteImpl
->
pBrowserObject
=
browserObject
;
IOleObject_SetHostNames
(
browserObject
,
hostNameW
,
0
);
GetClientRect
(
hwndParent
,
&
rc
);
hr
=
OleSetContainedObject
((
struct
IUnknown
*
)
browserObject
,
TRUE
);
if
(
FAILED
(
hr
))
goto
error
;
hr
=
IOleObject_DoVerb
(
browserObject
,
OLEIVERB_SHOW
,
NULL
,
(
IOleClientSite
*
)
iOleClientSiteImpl
,
-
1
,
hwndParent
,
&
rc
);
if
(
FAILED
(
hr
))
goto
error
;
hr
=
IOleObject_QueryInterface
(
browserObject
,
&
IID_IWebBrowser2
,
(
void
**
)
&
webBrowser2
);
if
(
SUCCEEDED
(
hr
))
{
IWebBrowser2_put_Left
(
webBrowser2
,
0
);
IWebBrowser2_put_Top
(
webBrowser2
,
0
);
IWebBrowser2_put_Width
(
webBrowser2
,
rc
.
right
);
IWebBrowser2_put_Height
(
webBrowser2
,
rc
.
bottom
);
pWBInfo
->
pOleClientSite
=
(
IOleClientSite
*
)
iOleClientSiteImpl
;
pWBInfo
->
pBrowserObject
=
browserObject
;
pWBInfo
->
pWebBrowser2
=
webBrowser2
;
pWBInfo
->
hwndParent
=
hwndParent
;
return
TRUE
;
}
error:
WB_UnEmbedBrowser
(
pWBInfo
);
if
(
webBrowser2
)
IWebBrowser2_Release
(
webBrowser2
);
HeapFree
(
GetProcessHeap
(),
0
,
iOleClientSiteImpl
);
return
FALSE
;
}
void
WB_UnEmbedBrowser
(
WBInfo
*
pWBInfo
)
{
if
(
pWBInfo
->
pBrowserObject
)
{
IOleObject_Close
(
pWBInfo
->
pBrowserObject
,
OLECLOSE_NOSAVE
);
IOleObject_Release
(
pWBInfo
->
pBrowserObject
);
pWBInfo
->
pBrowserObject
=
NULL
;
}
if
(
pWBInfo
->
pWebBrowser2
)
{
IWebBrowser2_Release
(
pWBInfo
->
pWebBrowser2
);
pWBInfo
->
pWebBrowser2
=
NULL
;
}
if
(
pWBInfo
->
pOleClientSite
)
{
IOleClientSite_Release
(
pWBInfo
->
pOleClientSite
);
pWBInfo
->
pOleClientSite
=
NULL
;
}
}
BOOL
WB_Navigate
(
WBInfo
*
pWBInfo
,
LPCWSTR
szUrl
)
{
IWebBrowser2
*
pWebBrowser2
=
pWBInfo
->
pWebBrowser2
;
VARIANT
myURL
;
if
(
!
pWebBrowser2
)
return
FALSE
;
V_VT
(
&
myURL
)
=
VT_BSTR
;
V_BSTR
(
&
myURL
)
=
SysAllocString
(
szUrl
);
IWebBrowser2_Navigate2
(
pWebBrowser2
,
&
myURL
,
0
,
0
,
0
,
0
);
VariantClear
(
&
myURL
);
return
TRUE
;
}
void
WB_ResizeBrowser
(
WBInfo
*
pWBInfo
,
DWORD
dwWidth
,
DWORD
dwHeight
)
{
IWebBrowser2
*
pWebBrowser2
=
pWBInfo
->
pWebBrowser2
;
if
(
!
pWebBrowser2
)
return
;
IWebBrowser2_put_Width
(
pWebBrowser2
,
dwWidth
);
IWebBrowser2_put_Height
(
pWebBrowser2
,
dwHeight
);
}
void
WB_DoPageAction
(
WBInfo
*
pWBInfo
,
DWORD
dwAction
)
{
IWebBrowser2
*
pWebBrowser2
=
pWBInfo
->
pWebBrowser2
;
if
(
!
pWebBrowser2
)
return
;
switch
(
dwAction
)
{
case
WB_GOBACK
:
IWebBrowser2_GoBack
(
pWebBrowser2
);
break
;
case
WB_GOFORWARD
:
IWebBrowser2_GoForward
(
pWebBrowser2
);
break
;
case
WB_GOHOME
:
IWebBrowser2_GoHome
(
pWebBrowser2
);
break
;
case
WB_SEARCH
:
IWebBrowser2_GoSearch
(
pWebBrowser2
);
break
;
case
WB_REFRESH
:
IWebBrowser2_Refresh
(
pWebBrowser2
);
case
WB_STOP
:
IWebBrowser2_Stop
(
pWebBrowser2
);
}
}
dlls/hhctrl.ocx/webbrowser.h
0 → 100644
View file @
3e507e3c
/*
* WebBrowser Include
*
* Copyright 2005 James Hawkins
*
* 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#ifndef __WINE_WEBBROWSER_H
#define __WINE_WEBBROWSER_H
#include "exdisp.h"
#include "mshtml.h"
#include "mshtmhst.h"
#define WB_GOBACK 0
#define WB_GOFORWARD 1
#define WB_GOHOME 2
#define WB_SEARCH 3
#define WB_REFRESH 4
#define WB_STOP 5
typedef
struct
WBInfo
{
IOleClientSite
*
pOleClientSite
;
IWebBrowser2
*
pWebBrowser2
;
IOleObject
*
pBrowserObject
;
HWND
hwndParent
;
}
WBInfo
;
BOOL
WB_EmbedBrowser
(
WBInfo
*
pWBInfo
,
HWND
hwndParent
);
void
WB_UnEmbedBrowser
(
WBInfo
*
pWBInfo
);
BOOL
WB_Navigate
(
WBInfo
*
pWBInfo
,
LPCWSTR
szUrl
);
void
WB_ResizeBrowser
(
WBInfo
*
pWBInfo
,
DWORD
dwWidth
,
DWORD
dwHeight
);
void
WB_DoPageAction
(
WBInfo
*
pWBInfo
,
DWORD
dwAction
);
#endif
/* __WINE_WEBBROWSER_H */
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