From f05c860d23303a614216165f52ace4beb7c4c1f2 Mon Sep 17 00:00:00 2001 From: Jacek Caban Date: Mon, 18 Oct 2004 21:43:18 +0000 Subject: [PATCH] - Added dispinterfaces: DWebBrowserEvents and DWebBrowserEvents2. - Added coclass: WebBrowser. - Added exdispid.h. --- include/Makefile.in | 1 + include/exdisp.idl | 168 +++++++++++++++++++++++++++++++++++++++++++- include/exdispid.h | 66 +++++++++++++++++ 3 files changed, 232 insertions(+), 3 deletions(-) create mode 100644 include/exdispid.h diff --git a/include/Makefile.in b/include/Makefile.in index d5ec69af142..83a3e732a2e 100644 --- a/include/Makefile.in +++ b/include/Makefile.in @@ -106,6 +106,7 @@ WINDOWS_INCLUDES = \ dxfile.h \ evcode.h \ excpt.h \ + exdispid.h \ fci.h \ fdi.h \ guiddef.h \ diff --git a/include/exdisp.idl b/include/exdisp.idl index 4438e67de6b..acb143e4646 100644 --- a/include/exdisp.idl +++ b/include/exdisp.idl @@ -3,6 +3,7 @@ * * Copyright (C) 2001 John R. Sheets (for CodeWeavers) * Copyright (C) 2003 Alexandre Julliard + * Copuright (C) 2004 Jacek Caban * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -22,6 +23,7 @@ import "ocidl.idl"; import "docobj.idl"; +#include /***************************************************************************** * IWebBrowser interface @@ -154,6 +156,169 @@ interface IWebBrowser2 : IWebBrowserApp [propput] HRESULT Resizable([in] VARIANT_BOOL Value); } +[ + uuid(eab22ac2-30c1-11CF-a7eb-0000C05bae0b) +] +dispinterface DWebBrowserEvents +{ + properties: + methods: + [id(DISPID_BEFORENAVIGATE)] + void BeforeNavigate( + [in] BSTR URL, + [in] long Flags, + [in] BSTR TargetFrameName, + [in] VARIANT *PostData, + [in] BSTR Headers, + [in, out] VARIANT_BOOL *Cancel); + + [id(DISPID_NAVIGATECOMPLETE)] + void NavigateComplete([in] BSTR URL); + + [id(DISPID_STATUSTEXTCHANGE)] + void StatusTextChange([in] BSTR Text); + + [id(DISPID_PROGRESSCHANGE)] + void ProgressChange([in] long Progress, [in] long ProgressMax); + + [id(DISPID_DOWNLOADCOMPLETE)] + void DownloadComplete(); + + [id(DISPID_COMMANDSTATECHANGE)] + void CommandStateChange([in] long Command, [in]VARIANT_BOOL Enable); + + [id(DISPID_DOWNLOADBEGIN)] + void DownloadBegin(); + + [id(DISPID_NEWWINDOW)] + void NewWindow( + [in] BSTR URL, + [in] long Flags, + [in] BSTR TargetFrameName, + [in] VARIANT *PostData, + [in] BSTR Headers, + [in,out] VARIANT_BOOL *Processed); + + [id(DISPID_TITLECHANGE)] + void TitleChange([in] BSTR Text); + + [id(DISPID_FRAMEBEFORENAVIGATE)] + void FrameBeforeNavigate( + [in] BSTR URL, + [in] long Flags, + [in] BSTR TargetFrameName, + [in] VARIANT *PostData, + [in] BSTR Headers, + [in, out]VARIANT_BOOL *Cancel); + + [id(DISPID_FRAMENAVIGATECOMPLETE)] + void FrameNavigateComplete([in] BSTR URL); + + [id(DISPID_FRAMENEWWINDOW)] + void FrameNewWindow( + [in] BSTR URL, + [in] long Flags, + [in] BSTR TargetFrameName, + [in] VARIANT *PostData, + [in] BSTR Headers, + [in,out] VARIANT_BOOL *Processed); + + [id(DISPID_QUIT)] + void Quit([in, out] VARIANT_BOOL *Cancel); + + [id(DISPID_WINDOWMOVE)] + void WindowMove(); + + [id(DISPID_WINDOWRESIZE)] + void WindowResize(); + + [id(DISPID_WINDOWACTIVATE)] + void WindowActivate(); + + [id(DISPID_PROPERTYCHANGE)] + void PropertyChange([in] BSTR Property); +} + +[ + uuid(34a715a0-6587-11d0-924a-0020afc7ac4d) +] +dispinterface DWebBrowserEvents2 +{ + properties: + methods: + [id(DISPID_STATUSTEXTCHANGE)] + void StatusTextChange([in] BSTR Text); + + [id(DISPID_PROGRESSCHANGE)] + void ProgressChange([in] long Progress, [in] long ProgressMax); + + [id(DISPID_COMMANDSTATECHANGE)] + void CommandStateChange([in] long Command, [in] VARIANT_BOOL Enable); + + [id(DISPID_DOWNLOADBEGIN)] + void DownloadBegin(); + + [id(DISPID_DOWNLOADCOMPLETE)] + void DownloadComplete(); + + [id(DISPID_TITLECHANGE)] + void TitleChange([in] BSTR szProperty); + + [id(DISPID_PROPERTYCHANGE)] + void PropertyChange([in] BSTR szProperty); + + [id(DISPID_BEFORENAVIGATE2)] + void BeforeNavigate2( + [in] IDispatch *pDisp, + [in] VARIANT *URL, + [in] VARIANT *Flags, + [in] VARIANT *TargetFrameName, + [in] VARIANT *PostData, + [in] VARIANT *Headers, + [in, out] VARIANT_BOOL *Cancel); + + [id(DISPID_NEWWINDOW2)] + void NewWindow2([in, out] IDispatch **ppDisp, [in, out] VARIANT_BOOL *Cancel); + + [id(DISPID_NAVIGATECOMPLETE2)] + void NavigateComplete2([in] IDispatch *pDisp, [in] VARIANT *URL); + + [id(DISPID_DOCUMENTCOMPLETE)] + void DocumentComplete([in] IDispatch *pDisp, [in] VARIANT *URL); + + [id(DISPID_ONQUIT)] + void OnQuit(); + + [id(DISPID_ONVISIBLE)] + void OnVisible([in] VARIANT_BOOL Visible); + + [id(DISPID_ONTOOLBAR)] + void OnToolBar([in] VARIANT_BOOL ToolBar); + + [id(DISPID_ONMENUBAR)] + void OnMenuBar([in] VARIANT_BOOL MenuBar); + + [id(DISPID_ONSTATUSBAR)] + void OnStatusBar([in] VARIANT_BOOL StatusBar); + + [id(DISPID_ONFULLSCREEN)] + void OnFullScreen([in] VARIANT_BOOL FullScreen); + + [id(DISPID_ONTHEATERMODE)] + void OnTheaterMode([in] VARIANT_BOOL TheaterMode); +} + +[ + uuid(8856f961-340a-11d0-a96b-00c04fd705a2) +] +coclass WebBrowser +{ + [default] interface IWebBrowser2; + interface IWebBrowser; + [default, source] dispinterface DWebBrowserEvents2; + [source] dispinterface DWebBrowserEvents; +} + [ object, oleautomation, @@ -177,6 +342,3 @@ interface IShellWindows : IDispatch HRESULT OnCreated( [in] long lCookie, [in] IUnknown *punk ); HRESULT ProcessAttachDetach( [in] VARIANT_BOOL fAttach ); } - -/* FIXME */ -cpp_quote("DEFINE_GUID(CLSID_WebBrowser, 0x8856f961, 0x340a, 0x11d0, 0xa9, 0x6b, 0x00, 0xc0, 0x4f, 0xd7, 0x05, 0xa2);") diff --git a/include/exdispid.h b/include/exdispid.h new file mode 100644 index 00000000000..91b2c94ffb4 --- /dev/null +++ b/include/exdispid.h @@ -0,0 +1,66 @@ +/* + * Copyright 2004 Jacek Caban + * + * 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 EXDISPID_H_ +#define EXDISPID_H_ + +#define DISPID_BEFORENAVIGATE 100 +#define DISPID_NAVIGATECOMPLETE 101 +#define DISPID_STATUSTEXTCHANGE 102 +#define DISPID_QUIT 103 +#define DISPID_DOWNLOADCOMPLETE 104 +#define DISPID_COMMANDSTATECHANGE 105 +#define DISPID_DOWNLOADBEGIN 106 +#define DISPID_NEWWINDOW 107 +#define DISPID_PROGRESSCHANGE 108 +#define DISPID_WINDOWMOVE 109 +#define DISPID_WINDOWRESIZE 110 +#define DISPID_WINDOWACTIVATE 111 +#define DISPID_PROPERTYCHANGE 112 +#define DISPID_TITLECHANGE 113 +#define DISPID_FRAMEBEFORENAVIGATE 200 +#define DISPID_FRAMENAVIGATECOMPLETE 201 +#define DISPID_FRAMENEWWINDOW 204 +#define DISPID_BEFORENAVIGATE2 250 +#define DISPID_NEWWINDOW2 251 +#define DISPID_NAVIGATECOMPLETE2 252 +#define DISPID_ONQUIT 253 +#define DISPID_ONVISIBLE 254 +#define DISPID_ONTOOLBAR 255 +#define DISPID_ONMENUBAR 256 +#define DISPID_ONSTATUSBAR 257 +#define DISPID_ONFULLSCREEN 258 +#define DISPID_DOCUMENTCOMPLETE 259 +#define DISPID_ONTHEATERMODE 260 +#define DISPID_ONADDRESSBAR 261 + +#define DISPID_SELECTIONCHANGED 200 + +#define DISPID_WINDOWREGISTERED 200 +#define DISPID_WINDOWREVOKED 201 + +#define DISPID_RESETFIRSTBOOTMODE 1 +#define DISPID_RESETSAFEMODE 2 +#define DISPID_REFRESHOFFLINEDESKTOP 3 +#define DISPID_ADDFAVORITE 4 +#define DISPID_ADDCHANNEL 5 +#define DISPID_ADDDESKTOPCOMPONENT 6 +#define DISPID_ISSUBSCRIBED 7 +#define DISPID_SHELLUIHELPERLAST 7 + +#endif /* EXDISPID_H_ */