From b880db8491271b4bd4aa87c2dd79b5e3c3dde6cf Mon Sep 17 00:00:00 2001 From: watcherhd Date: Thu, 17 Nov 2011 18:46:23 +0000 Subject: added: ieview, imo2sproxy, skype git-svn-id: http://miranda-plugins.googlecode.com/svn/trunk@175 e753b5eb-9565-29b2-b5c5-2cc6f99dfbcb --- ieview/IEView.h | 566 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 566 insertions(+) create mode 100644 ieview/IEView.h (limited to 'ieview/IEView.h') diff --git a/ieview/IEView.h b/ieview/IEView.h new file mode 100644 index 0000000..b6f93a3 --- /dev/null +++ b/ieview/IEView.h @@ -0,0 +1,566 @@ +/* + +IEView Plugin for Miranda IM +Copyright (C) 2005-2010 Piotr Piastucki + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program 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 General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ +class IEView; + +#ifndef IEVIEW_INCLUDED +#define IEVIEW_INCLUDED + +#include "ieview_common.h" +#include "HTMLBuilder.h" +//#include "SmileyWindow.h" + +static const CLSID CLSID_MozillaBrowser= +{ 0x1339B54C, 0x3453, 0x11D2, + { 0x93, 0xB9, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00 } }; + +#ifndef DISPID_AMBIENT_DLCONTROL +#define DISPID_AMBIENT_DLCONTROL (-5512) +#endif + +#ifndef __IDocHostUIHandler_INTERFACE_DEFINED__ +#define __IDocHostUIHandler_INTERFACE_DEFINED__ + + +typedef struct _DOCHOSTUIINFO + { + ULONG cbSize; + DWORD dwFlags; + DWORD dwDoubleClick; + OLECHAR *pchHostCss; + OLECHAR *pchHostNS; + } DOCHOSTUIINFO; + + +const IID IID_IDocHostUIHandler ={0xbd3f23c0,0xd43e,0x11CF,{0x89, 0x3b, 0x00, 0xaa, 0x00, 0xbd, 0xce, 0x1a}}; + + MIDL_INTERFACE("bd3f23c0-d43e-11cf-893b-00aa00bdce1a") + IDocHostUIHandler : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE ShowContextMenu( + /* [in] */ DWORD dwID, + /* [in] */ POINT *ppt, + /* [in] */ IUnknown *pcmdtReserved, + /* [in] */ IDispatch *pdispReserved) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetHostInfo( + /* [out][in] */ DOCHOSTUIINFO *pInfo) = 0; + + virtual HRESULT STDMETHODCALLTYPE ShowUI( + /* [in] */ DWORD dwID, + /* [in] */ IOleInPlaceActiveObject *pActiveObject, + /* [in] */ IOleCommandTarget *pCommandTarget, + /* [in] */ IOleInPlaceFrame *pFrame, + /* [in] */ IOleInPlaceUIWindow *pDoc) = 0; + + virtual HRESULT STDMETHODCALLTYPE HideUI( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE UpdateUI( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE EnableModeless( + /* [in] */ BOOL fEnable) = 0; + + virtual HRESULT STDMETHODCALLTYPE OnDocWindowActivate( + /* [in] */ BOOL fActivate) = 0; + + virtual HRESULT STDMETHODCALLTYPE OnFrameWindowActivate( + /* [in] */ BOOL fActivate) = 0; + + virtual HRESULT STDMETHODCALLTYPE ResizeBorder( + /* [in] */ LPCRECT prcBorder, + /* [in] */ IOleInPlaceUIWindow *pUIWindow, + /* [in] */ BOOL fRameWindow) = 0; + + virtual HRESULT STDMETHODCALLTYPE TranslateAccelerator( + /* [in] */ LPMSG lpMsg, + /* [in] */ const GUID *pguidCmdGroup, + /* [in] */ DWORD nCmdID) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetOptionKeyPath( + /* [annotation][out] */ + LPOLESTR *pchKey, + /* [in] */ DWORD dw) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetDropTarget( + /* [in] */ IDropTarget *pDropTarget, + /* [out] */ IDropTarget **ppDropTarget) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetExternal( + /* [out] */ IDispatch **ppDispatch) = 0; + + virtual HRESULT STDMETHODCALLTYPE TranslateUrl( + /* [in] */ DWORD dwTranslate, + /* [annotation][in] */ + OLECHAR *pchURLIn, + /* [annotation][out] */ + OLECHAR **ppchURLOut) = 0; + + virtual HRESULT STDMETHODCALLTYPE FilterDataObject( + /* [in] */ IDataObject *pDO, + /* [out] */ IDataObject **ppDORet) = 0; + + }; + +typedef enum tagDOCHOSTUIFLAG + { DOCHOSTUIFLAG_DIALOG = 0x1, + DOCHOSTUIFLAG_DISABLE_HELP_MENU = 0x2, + DOCHOSTUIFLAG_NO3DBORDER = 0x4, + DOCHOSTUIFLAG_SCROLL_NO = 0x8, + DOCHOSTUIFLAG_DISABLE_SCRIPT_INACTIVE = 0x10, + DOCHOSTUIFLAG_OPENNEWWIN = 0x20, + DOCHOSTUIFLAG_DISABLE_OFFSCREEN = 0x40, + DOCHOSTUIFLAG_FLAT_SCROLLBAR = 0x80, + DOCHOSTUIFLAG_DIV_BLOCKDEFAULT = 0x100, + DOCHOSTUIFLAG_ACTIVATE_CLIENTHIT_ONLY = 0x200, + DOCHOSTUIFLAG_OVERRIDEBEHAVIORFACTORY = 0x400, + DOCHOSTUIFLAG_CODEPAGELINKEDFONTS = 0x800, + DOCHOSTUIFLAG_URL_ENCODING_DISABLE_UTF8 = 0x1000, + DOCHOSTUIFLAG_URL_ENCODING_ENABLE_UTF8 = 0x2000, + DOCHOSTUIFLAG_ENABLE_FORMS_AUTOCOMPLETE = 0x4000, + DOCHOSTUIFLAG_ENABLE_INPLACE_NAVIGATION = 0x10000, + DOCHOSTUIFLAG_IME_ENABLE_RECONVERSION = 0x20000, + DOCHOSTUIFLAG_THEME = 0x40000, + DOCHOSTUIFLAG_NOTHEME = 0x80000, + DOCHOSTUIFLAG_NOPICS = 0x100000, + DOCHOSTUIFLAG_NO3DOUTERBORDER = 0x200000, + DOCHOSTUIFLAG_DISABLE_EDIT_NS_FIXUP = 0x400000, + DOCHOSTUIFLAG_LOCAL_MACHINE_ACCESS_CHECK = 0x800000, + DOCHOSTUIFLAG_DISABLE_UNTRUSTEDPROTOCOL = 0x1000000, + DOCHOSTUIFLAG_HOST_NAVIGATES = 0x2000000, + DOCHOSTUIFLAG_ENABLE_REDIRECT_NOTIFICATION = 0x4000000, + DOCHOSTUIFLAG_USE_WINDOWLESS_SELECTCONTROL = 0x8000000, + DOCHOSTUIFLAG_USE_WINDOWED_SELECTCONTROL = 0x10000000, + DOCHOSTUIFLAG_ENABLE_ACTIVEX_INACTIVATE_MODE = 0x20000000, + DOCHOSTUIFLAG_DPI_AWARE = 0x40000000 + } DOCHOSTUIFLAG; + + +#endif /* __IDocHostUIHandler_INTERFACE_DEFINED__ */ + +#ifndef __IHTMLAnchorElement_INTERFACE_DEFINED__ +#define __IHTMLAnchorElement_INTERFACE_DEFINED__ + +/* interface IHTMLAnchorElement */ +/* [object][uuid][dual][oleautomation] */ + + +EXTERN_C const IID IID_IHTMLAnchorElement; + + + MIDL_INTERFACE("3050f1da-98b5-11cf-bb82-00aa00bdce0b") + IHTMLAnchorElement : public IDispatch + { + public: + virtual /* [bindable][displaybind][id][propput] */ HRESULT STDMETHODCALLTYPE put_href( + /* [in] */ BSTR v) = 0; + + virtual /* [bindable][displaybind][id][propget] */ HRESULT STDMETHODCALLTYPE get_href( + /* [out][retval] */ BSTR *p) = 0; + + virtual /* [bindable][displaybind][id][propput] */ HRESULT STDMETHODCALLTYPE put_target( + /* [in] */ BSTR v) = 0; + + virtual /* [bindable][displaybind][id][propget] */ HRESULT STDMETHODCALLTYPE get_target( + /* [out][retval] */ BSTR *p) = 0; + + virtual /* [bindable][displaybind][id][propput] */ HRESULT STDMETHODCALLTYPE put_rel( + /* [in] */ BSTR v) = 0; + + virtual /* [bindable][displaybind][id][propget] */ HRESULT STDMETHODCALLTYPE get_rel( + /* [out][retval] */ BSTR *p) = 0; + + virtual /* [bindable][displaybind][id][propput] */ HRESULT STDMETHODCALLTYPE put_rev( + /* [in] */ BSTR v) = 0; + + virtual /* [bindable][displaybind][id][propget] */ HRESULT STDMETHODCALLTYPE get_rev( + /* [out][retval] */ BSTR *p) = 0; + + virtual /* [bindable][displaybind][id][propput] */ HRESULT STDMETHODCALLTYPE put_urn( + /* [in] */ BSTR v) = 0; + + virtual /* [bindable][displaybind][id][propget] */ HRESULT STDMETHODCALLTYPE get_urn( + /* [out][retval] */ BSTR *p) = 0; + + virtual /* [bindable][displaybind][id][propput] */ HRESULT STDMETHODCALLTYPE put_Methods( + /* [in] */ BSTR v) = 0; + + virtual /* [bindable][displaybind][id][propget] */ HRESULT STDMETHODCALLTYPE get_Methods( + /* [out][retval] */ BSTR *p) = 0; + + virtual /* [bindable][displaybind][id][propput] */ HRESULT STDMETHODCALLTYPE put_name( + /* [in] */ BSTR v) = 0; + + virtual /* [bindable][displaybind][id][propget] */ HRESULT STDMETHODCALLTYPE get_name( + /* [out][retval] */ BSTR *p) = 0; + + virtual /* [id][propput] */ HRESULT STDMETHODCALLTYPE put_host( + /* [in] */ BSTR v) = 0; + + virtual /* [id][propget] */ HRESULT STDMETHODCALLTYPE get_host( + /* [out][retval] */ BSTR *p) = 0; + + virtual /* [id][propput] */ HRESULT STDMETHODCALLTYPE put_hostname( + /* [in] */ BSTR v) = 0; + + virtual /* [id][propget] */ HRESULT STDMETHODCALLTYPE get_hostname( + /* [out][retval] */ BSTR *p) = 0; + + virtual /* [id][propput] */ HRESULT STDMETHODCALLTYPE put_pathname( + /* [in] */ BSTR v) = 0; + + virtual /* [id][propget] */ HRESULT STDMETHODCALLTYPE get_pathname( + /* [out][retval] */ BSTR *p) = 0; + + virtual /* [id][propput] */ HRESULT STDMETHODCALLTYPE put_port( + /* [in] */ BSTR v) = 0; + + virtual /* [id][propget] */ HRESULT STDMETHODCALLTYPE get_port( + /* [out][retval] */ BSTR *p) = 0; + + virtual /* [id][propput] */ HRESULT STDMETHODCALLTYPE put_protocol( + /* [in] */ BSTR v) = 0; + + virtual /* [id][propget] */ HRESULT STDMETHODCALLTYPE get_protocol( + /* [out][retval] */ BSTR *p) = 0; + + virtual /* [id][propput] */ HRESULT STDMETHODCALLTYPE put_search( + /* [in] */ BSTR v) = 0; + + virtual /* [id][propget] */ HRESULT STDMETHODCALLTYPE get_search( + /* [out][retval] */ BSTR *p) = 0; + + virtual /* [id][propput] */ HRESULT STDMETHODCALLTYPE put_hash( + /* [in] */ BSTR v) = 0; + + virtual /* [id][propget] */ HRESULT STDMETHODCALLTYPE get_hash( + /* [out][retval] */ BSTR *p) = 0; + + virtual /* [bindable][displaybind][id][propput] */ HRESULT STDMETHODCALLTYPE put_onblur( + /* [in] */ VARIANT v) = 0; + + virtual /* [bindable][displaybind][id][propget] */ HRESULT STDMETHODCALLTYPE get_onblur( + /* [out][retval] */ VARIANT *p) = 0; + + virtual /* [bindable][displaybind][id][propput] */ HRESULT STDMETHODCALLTYPE put_onfocus( + /* [in] */ VARIANT v) = 0; + + virtual /* [bindable][displaybind][id][propget] */ HRESULT STDMETHODCALLTYPE get_onfocus( + /* [out][retval] */ VARIANT *p) = 0; + + virtual /* [bindable][displaybind][id][propput] */ HRESULT STDMETHODCALLTYPE put_accessKey( + /* [in] */ BSTR v) = 0; + + virtual /* [bindable][displaybind][id][propget] */ HRESULT STDMETHODCALLTYPE get_accessKey( + /* [out][retval] */ BSTR *p) = 0; + + virtual /* [id][propget] */ HRESULT STDMETHODCALLTYPE get_protocolLong( + /* [out][retval] */ BSTR *p) = 0; + + virtual /* [id][propget] */ HRESULT STDMETHODCALLTYPE get_mimeType( + /* [out][retval] */ BSTR *p) = 0; + + virtual /* [id][propget] */ HRESULT STDMETHODCALLTYPE get_nameProp( + /* [out][retval] */ BSTR *p) = 0; + + virtual /* [bindable][displaybind][id][propput] */ HRESULT STDMETHODCALLTYPE put_tabIndex( + /* [in] */ short v) = 0; + + virtual /* [bindable][displaybind][id][propget] */ HRESULT STDMETHODCALLTYPE get_tabIndex( + /* [out][retval] */ short *p) = 0; + + virtual /* [id] */ HRESULT STDMETHODCALLTYPE focus( void) = 0; + + virtual /* [id] */ HRESULT STDMETHODCALLTYPE blur( void) = 0; + + }; + +#endif /* __IHTMLAnchorElement_INTERFACE_DEFINED__ */ + +#ifndef __IInternetSecurityManager_INTERFACE_DEFINED__ +#define __IInternetSecurityManager_INTERFACE_DEFINED__ + + typedef enum tagURLZONE { + URLZONE_INVALID = -1, + URLZONE_PREDEFINED_MIN = 0, + URLZONE_LOCAL_MACHINE = 0, + URLZONE_INTRANET, + URLZONE_TRUSTED, + URLZONE_INTERNET, + URLZONE_UNTRUSTED, + URLZONE_PREDEFINED_MAX = 999, + URLZONE_USER_MIN = 1000, + URLZONE_USER_MAX = 10000 + } URLZONE; + + #define URLACTION_ACTIVEX_MIN 0x00001200 + #define URLACTION_ACTIVEX_MAX 0x000013ff + #define URLACTION_SCRIPT_MIN 0x00001400 + #define URLACTION_SCRIPT_MAX 0x000015ff + #define URLACTION_HTML_MIN 0x00001600 + #define URLACTION_HTML_JAVA_RUN 0x00001605 // derive from Java custom policy + #define URLACTION_HTML_MAX 0x000017ff + #define URLACTION_JAVA_MIN 0x00001C00 + #define URLACTION_JAVA_MAX 0x00001Cff + + #define INET_E_USE_DEFAULT_PROTOCOLHANDLER 0x800C0011L + #define INET_E_USE_DEFAULT_SETTING 0x800C0012L + #define INET_E_DEFAULT_ACTION INET_E_USE_DEFAULT_PROTOCOLHANDLER + #define INET_E_QUERYOPTION_UNKNOWN 0x800C0013L + #define INET_E_REDIRECTING 0x800C0014L + + // Permissions + #define URLPOLICY_ALLOW 0x00 + #define URLPOLICY_QUERY 0x01 + #define URLPOLICY_DISALLOW 0x03 + + static const CLSID IID_IInternetSecurityManager= + { 0x79eac9ee, 0xbaf9, 0x11ce, + { 0x8c, 0x82, 0x00, 0xaa, 0x00, 0x4b, 0xa9, 0x0b } }; + + #define SID_SInternetSecurityManager IID_IInternetSecurityManager + +#ifdef __cplusplus +extern "C" { +#endif +#define INTERFACE IInternetSecurityMgrSite +DECLARE_INTERFACE_(IInternetSecurityMgrSite,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + STDMETHOD(GetWindow)(THIS_ HWND*) PURE; + STDMETHOD(EnableModeless)(THIS_ BOOL) PURE; +}; +#undef INTERFACE + +#define INTERFACE IInternetSecurityManager +DECLARE_INTERFACE_(IInternetSecurityManager,IUnknown) +{ + STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; + STDMETHOD_(ULONG,AddRef)(THIS) PURE; + STDMETHOD_(ULONG,Release)(THIS) PURE; + + STDMETHOD(SetSecuritySite)(THIS_ IInternetSecurityMgrSite*) PURE; + STDMETHOD(GetSecuritySite)(THIS_ IInternetSecurityMgrSite**) PURE; + STDMETHOD(MapUrlToZone)(THIS_ LPCWSTR,DWORD*,DWORD) PURE; + STDMETHOD(GetSecurityId)(THIS_ LPCWSTR,BYTE*,DWORD*,DWORD_PTR) PURE; + STDMETHOD(ProcessUrlAction)(THIS_ LPCWSTR,DWORD,BYTE*,DWORD,BYTE*,DWORD,DWORD,DWORD) PURE; + STDMETHOD(QueryCustomPolicy)(THIS_ LPCWSTR,REFGUID,BYTE**,DWORD*,BYTE*,DWORD,DWORD) PURE; + STDMETHOD(SetZoneMapping)(THIS_ DWORD,LPCWSTR,DWORD) PURE; + STDMETHOD(GetZoneMappings)(THIS_ DWORD,IEnumString**,DWORD) PURE; +}; +#undef INTERFACE + + +#ifdef __cplusplus +} +#endif + +#endif + +class IEViewSink:public DWebBrowserEvents2 { +private: + int m_cRef; + IEView *ieWindow; +public: + IEViewSink(IEView *); + virtual ~IEViewSink(); + // IDispatch + STDMETHODIMP QueryInterface(REFIID riid, PVOID *ppv); + STDMETHODIMP_(ULONG) AddRef(void); + STDMETHODIMP_(ULONG) Release(void); + + STDMETHOD(GetTypeInfoCount)(UINT*); + STDMETHOD(GetTypeInfo)(UINT, LCID, LPTYPEINFO*); + STDMETHOD(GetIDsOfNames)(REFIID,LPOLESTR*,UINT,LCID,DISPID*); + STDMETHOD(Invoke)(DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*); + // DWebBrowserEvents2 + STDMETHODIMP_(void)StatusTextChange(BSTR); + STDMETHODIMP_(void)ProgressChange(long, long); + STDMETHODIMP_(void)CommandStateChange(long, VARIANT_BOOL); + STDMETHODIMP_(void)DownloadBegin(); + STDMETHODIMP_(void)DownloadComplete(); + STDMETHODIMP_(void)TitleChange(BSTR Text); + STDMETHODIMP_(void)PropertyChange(BSTR Text); + STDMETHODIMP_(void)BeforeNavigate2(IDispatch*,VARIANT*,VARIANT*,VARIANT*,VARIANT*,VARIANT*,VARIANT_BOOL*); + STDMETHODIMP_(void)NewWindow2(IDispatch**, VARIANT_BOOL*); + STDMETHODIMP_(void)NavigateComplete(IDispatch*, VARIANT*); + STDMETHODIMP_(void)DocumentComplete(IDispatch*, VARIANT*); + STDMETHODIMP_(void)OnQuit(); + STDMETHODIMP_(void)OnVisible(VARIANT_BOOL); + STDMETHODIMP_(void)OnToolBar(VARIANT_BOOL); + STDMETHODIMP_(void)OnMenuBar(VARIANT_BOOL); + STDMETHODIMP_(void)OnStatusBar(VARIANT_BOOL); + STDMETHODIMP_(void)OnFullScreen(VARIANT_BOOL); + STDMETHODIMP_(void)OnTheaterMode(VARIANT_BOOL); + STDMETHODIMP_(void)WindowSetResizable(VARIANT_BOOL); + STDMETHODIMP_(void)WindowSetLeft(long); + STDMETHODIMP_(void)WindowSetTop(long); + STDMETHODIMP_(void)WindowSetWidth(long); + STDMETHODIMP_(void)WindowSetHeight(long); + STDMETHODIMP_(void)WindowClosing(VARIANT_BOOL, VARIANT_BOOL*); + STDMETHODIMP_(void)ClientToHostWindow(long*,long*); + STDMETHODIMP_(void)SetSecureLockIcon(long); + STDMETHODIMP_(void)FileDownload(VARIANT_BOOL*); +}; + +class IEView:public IDispatch, public IOleClientSite, public IOleInPlaceSite, public IDocHostUIHandler, public IInternetSecurityManager, public IServiceProvider { +private: + static IEView *list; + static CRITICAL_SECTION mutex; + static bool isInited; + HWND parent; + HWND hwnd; + IEView *prev, *next; + int m_cRef; + RECT rcClient; + BOOL m_bInPlaceActive; + DWORD m_dwCookie; + IConnectionPoint* m_pConnectionPoint; + IEViewSink *sink; + IWebBrowser2* pWebBrowser; + HTMLBuilder *builder; + + WNDPROC mainWndProc, docWndProc, serverWndProc; + bool getFocus; + bool clearRequired; + BSTR selectedText; + bool isContactSet; + HANDLE hContact; + + // IUnknown + STDMETHODIMP QueryInterface(REFIID riid, PVOID *ppv); + STDMETHODIMP_(ULONG) AddRef(void); + STDMETHODIMP_(ULONG) Release(void); + + // IDispatch + STDMETHOD(GetTypeInfoCount)(UINT*); + STDMETHOD(GetTypeInfo)(UINT, LCID, LPTYPEINFO*); + STDMETHOD(GetIDsOfNames)(REFIID,LPOLESTR*,UINT,LCID,DISPID*); + STDMETHOD(Invoke)(DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*); + // IOleWindow + STDMETHOD(GetWindow)(HWND *phwnd); + STDMETHOD(ContextSensitiveHelp)(BOOL fEnterMode); + // IOleInPlace + STDMETHOD(CanInPlaceActivate)(void); + STDMETHOD(OnInPlaceActivate)(void); + STDMETHOD(OnUIActivate)(void); + STDMETHOD(GetWindowContext)(IOleInPlaceFrame **ppFrame, IOleInPlaceUIWindow **ppDoc, + LPRECT lprcPosRect, LPRECT lprcClipRect, + LPOLEINPLACEFRAMEINFO lpFrameInfo); + STDMETHOD(Scroll)(SIZE scrollExtant); + + STDMETHOD(OnUIDeactivate)(BOOL fUndoable); + STDMETHOD(OnInPlaceDeactivate)( void); + STDMETHOD(DiscardUndoState)( void); + STDMETHOD(DeactivateAndUndo)( void); + STDMETHOD(OnPosRectChange)(LPCRECT lprcPosRect); + // IOleClientSite + STDMETHOD(SaveObject)(void); + STDMETHOD(GetMoniker)(DWORD dwAssign, DWORD dwWhichMoniker, IMoniker **ppmk); + STDMETHOD(GetContainer)(IOleContainer **ppContainer); + STDMETHOD(ShowObject)(void); + STDMETHOD(OnShowWindow)(BOOL fShow); + STDMETHOD(RequestNewObjectLayout)(void); + + // IDocHostUIHandler + STDMETHOD(ShowContextMenu)(DWORD dwID, POINT *ppt, IUnknown *pcmdtReserved, IDispatch *pdispReserved); + STDMETHOD(GetHostInfo)(DOCHOSTUIINFO *pInfo); + STDMETHOD(ShowUI)(DWORD dwID, IOleInPlaceActiveObject *pActiveObject, IOleCommandTarget *pCommandTarget, + IOleInPlaceFrame *pFrame, IOleInPlaceUIWindow *pDoc); + STDMETHOD(HideUI)(void); + STDMETHOD(UpdateUI)(void); + STDMETHOD(EnableModeless)(BOOL fEnable); + STDMETHOD(OnDocWindowActivate)(BOOL fEnable); + STDMETHOD(OnFrameWindowActivate)(BOOL fEnable); + STDMETHOD(ResizeBorder)(LPCRECT prcBorder, IOleInPlaceUIWindow *pUIWindow, BOOL fRameWindow); + STDMETHOD(TranslateAccelerator)(LPMSG lpMsg, const GUID *pguidCmdGroup, DWORD nCmdID); + STDMETHOD(GetOptionKeyPath)(LPOLESTR *pchKey, DWORD dw); + STDMETHOD(GetDropTarget)(IDropTarget *pDropTarget, IDropTarget **ppDropTarget); + STDMETHOD(GetExternal)(IDispatch **ppDispatch); + STDMETHOD(TranslateUrl)(DWORD dwTranslate, OLECHAR *pchURLIn, OLECHAR **ppchURLOut); + STDMETHOD(FilterDataObject)(IDataObject *pDO, IDataObject **ppDORet); + // IServiceProvider + STDMETHOD(QueryService)(REFGUID guidService, REFIID riid, void** ppvObject); + // IInternetSecurityManager + STDMETHOD(SetSecuritySite)(IInternetSecurityMgrSite *pSite); + STDMETHOD(GetSecuritySite)(IInternetSecurityMgrSite **ppSite); + STDMETHOD(MapUrlToZone)(LPCWSTR pwszUrl, DWORD *pdwZone, DWORD dwFlags); + STDMETHOD(GetSecurityId)(LPCWSTR pwszUrl, BYTE *pbSecurityId, DWORD *pcbSecurityId, DWORD_PTR dwReserved); + STDMETHOD(ProcessUrlAction)(LPCWSTR pwszUrl, DWORD dwAction, BYTE *pPolicy, DWORD cbPolicy, BYTE *pContext, DWORD cbContext, DWORD dwFlags, DWORD dwReserved); + STDMETHOD(QueryCustomPolicy)(LPCWSTR pwszUrl, REFGUID guidKey, BYTE **ppPolicy, DWORD *pcbPolicy, BYTE *pContext, DWORD cbContext, DWORD dwReserved); + STDMETHOD(SetZoneMapping)(DWORD dwZone, LPCWSTR lpszPattern, DWORD dwFlags); + STDMETHOD(GetZoneMappings)(DWORD dwZone, IEnumString **ppenumString, DWORD dwFlags); + + IHTMLDocument2 *getDocument(); + BSTR getHrefFromAnchor(IHTMLElement *element); + BSTR getSelection(); + void setBorder(); +protected: + void navigate(const char *); + void navigate(const wchar_t *); +public: + IEView(HWND parent, HTMLBuilder* builder, int x, int y, int cx, int cy); +// IEView::IEView(HWND parent, SmileyWindow* smileyWindow, int x, int y, int cx, int cy); + virtual ~IEView(); + + void waitWhileBusy(); + HWND getHWND(); + void translateAccelerator(UINT uMsg, WPARAM wParam, LPARAM lParam); + bool mouseClick(POINT pt); + bool mouseActivate(); + bool setFocus(HWND prevFocus); + void setWindowPos(int x, int y, int cx, int cy); + HTMLBuilder* getBuilder(); + + void write(const wchar_t *text); + void write(const char *text); + void writef(const char *fmt, ...); + void documentClose(); + void rebuildLog(); + void scrollToBottom(); + void scrollToBottomSoft(); + void scrollToTop(); + + void setMainWndProc(WNDPROC); + WNDPROC getMainWndProc(); + void setDocWndProc(WNDPROC); + WNDPROC getDocWndProc(); + void setServerWndProc(WNDPROC); + WNDPROC getServerWndProc(); + + void appendEventOld(IEVIEWEVENT * event); + void appendEvent(IEVIEWEVENT * event); + void clear(IEVIEWEVENT * event); + void* getSelection(IEVIEWEVENT * event); + void navigate(IEVIEWNAVIGATE * nav); + void saveDocument(); + + void setContact(HANDLE hContact); + + static IEView* get(HWND); + static void init(); + static void release(); + static void setOptions(); + +}; +#endif -- cgit v1.2.3