[SHDOCVW] Sync with Wine Staging 4.18. CORE-16441
[reactos.git] / dll / win32 / shdocvw / shdocvw.h
index e471f32..568fbad 100644 (file)
 #ifndef __WINE_SHDOCVW_H
 #define __WINE_SHDOCVW_H
 
-#define WIN32_NO_STATUS
-#define _INC_WINDOWS
-#define COM_NO_WINDOWS_H
-
 #define COBJMACROS
 
 #include <stdarg.h>
 
-#include <windef.h>
-#include <winbase.h>
-#include <wingdi.h>
-//#include "winuser.h"
-#include <winreg.h>
-#include <winver.h>
-
-#include <ole2.h>
-#include <olectl.h>
-#include <shellapi.h>
-#include <shlobj.h>
-//#include "exdisp.h"
-#include <mshtmhst.h>
-#include <hlink.h>
-#include <htiframe.h>
-
-#include <wine/unicode.h>
-#include "resource.h"
+#include "windef.h"
+#include "winbase.h"
+#include "winuser.h"
 
+#include "ole2.h"
+#include "shlobj.h"
+#include "exdisp.h"
 
-#define WM_UPDATEADDRBAR    (WM_APP+1)
+#include "wine/heap.h"
+#include "wine/list.h"
 
 /**********************************************************************
  * Shell Instance Objects
  */
 extern HRESULT SHDOCVW_GetShellInstanceObjectClassObject(REFCLSID rclsid, 
-    REFIID riid, LPVOID *ppvClassObj);
-
-/**********************************************************************
- * WebBrowser declaration for SHDOCVW.DLL
- */
-
-typedef struct ConnectionPoint ConnectionPoint;
-typedef struct DocHost DocHost;
-
-typedef struct {
-    const IConnectionPointContainerVtbl *lpConnectionPointContainerVtbl;
-
-    ConnectionPoint *wbe2;
-    ConnectionPoint *wbe;
-    ConnectionPoint *pns;
-
-    IUnknown *impl;
-} ConnectionPointContainer;
-
-typedef struct {
-    const IHlinkFrameVtbl    *lpIHlinkFrameVtbl;
-    const ITargetFrame2Vtbl  *lpITargetFrame2Vtbl;
-
-    IUnknown *outer;
-    DocHost *doc_host;
-} HlinkFrame;
-
-struct _task_header_t;
-
-typedef void (*task_proc_t)(DocHost*, struct _task_header_t*);
-
-typedef struct _task_header_t {
-    task_proc_t proc;
-} task_header_t;
-
-typedef struct _IDocHostContainerVtbl
-{
-    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 {
-    const IOleClientSiteVtbl      *lpOleClientSiteVtbl;
-    const IOleInPlaceSiteVtbl     *lpOleInPlaceSiteVtbl;
-    const IDocHostUIHandler2Vtbl  *lpDocHostUIHandlerVtbl;
-    const IOleDocumentSiteVtbl    *lpOleDocumentSiteVtbl;
-    const IOleCommandTargetVtbl   *lpOleCommandTargetVtbl;
-    const IDispatchVtbl           *lpDispatchVtbl;
-    const IPropertyNotifySinkVtbl *lpIPropertyNotifySinkVtbl;
-    const IServiceProviderVtbl    *lpServiceProviderVtbl;
-
-    /* Interfaces of InPlaceFrame object */
-    const IOleInPlaceFrameVtbl          *lpOleInPlaceFrameVtbl;
-
-    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;
-
-    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 {
-    /* Interfaces available via WebBrowser object */
-
-    const IWebBrowser2Vtbl              *lpWebBrowser2Vtbl;
-    const IOleObjectVtbl                *lpOleObjectVtbl;
-    const IOleInPlaceObjectVtbl         *lpOleInPlaceObjectVtbl;
-    const IOleControlVtbl               *lpOleControlVtbl;
-    const IPersistStorageVtbl           *lpPersistStorageVtbl;
-    const IPersistMemoryVtbl            *lpPersistMemoryVtbl;
-    const IPersistStreamInitVtbl        *lpPersistStreamInitVtbl;
-    const IProvideClassInfo2Vtbl        *lpProvideClassInfoVtbl;
-    const IViewObject2Vtbl              *lpViewObjectVtbl;
-    const IOleInPlaceActiveObjectVtbl   *lpOleInPlaceActiveObjectVtbl;
-    const IOleCommandTargetVtbl         *lpOleCommandTargetVtbl;
-    const IServiceProviderVtbl          *lpServiceProviderVtbl;
-    const IDataObjectVtbl               *lpDataObjectVtbl;
-    HlinkFrame hlink_frame;
-
-    LONG ref;
-
-    INT version;
-
-    IOleClientSite *client;
-    IOleContainer *container;
-    IOleInPlaceSite *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;
-};
-
-struct InternetExplorer {
-    const IWebBrowser2Vtbl *lpWebBrowser2Vtbl;
-    HlinkFrame hlink_frame;
-
-    LONG ref;
-
-    HWND frame_hwnd;
-    HWND status_hwnd;
-    HMENU menu;
-
-    DocHost doc_host;
-};
-
-#define WEBBROWSER(x)   ((IWebBrowser*)                 &(x)->lpWebBrowser2Vtbl)
-#define WEBBROWSER2(x)  ((IWebBrowser2*)                &(x)->lpWebBrowser2Vtbl)
-#define OLEOBJ(x)       ((IOleObject*)                  &(x)->lpOleObjectVtbl)
-#define INPLACEOBJ(x)   ((IOleInPlaceObject*)           &(x)->lpOleInPlaceObjectVtbl)
-#define CONTROL(x)      ((IOleControl*)                 &(x)->lpOleControlVtbl)
-#define PERSTORAGE(x)   ((IPersistStorage*)             &(x)->lpPersistStorageVtbl)
-#define PERMEMORY(x)    ((IPersistMemory*)              &(x)->lpPersistMemoryVtbl)
-#define PERSTRINIT(x)   ((IPersistStreamInit*)          &(x)->lpPersistStreamInitVtbl)
-#define CLASSINFO(x)    ((IProvideClassInfo2*)          &(x)->lpProvideClassInfoVtbl)
-#define CONPTCONT(x)    ((IConnectionPointContainer*)   &(x)->lpConnectionPointContainerVtbl)
-#define VIEWOBJ(x)      ((IViewObject*)                 &(x)->lpViewObjectVtbl);
-#define VIEWOBJ2(x)     ((IViewObject2*)                &(x)->lpViewObjectVtbl);
-#define ACTIVEOBJ(x)    ((IOleInPlaceActiveObject*)     &(x)->lpOleInPlaceActiveObjectVtbl)
-#define OLECMD(x)       ((IOleCommandTarget*)           &(x)->lpOleCommandTargetVtbl)
-#define DATAOBJECT(x)   ((IDataObject*)                 &(x)->lpDataObjectVtbl)
-
-#define CLIENTSITE(x)   ((IOleClientSite*)              &(x)->lpOleClientSiteVtbl)
-#define INPLACESITE(x)  ((IOleInPlaceSite*)             &(x)->lpOleInPlaceSiteVtbl)
-#define DOCHOSTUI(x)    ((IDocHostUIHandler*)           &(x)->lpDocHostUIHandlerVtbl)
-#define DOCHOSTUI2(x)   ((IDocHostUIHandler2*)          &(x)->lpDocHostUIHandlerVtbl)
-#define DOCSITE(x)      ((IOleDocumentSite*)            &(x)->lpOleDocumentSiteVtbl)
-#define CLDISP(x)       ((IDispatch*)                   &(x)->lpDispatchVtbl)
-#define PROPNOTIF(x)    ((IPropertyNotifySink*)         &(x)->lpIPropertyNotifySinkVtbl)
-#define SERVPROV(x)     ((IServiceProvider*)            &(x)->lpServiceProviderVtbl)
-
-#define INPLACEFRAME(x) ((IOleInPlaceFrame*)            &(x)->lpOleInPlaceFrameVtbl)
-
-#define HLINKFRAME(x)   ((IHlinkFrame*)                 &(x)->lpIHlinkFrameVtbl)
-#define TARGETFRAME2(x) ((ITargetFrame2*)               &(x)->lpITargetFrame2Vtbl)
-
-void WebBrowser_OleObject_Init(WebBrowser*);
-void WebBrowser_ViewObject_Init(WebBrowser*);
-void WebBrowser_DataObject_Init(WebBrowser*);
-void WebBrowser_Persist_Init(WebBrowser*);
-void WebBrowser_ClassInfo_Init(WebBrowser*);
-
-void WebBrowser_OleObject_Destroy(WebBrowser*);
-
-void DocHost_Init(DocHost*,IDispatch*,const IDocHostContainerVtbl*);
-void DocHost_ClientSite_Init(DocHost*);
-void DocHost_Frame_Init(DocHost*);
-void release_dochost_client(DocHost*);
-
-void DocHost_Release(DocHost*);
-void DocHost_ClientSite_Release(DocHost*);
-
-void ConnectionPointContainer_Init(ConnectionPointContainer*,IUnknown*);
-void ConnectionPointContainer_Destroy(ConnectionPointContainer*);
-
-void HlinkFrame_Init(HlinkFrame*,IUnknown*,DocHost*);
-BOOL HlinkFrame_QI(HlinkFrame*,REFIID,void**);
-
-HRESULT WebBrowserV1_Create(IUnknown*,REFIID,void**);
-HRESULT WebBrowserV2_Create(IUnknown*,REFIID,void**);
-
-void create_doc_view_hwnd(DocHost*);
-void deactivate_document(DocHost*);
-HRESULT dochost_object_available(DocHost*,IUnknown*);
-void call_sink(ConnectionPoint*,DISPID,DISPPARAMS*);
-HRESULT navigate_url(DocHost*,LPCWSTR,const VARIANT*,const VARIANT*,VARIANT*,VARIANT*);
-HRESULT go_home(DocHost*);
-void set_doc_state(DocHost*,READYSTATE);
-
-#define WM_DOCHOSTTASK (WM_USER+0x300)
-void push_dochost_task(DocHost*,task_header_t*,task_proc_t,BOOL);
-LRESULT  process_dochost_task(DocHost*,LPARAM);
-
-HRESULT InternetExplorer_Create(IUnknown*,REFIID,void**);
-void InternetExplorer_WebBrowser_Init(InternetExplorer*);
-
-HRESULT CUrlHistory_Create(IUnknown*,REFIID,void**);
-
-HRESULT InternetShortcut_Create(IUnknown*,REFIID,void**);
-
-HRESULT TaskbarList_Create(IUnknown*,REFIID,void**);
-
-#define DEFINE_THIS2(cls,ifc,iface) ((cls*)((BYTE*)(iface)-offsetof(cls,ifc)))
-#define DEFINE_THIS(cls,ifc,iface) DEFINE_THIS2(cls,lp ## ifc ## Vtbl,iface)
+    REFIID riid, LPVOID *ppvClassObj) DECLSPEC_HIDDEN;
 
 /**********************************************************************
  * Dll lifetime tracking declaration for shdocvw.dll
  */
-extern LONG SHDOCVW_refCount;
+extern LONG SHDOCVW_refCount DECLSPEC_HIDDEN;
 static inline void SHDOCVW_LockModule(void) { InterlockedIncrement( &SHDOCVW_refCount ); }
 static inline void SHDOCVW_UnlockModule(void) { InterlockedDecrement( &SHDOCVW_refCount ); }
 
-extern HINSTANCE shdocvw_hinstance;
-extern void register_iewindow_class(void);
-extern void unregister_iewindow_class(void);
-extern HRESULT update_ie_statustext(InternetExplorer*, LPCWSTR);
-
-HRESULT register_class_object(BOOL);
-HRESULT get_typeinfo(ITypeInfo**);
-DWORD register_iexplore(BOOL);
-
-const char *debugstr_variant(const VARIANT*);
-
-/* memory allocation functions */
-
-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 */