diff --git a/reactos/dll/win32/atl/atl.rgs b/reactos/dll/win32/atl/atl.rgs index 8b1d476b20d..ee432497f78 100644 --- a/reactos/dll/win32/atl/atl.rgs +++ b/reactos/dll/win32/atl/atl.rgs @@ -2,10 +2,10 @@ HKCR { ATL.Registrar = s 'Registrar Class' { - CLSID = s '%CLSID_ATLRegistrar%' + CLSID = s '%CLSID_Registrar%' } NoRemove CLSID { - ForceRemove '%CLSID_ATLRegistrar%' = s 'Registrar Class' + ForceRemove '%CLSID_Registrar%' = s 'Registrar Class' { ProgID = s 'ATL.Registrar' InprocServer32 = s '%MODULE%' diff --git a/reactos/dll/win32/atl/atl_ax.c b/reactos/dll/win32/atl/atl_ax.c index d9d60a56b9e..1293cb830ba 100644 --- a/reactos/dll/win32/atl/atl_ax.c +++ b/reactos/dll/win32/atl/atl_ax.c @@ -1053,6 +1053,9 @@ HRESULT WINAPI AtlAxAttachControl(IUnknown* pControl, HWND hWnd, IUnknown** ppUn *ppUnkContainer = (IUnknown*) pUnkContainer; } + if(!hWnd) + return S_FALSE; + return hr; } diff --git a/reactos/dll/win32/atl/atliface.idl b/reactos/dll/win32/atl/atliface.idl index ef3e5e58165..887338fdb50 100644 --- a/reactos/dll/win32/atl/atliface.idl +++ b/reactos/dll/win32/atl/atliface.idl @@ -19,7 +19,7 @@ import "ocidl.idl"; cpp_quote("#ifdef ATL_INITGUID") -cpp_quote("#include \"initguid.h\"") +cpp_quote("#include ") cpp_quote("#endif") [ @@ -68,7 +68,7 @@ interface IRegistrar : IUnknown [in] LPCOLESTR szType); } -cpp_quote("DEFINE_GUID(CLSID_ATLRegistrar,0x44ec053a,0x400f,0x11d0,0x9d,0xcd,0x00,0xa0,0xc9,0x03,0x91,0xd3);") +cpp_quote("DEFINE_GUID(CLSID_Registrar,0x44ec053a,0x400f,0x11d0,0x9d,0xcd,0x00,0xa0,0xc9,0x03,0x91,0xd3);") cpp_quote("HRESULT WINAPI AtlAxCreateControl(LPCOLESTR,HWND,IStream*,IUnknown**);") cpp_quote("HRESULT WINAPI AtlAxCreateControlEx(LPCOLESTR,HWND,IStream*,IUnknown**,IUnknown**,REFIID,IUnknown*);") diff --git a/reactos/dll/win32/atl/registrar.c b/reactos/dll/win32/atl/registrar.c index 7076e35c17c..c9d7e6c7af7 100644 --- a/reactos/dll/win32/atl/registrar.c +++ b/reactos/dll/win32/atl/registrar.c @@ -687,8 +687,9 @@ static HRESULT WINAPI RegistrarCF_QueryInterface(IClassFactory *iface, REFIID ri { TRACE("(%p)->(%s %p)\n", iface, debugstr_guid(riid), ppvObject); - if(IsEqualGUID(&IID_IUnknown, riid) || IsEqualGUID(&IID_IRegistrar, riid)) { + if(IsEqualGUID(&IID_IUnknown, riid) || IsEqualGUID(&IID_IClassFactory, riid)) { *ppvObject = iface; + IClassFactory_AddRef( iface ); return S_OK; } @@ -743,10 +744,8 @@ HRESULT WINAPI DllGetClassObject(REFCLSID clsid, REFIID riid, LPVOID *ppvObject) { TRACE("(%s %s %p)\n", debugstr_guid(clsid), debugstr_guid(riid), ppvObject); - if(IsEqualGUID(&CLSID_ATLRegistrar, clsid)) { - *ppvObject = &RegistrarCF; - return S_OK; - } + if(IsEqualGUID(&CLSID_Registrar, clsid)) + return IClassFactory_QueryInterface( &RegistrarCF, riid, ppvObject ); FIXME("Not supported class %s\n", debugstr_guid(clsid)); return CLASS_E_CLASSNOTAVAILABLE; @@ -787,14 +786,14 @@ static HRESULT do_register_dll_server(IRegistrar *pRegistrar, LPCOLESTR wszDll, static HRESULT do_register_server(BOOL do_register) { - static const WCHAR CLSID_ATLRegistrarW[] = - {'C','L','S','I','D','_','A','T','L','R','e','g','i','s','t','r','a','r',0}; + static const WCHAR CLSID_RegistrarW[] = + {'C','L','S','I','D','_','R','e','g','i','s','t','r','a','r',0}; static const WCHAR atl_dllW[] = {'a','t','l','.','d','l','l',0}; WCHAR clsid_str[40]; - const struct _ATL_REGMAP_ENTRY reg_map[] = {{CLSID_ATLRegistrarW, clsid_str}, {NULL,NULL}}; + const struct _ATL_REGMAP_ENTRY reg_map[] = {{CLSID_RegistrarW, clsid_str}, {NULL,NULL}}; - StringFromGUID2(&CLSID_ATLRegistrar, clsid_str, sizeof(clsid_str)/sizeof(WCHAR)); + StringFromGUID2(&CLSID_Registrar, clsid_str, sizeof(clsid_str)/sizeof(WCHAR)); return do_register_dll_server(NULL, atl_dllW, MAKEINTRESOURCEW(101), do_register, reg_map); } diff --git a/reactos/dll/win32/hlink/hlink.spec b/reactos/dll/win32/hlink/hlink.spec index 0cc761fbcb6..ca8144e7d76 100644 --- a/reactos/dll/win32/hlink/hlink.spec +++ b/reactos/dll/win32/hlink/hlink.spec @@ -2,7 +2,7 @@ 4 stdcall HlinkCreateFromString(wstr wstr wstr ptr long ptr ptr ptr) 5 stdcall HlinkCreateFromData(ptr ptr long ptr ptr ptr) 6 stdcall HlinkCreateBrowseContext(ptr ptr ptr) -7 stub HlinkClone +7 stdcall HlinkClone(ptr ptr ptr long ptr) 8 stdcall HlinkNavigateToStringReference(wstr wstr ptr long ptr long ptr ptr ptr) 9 stdcall HlinkOnNavigate(ptr ptr long ptr wstr wstr ptr) 10 stdcall HlinkNavigate(ptr ptr long ptr ptr ptr) diff --git a/reactos/dll/win32/hlink/hlink_main.c b/reactos/dll/win32/hlink/hlink_main.c index e96f206645f..cda96836484 100644 --- a/reactos/dll/win32/hlink/hlink_main.c +++ b/reactos/dll/win32/hlink/hlink_main.c @@ -428,6 +428,71 @@ HRESULT WINAPI HlinkResolveMonikerForData(LPMONIKER pimkReference, DWORD reserve return IMoniker_BindToStorage(pimkReference, pibc, NULL, &IID_IUnknown, &obj); } +/*********************************************************************** + * HlinkClone (HLINK.@) + */ +HRESULT WINAPI HlinkClone(IHlink *hlink, REFIID riid, IHlinkSite *hls, + DWORD site_data, void **obj) +{ + IMoniker *mk, *clone_mk = NULL; + WCHAR *loc, *name = NULL; + HRESULT hres; + + if(!hlink || !riid || !obj) + return E_INVALIDARG; + + *obj = NULL; + + hres = IHlink_GetMonikerReference(hlink, HLINKGETREF_DEFAULT, &mk, &loc); + if(FAILED(hres)) + return hres; + + if(mk) { + IStream *strm; + LARGE_INTEGER lgint; + + hres = CreateStreamOnHGlobal(NULL, TRUE, &strm); + if(FAILED(hres)) { + IMoniker_Release(mk); + goto cleanup; + } + + hres = OleSaveToStream((IPersistStream*)mk, strm); + if(FAILED(hres)) { + IStream_Release(strm); + IMoniker_Release(mk); + goto cleanup; + } + IMoniker_Release(mk); + + lgint.QuadPart = 0; + hres = IStream_Seek(strm, lgint, STREAM_SEEK_SET, NULL); + if(FAILED(hres)) { + IStream_Release(strm); + goto cleanup; + } + + hres = OleLoadFromStream(strm, &IID_IMoniker, (void**)&clone_mk); + IStream_Release(strm); + if(FAILED(hres)) + goto cleanup; + } + + hres = IHlink_GetFriendlyName(hlink, HLFNAMEF_DEFAULT, &name); + if(FAILED(hres)) + goto cleanup; + + hres = HlinkCreateFromMoniker(clone_mk, loc, name, hls, site_data, NULL, + &IID_IHlink, obj); + +cleanup: + if(clone_mk) + IMoniker_Release(clone_mk); + CoTaskMemFree(loc); + CoTaskMemFree(name); + return hres; +} + static HRESULT WINAPI HLinkCF_fnQueryInterface ( LPCLASSFACTORY iface, REFIID riid, LPVOID *ppvObj) { diff --git a/reactos/dll/win32/hlink/link.c b/reactos/dll/win32/hlink/link.c index ffd3cda854b..b0d99aaf4e9 100644 --- a/reactos/dll/win32/hlink/link.c +++ b/reactos/dll/win32/hlink/link.c @@ -69,20 +69,40 @@ static inline HlinkImpl* HlinkImpl_from_IDataObject( IDataObject* iface) return (HlinkImpl*) ((CHAR*)iface - FIELD_OFFSET(HlinkImpl, lpDOVtbl)); } -static inline void __GetMoniker(HlinkImpl* This, IMoniker** moniker) +static HRESULT __GetMoniker(HlinkImpl* This, IMoniker** moniker, + DWORD ref_type) { - *moniker = NULL; - if (This->Moniker) + HRESULT hres; + + if (ref_type == HLINKGETREF_DEFAULT) + ref_type = HLINKGETREF_RELATIVE; + + if (ref_type == HLINKGETREF_ABSOLUTE && This->Site) { - *moniker = This->Moniker; - if (*moniker) - IMoniker_AddRef(*moniker); - } - else if (This->Site) - { - IHlinkSite_GetMoniker(This->Site, This->SiteData, - OLEGETMONIKER_FORCEASSIGN, OLEWHICHMK_CONTAINER, moniker); + IMoniker *hls_moniker; + + hres = IHlinkSite_GetMoniker(This->Site, This->SiteData, + OLEGETMONIKER_FORCEASSIGN, OLEWHICHMK_CONTAINER, &hls_moniker); + if (FAILED(hres)) + return hres; + + if (This->Moniker) + { + hres = IMoniker_ComposeWith(hls_moniker, This->Moniker, FALSE, + moniker); + IMoniker_Release(hls_moniker); + return hres; + } + + *moniker = hls_moniker; + return S_OK; } + + *moniker = This->Moniker; + if (*moniker) + IMoniker_AddRef(*moniker); + + return S_OK; } HRESULT WINAPI HLink_Constructor(IUnknown *pUnkOuter, REFIID riid, @@ -191,10 +211,11 @@ static HRESULT WINAPI IHlink_fnGetHlinkSite( IHlink* iface, TRACE("(%p)->(%p %p)\n", This, ppihlSite, pdwSiteData); *ppihlSite = This->Site; - *pdwSiteData = This->SiteData; - if (This->Site) + if (This->Site) { IHlinkSite_AddRef(This->Site); + *pdwSiteData = This->SiteData; + } return S_OK; } @@ -307,8 +328,16 @@ static HRESULT WINAPI IHlink_fnGetMonikerReference(IHlink* iface, TRACE("(%p) -> (%i %p %p)\n", This, dwWhichRef, ppimkTarget, ppwzLocation); - if(ppimkTarget) - __GetMoniker(This, ppimkTarget); + if (ppimkTarget) + { + HRESULT hres = __GetMoniker(This, ppimkTarget, dwWhichRef); + if (FAILED(hres)) + { + if (ppwzLocation) + *ppwzLocation = NULL; + return hres; + } + } if (ppwzLocation) IHlink_GetStringReference(iface, dwWhichRef, NULL, ppwzLocation); @@ -323,7 +352,6 @@ static HRESULT WINAPI IHlink_fnGetStringReference (IHlink* iface, TRACE("(%p) -> (%i %p %p)\n", This, dwWhichRef, ppwzTarget, ppwzLocation); - /* note: undocumented behavior with dwWhichRef == -1 */ if(dwWhichRef != -1 && dwWhichRef & ~(HLINKGETREF_DEFAULT | HLINKGETREF_ABSOLUTE | HLINKGETREF_RELATIVE)) { if(ppwzTarget) @@ -333,13 +361,16 @@ static HRESULT WINAPI IHlink_fnGetStringReference (IHlink* iface, return E_INVALIDARG; } - if(dwWhichRef != HLINKGETREF_DEFAULT) - FIXME("unhandled flags: 0x%x\n", dwWhichRef); - if (ppwzTarget) { IMoniker* mon; - __GetMoniker(This, &mon); + HRESULT hres = __GetMoniker(This, &mon, dwWhichRef); + if (FAILED(hres)) + { + if (ppwzLocation) + *ppwzLocation = NULL; + return hres; + } if (mon) { IBindCtx *pbc; @@ -389,7 +420,12 @@ static HRESULT WINAPI IHlink_fnGetFriendlyName (IHlink* iface, else { IMoniker *moniker; - __GetMoniker(This, &moniker); + HRESULT hres = __GetMoniker(This, &moniker, HLINKGETREF_DEFAULT); + if (FAILED(hres)) + { + *ppwzFriendlyName = NULL; + return hres; + } if (moniker) { IBindCtx *bcxt; @@ -440,20 +476,17 @@ static HRESULT WINAPI IHlink_fnNavigate(IHlink* iface, DWORD grfHLNF, LPBC pbc, { HlinkImpl *This = (HlinkImpl*)iface; IMoniker *mon = NULL; + HRESULT r; FIXME("Semi-Stub:(%p)->(%i %p %p %p)\n", This, grfHLNF, pbc, pbsc, phbc); - if (This->Site) - IHlinkSite_ReadyToNavigate(This->Site, This->SiteData, 0); - - __GetMoniker(This, &mon); + r = __GetMoniker(This, &mon, HLINKGETREF_ABSOLUTE); TRACE("Moniker %p\n", mon); - if (mon) + if (SUCCEEDED(r)) { IBindCtx *bcxt; IHlinkTarget *target = NULL; - HRESULT r = S_OK; CreateBindCtx(0, &bcxt); @@ -488,10 +521,10 @@ static HRESULT WINAPI IHlink_fnNavigate(IHlink* iface, DWORD grfHLNF, LPBC pbc, } if (This->Site) - IHlinkSite_OnNavigationComplete(This->Site, This->SiteData, 0, 0, NULL); + IHlinkSite_OnNavigationComplete(This->Site, This->SiteData, 0, r, NULL); TRACE("Finished Navigation\n"); - return S_OK; + return r; } static HRESULT WINAPI IHlink_fnSetAdditonalParams(IHlink* iface, @@ -782,14 +815,17 @@ end: static HRESULT WINAPI IPersistStream_fnSave(IPersistStream* iface, IStream* pStm, BOOL fClearDirty) { - HRESULT r = E_FAIL; + HRESULT r; HlinkImpl *This = HlinkImpl_from_IPersistStream(iface); DWORD hdr[2]; IMoniker *moniker; TRACE("(%p) Moniker(%p)\n", This, This->Moniker); - __GetMoniker(This, &moniker); + r = __GetMoniker(This, &moniker, HLINKGETREF_DEFAULT); + if (FAILED(r)) + return r; + r = E_FAIL; hdr[0] = HLINK_SAVE_MAGIC; hdr[1] = 0; @@ -850,7 +886,7 @@ end: static HRESULT WINAPI IPersistStream_fnGetSizeMax(IPersistStream* iface, ULARGE_INTEGER* pcbSize) { - HRESULT r = E_FAIL; + HRESULT r; HlinkImpl *This = HlinkImpl_from_IPersistStream(iface); IMoniker *moniker; @@ -864,7 +900,11 @@ static HRESULT WINAPI IPersistStream_fnGetSizeMax(IPersistStream* iface, if (This->FriendlyName) pcbSize->QuadPart += size_hlink_string(This->FriendlyName); - __GetMoniker(This, &moniker); + r = __GetMoniker(This, &moniker, HLINKGETREF_DEFAULT); + if (FAILED(r)) + return r; + r = E_FAIL; + if (moniker) { IPersistStream* monstream = NULL; diff --git a/reactos/dll/win32/shdocvw/De.rc b/reactos/dll/win32/shdocvw/De.rc new file mode 100644 index 00000000000..560d93deb1f --- /dev/null +++ b/reactos/dll/win32/shdocvw/De.rc @@ -0,0 +1,88 @@ +/* + * Copyright 2010 André Hentschel + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include "resource.h" + +#pragma code_page(65001) + +LANGUAGE LANG_GERMAN, SUBLANG_NEUTRAL + +IDD_BROWSE_OPEN DIALOG 10, 10, 200, 70 +STYLE DS_MODALFRAME | WS_CAPTION +CAPTION "URL öffnen" +FONT 8, "MS Shell Dlg" +{ + LTEXT "Geben Sie die Url ein, die Sie mit Internet Explorer öffnen möchten",-1,30, 5, 150,15 + LTEXT "Öffnen:", -1, 2, 32, 25, 15 + EDITTEXT IDC_BROWSE_OPEN_URL, 30, 30, 160, 13 + DEFPUSHBUTTON "&OK", IDOK, 30, 50, 50, 15 + PUSHBUTTON "&Abbrechen", IDCANCEL, 90, 50, 50, 15 +} + +IDR_BROWSE_MAIN_MENU MENU +{ + POPUP "&Datei" + { + POPUP "&Neu" + { + MENUITEM "&Fenster" ID_BROWSE_NEW_WINDOW + } + MENUITEM "Ö&ffnen...", ID_BROWSE_OPEN + MENUITEM "&Speichern", ID_BROWSE_SAVE + MENUITEM "Speichern &als...", ID_BROWSE_SAVE_AS + MENUITEM SEPARATOR + MENUITEM "Seite &einrichten...", ID_BROWSE_PRINT_FORMAT + MENUITEM "Dr&ucken...", ID_BROWSE_PRINT + MENUITEM "Seiten&vorschau...", ID_BROWSE_PRINT_PREVIEW + MENUITEM SEPARATOR + MENUITEM "Ei&genschaften...", ID_BROWSE_PROPERTIES + MENUITEM "&Beenden", ID_BROWSE_QUIT + } + POPUP "&Ansicht" + { + POPUP "&Symbolleisten" + { + MENUITEM "&Standard" ID_BROWSE_BAR_STD + MENUITEM "&Adressleiste" ID_BROWSE_BAR_ADDR + } + } + POPUP "&Favoriten" + { + MENUITEM "&Zu den Favoriten hinzufügen..." ID_BROWSE_ADDFAV + MENUITEM SEPARATOR + } + POPUP "&Hilfe" + { + MENUITEM "Über &Internet Explorer...", ID_BROWSE_ABOUT + } +} + +STRINGTABLE +{ + IDS_TB_BACK "Zurück" + IDS_TB_FORWARD "Vorwärts" + IDS_TB_STOP "Stopp" + IDS_TB_REFRESH "Neu laden" + IDS_TB_HOME "Start" + IDS_TB_PRINT "Drucken" +} + +STRINGTABLE +{ + IDS_ADDRESS "Adresse" +} diff --git a/reactos/dll/win32/shdocvw/En.rc b/reactos/dll/win32/shdocvw/En.rc index 749c849aa3c..7a4fe78bf61 100644 --- a/reactos/dll/win32/shdocvw/En.rc +++ b/reactos/dll/win32/shdocvw/En.rc @@ -49,9 +49,38 @@ IDR_BROWSE_MAIN_MENU MENU MENUITEM "Print previe&w...", ID_BROWSE_PRINT_PREVIEW MENUITEM SEPARATOR MENUITEM "&Properties...", ID_BROWSE_PROPERTIES + MENUITEM "&Close", ID_BROWSE_QUIT + } + POPUP "&View" + { + POPUP "&Toolbars" + { + MENUITEM "&Standard bar" ID_BROWSE_BAR_STD + MENUITEM "&Address bar" ID_BROWSE_BAR_ADDR + } + } + POPUP "&Favorites" + { + MENUITEM "&Add to Favorites..." ID_BROWSE_ADDFAV + MENUITEM SEPARATOR } POPUP "&Help" { MENUITEM "&About Internet Explorer...", ID_BROWSE_ABOUT } } + +STRINGTABLE +{ + IDS_TB_BACK "Back" + IDS_TB_FORWARD "Forward" + IDS_TB_STOP "Stop" + IDS_TB_REFRESH "Refresh" + IDS_TB_HOME "Home" + IDS_TB_PRINT "Print" +} + +STRINGTABLE +{ + IDS_ADDRESS "Address" +} diff --git a/reactos/dll/win32/shdocvw/Es.rc b/reactos/dll/win32/shdocvw/Es.rc new file mode 100644 index 00000000000..39715440998 --- /dev/null +++ b/reactos/dll/win32/shdocvw/Es.rc @@ -0,0 +1,89 @@ +/* + * Spanish resources for shdocvw + * + * Copyright 2010 José Rostagno + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include "resource.h" + +#pragma code_page(65001) + +LANGUAGE LANG_SPANISH, SUBLANG_NEUTRAL + +IDD_BROWSE_OPEN DIALOG 10, 10, 200, 70 +STYLE DS_MODALFRAME | WS_CAPTION +CAPTION "Abrir URL" +FONT 8, "MS Shell Dlg" +{ + LTEXT "Especifique la dirección que desea abrir en Internet Explorer",-1,25, 5, 150,15 + LTEXT "Abrir:", -1, 2, 32, 20, 15 + EDITTEXT IDC_BROWSE_OPEN_URL, 25, 30, 160, 13 + DEFPUSHBUTTON "&Aceptar", IDOK, 25, 50, 50, 15 + PUSHBUTTON "&Cancelar", IDCANCEL, 85, 50, 50, 15 +} + +IDR_BROWSE_MAIN_MENU MENU +{ + POPUP "&Archivo" + { + POPUP "&Nuevo" + { + MENUITEM "&Ventana" ID_BROWSE_NEW_WINDOW + } + MENUITEM "&Abrir...", ID_BROWSE_OPEN + MENUITEM "&Guardar", ID_BROWSE_SAVE + MENUITEM "Guardar &como...", ID_BROWSE_SAVE_AS + MENUITEM SEPARATOR + MENUITEM "&Formato de impresión...", ID_BROWSE_PRINT_FORMAT + MENUITEM "&Imprimir...", ID_BROWSE_PRINT + MENUITEM "&Vista previa de impresión...", ID_BROWSE_PRINT_PREVIEW + MENUITEM SEPARATOR + MENUITEM "&Propiedades...", ID_BROWSE_PROPERTIES + } + POPUP "&Ver" + { + POPUP "&Barra de herramientas" + { + MENUITEM "Barra &estándar" ID_BROWSE_BAR_STD + MENUITEM "Barra de &direcciones" ID_BROWSE_BAR_ADDR + } + } + POPUP "&Favoritos" + { + MENUITEM "&Añadir a Favoritos..." ID_BROWSE_ADDFAV + MENUITEM SEPARATOR + } + POPUP "A&yuda" + { + MENUITEM "Acerca &de Internet Explorer...", ID_BROWSE_ABOUT + } +} + +STRINGTABLE +{ + IDS_TB_BACK "Atrás" + IDS_TB_FORWARD "Adelante" + IDS_TB_STOP "Detener" + IDS_TB_REFRESH "Recargar" + IDS_TB_HOME "Inicio" + IDS_TB_PRINT "Imprimir" +} + +STRINGTABLE +{ + IDS_ADDRESS "Dirección" +} diff --git a/reactos/dll/win32/shdocvw/Fr.rc b/reactos/dll/win32/shdocvw/Fr.rc new file mode 100644 index 00000000000..1e17409b7f9 --- /dev/null +++ b/reactos/dll/win32/shdocvw/Fr.rc @@ -0,0 +1,91 @@ +/* + * shdocvw French resources + * + * Copyright 2010 Frédéric Delanoy + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include "resource.h" + +/* UTF-8 */ +#pragma code_page(65001) + +LANGUAGE LANG_FRENCH, SUBLANG_NEUTRAL + +IDD_BROWSE_OPEN DIALOG 10, 10, 200, 70 +STYLE DS_MODALFRAME | WS_CAPTION +CAPTION "Open URL" +FONT 8, "MS Shell Dlg" +{ + LTEXT "Spécifiez l'URL que vous désirez ouvrir dans Internet Explorer :",-1,30, 6, 150, 17 + LTEXT "Ouvrir :", -1, 2, 32, 27, 15 + EDITTEXT IDC_BROWSE_OPEN_URL, 30, 30, 155, 13 + DEFPUSHBUTTON "&OK", IDOK, 54, 50, 50, 15 + PUSHBUTTON "&Annuler", IDCANCEL, 114, 50, 50, 15 +} + +IDR_BROWSE_MAIN_MENU MENU +{ + POPUP "&Fichier" + { + POPUP "&Nouvelle" + { + MENUITEM "&Fenêtre" ID_BROWSE_NEW_WINDOW + } + MENUITEM "&Ouvrir...", ID_BROWSE_OPEN + MENUITEM "&Enregistrer", ID_BROWSE_SAVE + MENUITEM "Enregistrer &sous...", ID_BROWSE_SAVE_AS + MENUITEM SEPARATOR + MENUITEM "&Format d'impression...", ID_BROWSE_PRINT_FORMAT + MENUITEM "&Imprimer...", ID_BROWSE_PRINT + MENUITEM "&Aperçu avant impression...", ID_BROWSE_PRINT_PREVIEW + MENUITEM SEPARATOR + MENUITEM "&Propriétés...", ID_BROWSE_PROPERTIES + MENUITEM "&Quitter", ID_BROWSE_QUIT + } + POPUP "&Afficher" + { + POPUP "&Barres d'outils" + { + MENUITEM "Barre &standard" ID_BROWSE_BAR_STD + MENUITEM "Barre d'&adresse" ID_BROWSE_BAR_ADDR + } + } + POPUP "&Favoris" + { + MENUITEM "&Ajouter aux favoris..." ID_BROWSE_ADDFAV + MENUITEM SEPARATOR + } + POPUP "A&ide" + { + MENUITEM "À &propos d'Internet Explorer...", ID_BROWSE_ABOUT + } +} + +STRINGTABLE +{ + IDS_TB_BACK "Précédent" + IDS_TB_FORWARD "Suivant" + IDS_TB_STOP "Arrêter" + IDS_TB_REFRESH "Recharger" + IDS_TB_HOME "Accueil" + IDS_TB_PRINT "Imprimer" +} + +STRINGTABLE +{ + IDS_ADDRESS "Adresse" +} diff --git a/reactos/dll/win32/shdocvw/He.rc b/reactos/dll/win32/shdocvw/He.rc new file mode 100644 index 00000000000..a2789dfa90a --- /dev/null +++ b/reactos/dll/win32/shdocvw/He.rc @@ -0,0 +1,90 @@ +/* + * Copyright 2010 Alexander N. Sørnes + * Copyright 2010 Yaron Shahrabani + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include "resource.h" + +#pragma code_page(65001) + +LANGUAGE LANG_HEBREW, SUBLANG_DEFAULT + +IDD_BROWSE_OPEN DIALOG 10, 10, 200, 70 +STYLE DS_MODALFRAME | WS_CAPTION +EXSTYLE WS_EX_LAYOUTRTL +CAPTION "פתיחת כתובת" +FONT 8, "MS Shell Dlg" +{ + LTEXT "נא לציין את הכתובת אותה ברצונך לפתוח באמצעות Internet Explorer",-1,25, 5, 150,15 + LTEXT "פתיחה:", -1, 2, 32, 20, 15 + EDITTEXT IDC_BROWSE_OPEN_URL, 25, 30, 160, 13 + DEFPUSHBUTTON "&אישור", IDOK, 25, 50, 50, 15 + PUSHBUTTON "&ביטול", IDCANCEL, 85, 50, 50, 15 +} + +IDR_BROWSE_MAIN_MENU MENU +{ + POPUP "&קובץ" + { + POPUP "&חדש" + { + MENUITEM "&חלון" ID_BROWSE_NEW_WINDOW + } + MENUITEM "&פתיחה...", ID_BROWSE_OPEN + MENUITEM "&שמירה", ID_BROWSE_SAVE + MENUITEM "שמירה &בשם...", ID_BROWSE_SAVE_AS + MENUITEM SEPARATOR + MENUITEM "&תצורת ההדפסה...", ID_BROWSE_PRINT_FORMAT + MENUITEM "ה&דפסה...", ID_BROWSE_PRINT + MENUITEM "תצוגה מ&קדימה להדפסה...", ID_BROWSE_PRINT_PREVIEW + MENUITEM SEPARATOR + MENUITEM "מ&אפיינים...", ID_BROWSE_PROPERTIES + MENUITEM "&סגירה", ID_BROWSE_QUIT + } + POPUP "&תצוגה" + { + POPUP "&סרגלי כלים" + { + MENUITEM "סרגל הכלים ה&רגיל" ID_BROWSE_BAR_STD + MENUITEM "סרגל ה&כתובות" ID_BROWSE_BAR_ADDR + } + } + POPUP "&מועדפים" + { + MENUITEM "הו&ספה למועדפים..." ID_BROWSE_ADDFAV + MENUITEM SEPARATOR + } + POPUP "ע&זרה" + { + MENUITEM "על &אודות Internet Explorer...", ID_BROWSE_ABOUT + } +} + +STRINGTABLE +{ + IDS_TB_BACK "חזרה" + IDS_TB_FORWARD "קדימה" + IDS_TB_STOP "עצירה" + IDS_TB_REFRESH "רענון" + IDS_TB_HOME "דף הבית" + IDS_TB_PRINT "הדפסה" +} + +STRINGTABLE +{ + IDS_ADDRESS "כתובת" +} diff --git a/reactos/dll/win32/shdocvw/It.rc b/reactos/dll/win32/shdocvw/It.rc new file mode 100644 index 00000000000..7f39c2b08a2 --- /dev/null +++ b/reactos/dll/win32/shdocvw/It.rc @@ -0,0 +1,90 @@ +/* + * Copyright 2010 Alexander N. Sørnes + * Copyright 2010 Luca Bennati + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include "resource.h" + +/* UTF-8 */ +#pragma code_page(65001) + +LANGUAGE LANG_ITALIAN, SUBLANG_NEUTRAL + +IDD_BROWSE_OPEN DIALOG 10, 10, 200, 70 +STYLE DS_MODALFRAME | WS_CAPTION +CAPTION "Apri URL" +FONT 8, "MS Shell Dlg" +{ + LTEXT "Specifica l'URL che vuoi aprire in Internet Explorer",-1,25, 5, 150,15 + LTEXT "Apri:", -1, 2, 32, 20, 15 + EDITTEXT IDC_BROWSE_OPEN_URL, 25, 30, 160, 13 + DEFPUSHBUTTON "&OK", IDOK, 25, 50, 50, 15 + PUSHBUTTON "&Annulla", IDCANCEL, 85, 50, 50, 15 +} + +IDR_BROWSE_MAIN_MENU MENU +{ + POPUP "&File" + { + POPUP "&Nuova" + { + MENUITEM "Fin&estra" ID_BROWSE_NEW_WINDOW + } + MENUITEM "&Apri...", ID_BROWSE_OPEN + MENUITEM "&Salva", ID_BROWSE_SAVE + MENUITEM "Sa&lva come...", ID_BROWSE_SAVE_AS + MENUITEM SEPARATOR + MENUITEM "&Imposta pagina...", ID_BROWSE_PRINT_FORMAT + MENUITEM "S&tampa...", ID_BROWSE_PRINT + MENUITEM "Antepri&ma di stampa...", ID_BROWSE_PRINT_PREVIEW + MENUITEM SEPARATOR + MENUITEM "&Proprietà...", ID_BROWSE_PROPERTIES + MENUITEM "&Chiudi", ID_BROWSE_QUIT + } + POPUP "&Visualizza" + { + POPUP "&Barre degli strumenti" + { + MENUITEM "Barra &predefinita" ID_BROWSE_BAR_STD + MENUITEM "Barra dell'&indirizzo" ID_BROWSE_BAR_ADDR + } + } + POPUP "&Preferiti" + { + MENUITEM "&Aggiungi ai Preferiti..." ID_BROWSE_ADDFAV + MENUITEM SEPARATOR + } + POPUP "&Aiuto" + { + MENUITEM "&Informazioni su Internet Explorer...", ID_BROWSE_ABOUT + } +} + +STRINGTABLE +{ + IDS_TB_BACK "Indietro" + IDS_TB_FORWARD "Avanti" + IDS_TB_STOP "Ferma" + IDS_TB_REFRESH "Aggiorna" + IDS_TB_HOME "Inizio" + IDS_TB_PRINT "Stampa" +} + +STRINGTABLE +{ + IDS_ADDRESS "Indirizzo" +} diff --git a/reactos/dll/win32/shdocvw/Ko.rc b/reactos/dll/win32/shdocvw/Ko.rc new file mode 100644 index 00000000000..613288d945b --- /dev/null +++ b/reactos/dll/win32/shdocvw/Ko.rc @@ -0,0 +1,88 @@ +/* + * Copyright 2010 Alexander N. Sørnes + * Copyright 2010 YunSOng Hwang + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include "resource.h" + +#pragma code_page(65001) + +LANGUAGE LANG_KOREAN, SUBLANG_DEFAULT + +IDD_BROWSE_OPEN DIALOG 10, 10, 200, 70 +STYLE DS_MODALFRAME | WS_CAPTION +CAPTION "URL 열기" +FONT 8, "MS Shell Dlg" +{ + LTEXT "인터넷 익스플로어로 열 URL 지정",-1,25, 5, 150,15 + LTEXT "열기:", -1, 2, 32, 20, 15 + EDITTEXT IDC_BROWSE_OPEN_URL, 25, 30, 160, 13 + DEFPUSHBUTTON "확인(&O)", IDOK, 25, 50, 50, 15 + PUSHBUTTON "취소(&C)", IDCANCEL, 85, 50, 50, 15 +} + +IDR_BROWSE_MAIN_MENU MENU +{ + POPUP "파일(&F)" + { + POPUP "새 작업(&N)" + { + MENUITEM "창(&W)" ID_BROWSE_NEW_WINDOW + } + MENUITEM "열기(&O)...", ID_BROWSE_OPEN + MENUITEM "저장(&S)", ID_BROWSE_SAVE + MENUITEM "다른 이름으로 저장(&A)...", ID_BROWSE_SAVE_AS + MENUITEM SEPARATOR + MENUITEM "인쇄 형식(&F)...", ID_BROWSE_PRINT_FORMAT + MENUITEM "인쇄(&I)...", ID_BROWSE_PRINT + MENUITEM "인쇄 미리보기(&W)...", ID_BROWSE_PRINT_PREVIEW + MENUITEM SEPARATOR + MENUITEM "속성(&P)...", ID_BROWSE_PROPERTIES + } + POPUP "보기(&V)" + { + POPUP "도구바(&T)" + { + MENUITEM "표준 바(&S)" ID_BROWSE_BAR_STD + MENUITEM "주소 바(&A)" ID_BROWSE_BAR_ADDR + } + } + POPUP "즐겨찾기(&F)" + { + MENUITEM "즐겨찾기 추가(&A)..." ID_BROWSE_ADDFAV + MENUITEM SEPARATOR + } + POPUP "도움말(&H)" + { + MENUITEM "인터넷 익스플로어 정보(&A)...", ID_BROWSE_ABOUT + } +} + +STRINGTABLE +{ + IDS_TB_BACK "뒤로" + IDS_TB_FORWARD "앞으로" + IDS_TB_STOP "멈추기" + IDS_TB_REFRESH "새로 고침" + IDS_TB_HOME "홈" + IDS_TB_PRINT "인쇄" +} + +STRINGTABLE +{ + IDS_ADDRESS "주소" +} diff --git a/reactos/dll/win32/shdocvw/Lt.rc b/reactos/dll/win32/shdocvw/Lt.rc new file mode 100644 index 00000000000..b9c0b04b2e3 --- /dev/null +++ b/reactos/dll/win32/shdocvw/Lt.rc @@ -0,0 +1,89 @@ +/* + * Copyright 2010 Aurimas Fišeras + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include "resource.h" + +/* UTF-8 */ +#pragma code_page(65001) + +LANGUAGE LANG_LITHUANIAN, SUBLANG_NEUTRAL + +IDD_BROWSE_OPEN DIALOG 10, 10, 200, 70 +STYLE DS_MODALFRAME | WS_CAPTION +CAPTION "Atverti URL" +FONT 8, "MS Shell Dlg" +{ + LTEXT "Nurodykite URL, kurį norite atverti su interneto naršykle",-1 ,30, 5, 150, 16 + LTEXT "Atverti:", -1, 2, 32, 25, 15 + EDITTEXT IDC_BROWSE_OPEN_URL, 30, 30, 160, 13 + DEFPUSHBUTTON "&Gerai", IDOK, 30, 50, 50, 15 + PUSHBUTTON "&Atsisakyti", IDCANCEL, 90, 50, 50, 15 +} + +IDR_BROWSE_MAIN_MENU MENU +{ + POPUP "&Failas" + { + POPUP "&Naujas" + { + MENUITEM "&Langas" ID_BROWSE_NEW_WINDOW + } + MENUITEM "&Atverti...", ID_BROWSE_OPEN + MENUITEM "&Išsaugoti", ID_BROWSE_SAVE + MENUITEM "Išsaugoti &kaip...", ID_BROWSE_SAVE_AS + MENUITEM SEPARATOR + MENUITEM "Spaudinio &formatas...", ID_BROWSE_PRINT_FORMAT + MENUITEM "S&pausdinti...", ID_BROWSE_PRINT + MENUITEM "Spaudinio pe&ržiūra...", ID_BROWSE_PRINT_PREVIEW + MENUITEM SEPARATOR + MENUITEM "&Savybės...", ID_BROWSE_PROPERTIES + MENUITEM "&Užverti", ID_BROWSE_QUIT + } + POPUP "&Rodymas" + { + POPUP "&Įrankių juosta" + { + MENUITEM "Į&prastinė juosta" ID_BROWSE_BAR_STD + MENUITEM "&Adreso juosta" ID_BROWSE_BAR_ADDR + } + } + POPUP "&Adresynas" + { + MENUITEM "Į&rašyti į adresyną..." ID_BROWSE_ADDFAV + MENUITEM SEPARATOR + } + POPUP "&Žinynas" + { + MENUITEM "&Apie interneto naršyklę...", ID_BROWSE_ABOUT + } +} + +STRINGTABLE +{ + IDS_TB_BACK "Atgal" + IDS_TB_FORWARD "Pirmyn" + IDS_TB_STOP "Stabdyti" + IDS_TB_REFRESH "Atnaujinti" + IDS_TB_HOME "Pradžia" + IDS_TB_PRINT "Spausdinti" +} + +STRINGTABLE +{ + IDS_ADDRESS "Adresas" +} diff --git a/reactos/dll/win32/shdocvw/Nl.rc b/reactos/dll/win32/shdocvw/Nl.rc new file mode 100644 index 00000000000..fc5a1f397c0 --- /dev/null +++ b/reactos/dll/win32/shdocvw/Nl.rc @@ -0,0 +1,86 @@ +/* + * Copyright 2010 Sven Baars + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include "resource.h" + +LANGUAGE LANG_DUTCH, SUBLANG_NEUTRAL + +IDD_BROWSE_OPEN DIALOG 10, 10, 200, 70 +STYLE DS_MODALFRAME | WS_CAPTION +CAPTION "Open URL" +FONT 8, "MS Shell Dlg" +{ + LTEXT "Specificeer de URL die u wilt openen in Internet Explorer",-1,25, 5, 150,15 + LTEXT "Open:", -1, 2, 32, 20, 15 + EDITTEXT IDC_BROWSE_OPEN_URL, 25, 30, 160, 13 + DEFPUSHBUTTON "&OK", IDOK, 25, 50, 50, 15 + PUSHBUTTON "&Annuleren", IDCANCEL, 85, 50, 50, 15 +} + +IDR_BROWSE_MAIN_MENU MENU +{ + POPUP "&Bestand" + { + POPUP "&Nieuw" + { + MENUITEM "&Venster" ID_BROWSE_NEW_WINDOW + } + MENUITEM "&Openen...", ID_BROWSE_OPEN + MENUITEM "Op&slaan", ID_BROWSE_SAVE + MENUITEM "Ops&laan als...", ID_BROWSE_SAVE_AS + MENUITEM SEPARATOR + MENUITEM "Pa&gina-instellingen...", ID_BROWSE_PRINT_FORMAT + MENUITEM "Af&drukken...", ID_BROWSE_PRINT + MENUITEM "Afdruk&voorbeeld...", ID_BROWSE_PRINT_PREVIEW + MENUITEM SEPARATOR + MENUITEM "&Eigenschappen...", ID_BROWSE_PROPERTIES + MENUITEM "&Afsluiten", ID_BROWSE_QUIT + } + POPUP "Bee&ld" + { + POPUP "&Werkbalken" + { + MENUITEM "&Standaardbalk" ID_BROWSE_BAR_STD + MENUITEM "&Adresbalk" ID_BROWSE_BAR_ADDR + } + } + POPUP "&Favorieten" + { + MENUITEM "&Toevoegen aan Favorieten..." ID_BROWSE_ADDFAV + MENUITEM SEPARATOR + } + POPUP "&Help" + { + MENUITEM "&Over Internet Explorer...", ID_BROWSE_ABOUT + } +} + +STRINGTABLE +{ + IDS_TB_BACK "Terug" + IDS_TB_FORWARD "Vooruit" + IDS_TB_STOP "Stoppen" + IDS_TB_REFRESH "Vernieuwen" + IDS_TB_HOME "Startpagina" + IDS_TB_PRINT "Printen" +} + +STRINGTABLE +{ + IDS_ADDRESS "Adres" +} diff --git a/reactos/dll/win32/shdocvw/Pl.rc b/reactos/dll/win32/shdocvw/Pl.rc new file mode 100644 index 00000000000..5a6ada86e6e --- /dev/null +++ b/reactos/dll/win32/shdocvw/Pl.rc @@ -0,0 +1,87 @@ +/* + * Copyright 2010 ukasz Wojniowicz + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include "resource.h" + + +LANGUAGE LANG_POLISH, SUBLANG_DEFAULT + +IDD_BROWSE_OPEN DIALOG 10, 10, 200, 70 +STYLE DS_MODALFRAME | WS_CAPTION +CAPTION "Otwrz URL" +FONT 8, "MS Shell Dlg" +{ + LTEXT "Podaj adres URL, ktry chcesz otworzy w Internet Explorerze",-1,25, 5, 150,15 + LTEXT "Otwrz:", -1, 2, 32, 20, 15 + EDITTEXT IDC_BROWSE_OPEN_URL, 25, 30, 160, 13 + DEFPUSHBUTTON "&OK", IDOK, 25, 50, 50, 15 + PUSHBUTTON "&Anuluj", IDCANCEL, 85, 50, 50, 15 +} + +IDR_BROWSE_MAIN_MENU MENU +{ + POPUP "&Plik" + { + POPUP "&Nowe" + { + MENUITEM "&Okno" ID_BROWSE_NEW_WINDOW + } + MENUITEM "&Otwrz...", ID_BROWSE_OPEN + MENUITEM "&Zapisz", ID_BROWSE_SAVE + MENUITEM "Zapisz &jako...", ID_BROWSE_SAVE_AS + MENUITEM SEPARATOR + MENUITEM "Forma&t wydruku...", ID_BROWSE_PRINT_FORMAT + MENUITEM "&Drukuj...", ID_BROWSE_PRINT + MENUITEM "Podgl&d wydruku...", ID_BROWSE_PRINT_PREVIEW + MENUITEM SEPARATOR + MENUITEM "&Waciwoci...", ID_BROWSE_PROPERTIES + MENUITEM "&Zamknij...", ID_BROWSE_QUIT + } + POPUP "&Widok" + { + POPUP "&Paski narzdzi" + { + MENUITEM "Pasek &standardowy" ID_BROWSE_BAR_STD + MENUITEM "&Pasek adresu" ID_BROWSE_BAR_ADDR + } + } + POPUP "&Ulubione" + { + MENUITEM "&Dodaj do ulubionych..." ID_BROWSE_ADDFAV + MENUITEM SEPARATOR + } + POPUP "&Pomoc" + { + MENUITEM "&O Internet Explorer...", ID_BROWSE_ABOUT + } +} + +STRINGTABLE +{ + IDS_TB_BACK "Wstecz" + IDS_TB_FORWARD "Dalej" + IDS_TB_STOP "Zatrzymaj" + IDS_TB_REFRESH "Odwierz" + IDS_TB_HOME "Strona gwna" + IDS_TB_PRINT "Drukuj" +} + +STRINGTABLE +{ + IDS_ADDRESS "Adres" +} diff --git a/reactos/dll/win32/shdocvw/Pt.rc b/reactos/dll/win32/shdocvw/Pt.rc new file mode 100644 index 00000000000..9dff39c58c8 --- /dev/null +++ b/reactos/dll/win32/shdocvw/Pt.rc @@ -0,0 +1,94 @@ +/* + * Copyright 2010 Gustavo Henrique Milaré + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include "resource.h" + +#pragma code_page(65001) + +LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE_BRAZILIAN + +IDD_BROWSE_OPEN DIALOG 10, 10, 200, 70 +STYLE DS_MODALFRAME | WS_CAPTION +CAPTION "Abrir URL" +FONT 8, "MS Shell Dlg" +{ + LTEXT "Especifique a URL que você deseja abrir no Internet Explorer",-1,25, 5, 150,15 + LTEXT "Abrir:", -1, 2, 32, 20, 15 + EDITTEXT IDC_BROWSE_OPEN_URL, 25, 30, 160, 13 + DEFPUSHBUTTON "&OK", IDOK, 25, 50, 50, 15 + PUSHBUTTON "&Cancelar", IDCANCEL, 85, 50, 50, 15 +} + +LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE_BRAZILIAN + +IDR_BROWSE_MAIN_MENU MENU +{ + POPUP "&Arquivo" + { + POPUP "&Novo" + { + MENUITEM "&Janela" ID_BROWSE_NEW_WINDOW + } + MENUITEM "&Abrir...", ID_BROWSE_OPEN + MENUITEM "&Salvar", ID_BROWSE_SAVE + MENUITEM "Salvar &como...", ID_BROWSE_SAVE_AS + MENUITEM SEPARATOR + MENUITEM "Imprimir &formato...", ID_BROWSE_PRINT_FORMAT + MENUITEM "&Imprimir...", ID_BROWSE_PRINT + MENUITEM "&Vizualizar impressão...", ID_BROWSE_PRINT_PREVIEW + MENUITEM SEPARATOR + MENUITEM "&Propriedades...", ID_BROWSE_PROPERTIES + MENUITEM "&Fechar", ID_BROWSE_QUIT + } + POPUP "&Ver" + { + POPUP "&Ferramentas" + { + MENUITEM "Barra &padrão" ID_BROWSE_BAR_STD + MENUITEM "Barra de &endereço" ID_BROWSE_BAR_ADDR + } + } + POPUP "&Favoritos" + { + MENUITEM "&Adicionar aos Favoritos..." ID_BROWSE_ADDFAV + MENUITEM SEPARATOR + } + POPUP "A&juda" + { + MENUITEM "&Sobre o Internet Explorer...", ID_BROWSE_ABOUT + } +} + +LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE_BRAZILIAN + +STRINGTABLE +{ + IDS_TB_BACK "Voltar" + IDS_TB_FORWARD "Avançar" + IDS_TB_STOP "Parar" + IDS_TB_REFRESH "Atualizar" + IDS_TB_HOME "Início" + IDS_TB_PRINT "Imprimir" +} + +LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE_BRAZILIAN + +STRINGTABLE +{ + IDS_ADDRESS "Endereço" +} diff --git a/reactos/dll/win32/shdocvw/Ro.rc b/reactos/dll/win32/shdocvw/Ro.rc new file mode 100644 index 00000000000..38c51caab8d --- /dev/null +++ b/reactos/dll/win32/shdocvw/Ro.rc @@ -0,0 +1,60 @@ +/* + * Copyright 2010 Alexander N. Sørnes + * Copyright 2010 Michael Stefaniuc + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include "resource.h" + +LANGUAGE LANG_ROMANIAN, SUBLANG_NEUTRAL + +#pragma code_page(65001) + +IDD_BROWSE_OPEN DIALOG 10, 10, 210, 70 +STYLE DS_MODALFRAME | WS_CAPTION +CAPTION "Deschide URL-ul" +FONT 8, "MS Shell Dlg" +{ + LTEXT "Specificați URL-ul pe care doriți să îl deschideți în Internet Explorer",-1,35, 5, 160,15 + LTEXT "Deschide:", -1, 2, 32, 30, 15 + EDITTEXT IDC_BROWSE_OPEN_URL, 35, 30, 170, 13 + DEFPUSHBUTTON "&OK", IDOK, 35, 50, 50, 15 + PUSHBUTTON "&Renunță", IDCANCEL, 95, 50, 50, 15 +} + +IDR_BROWSE_MAIN_MENU MENU +{ + POPUP "&Fișier" + { + POPUP "&Nou" + { + MENUITEM "&Fereastră" ID_BROWSE_NEW_WINDOW + } + MENUITEM "&Deschidere...", ID_BROWSE_OPEN + MENUITEM "&Salvează", ID_BROWSE_SAVE + MENUITEM "S&alvare ca...", ID_BROWSE_SAVE_AS + MENUITEM SEPARATOR + MENUITEM "&Format tipărire...", ID_BROWSE_PRINT_FORMAT + MENUITEM "T&ipărire...", ID_BROWSE_PRINT + MENUITEM "Pre&vizualizare imprimare...", ID_BROWSE_PRINT_PREVIEW + MENUITEM SEPARATOR + MENUITEM "&Proprietăți...", ID_BROWSE_PROPERTIES + } + POPUP "&Ajutor" + { + MENUITEM "&Despre Internet Explorer...", ID_BROWSE_ABOUT + } +} diff --git a/reactos/dll/win32/shdocvw/Si.rc b/reactos/dll/win32/shdocvw/Si.rc new file mode 100644 index 00000000000..35d501444c5 --- /dev/null +++ b/reactos/dll/win32/shdocvw/Si.rc @@ -0,0 +1,88 @@ +/* + * Copyright 2010 Matej Spindler + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include "resource.h" + +#pragma code_page(65001) + +LANGUAGE LANG_SLOVENIAN, SUBLANG_DEFAULT + +IDD_BROWSE_OPEN DIALOG 10, 10, 200, 70 +STYLE DS_MODALFRAME | WS_CAPTION +CAPTION "Open URL" +FONT 8, "MS Shell Dlg" +{ + LTEXT "Vnesite interneti naslov dokumenta, ki ga bo Internet Explorer odpru.",-1,25, 5, 150,15 + LTEXT "Odpri:", -1, 2, 32, 20, 15 + EDITTEXT IDC_BROWSE_OPEN_URL, 25, 30, 160, 13 + DEFPUSHBUTTON "&V redu", IDOK, 25, 50, 50, 15 + PUSHBUTTON "&Prekliči", IDCANCEL, 85, 50, 50, 15 +} + +IDR_BROWSE_MAIN_MENU MENU +{ + POPUP "&Datoteka" + { + POPUP "&Nov" + { + MENUITEM "&Okno" ID_BROWSE_NEW_WINDOW + } + MENUITEM "&Odpri ...", ID_BROWSE_OPEN + MENUITEM "&Shrani", ID_BROWSE_SAVE + MENUITEM "Shrani &kot ...", ID_BROWSE_SAVE_AS + MENUITEM SEPARATOR + MENUITEM "Nastavitve tiskanja ...", ID_BROWSE_PRINT_FORMAT + MENUITEM "Na&tisni ...", ID_BROWSE_PRINT + MENUITEM "Predo&gled tiskanja ...", ID_BROWSE_PRINT_PREVIEW + MENUITEM SEPARATOR + MENUITEM "&Lastnosti ...", ID_BROWSE_PROPERTIES + MENUITEM "&Zapri", ID_BROWSE_QUIT + } + POPUP "Pogl&ed" + { + POPUP "Oro&dne vrstice" + { + MENUITEM "&Statusna vrstica" ID_BROWSE_BAR_STD + MENUITEM "&Naslovna vrstica" ID_BROWSE_BAR_ADDR + } + } + POPUP "&Priljubljene" + { + MENUITEM "&Dodaj med priljubljene ..." ID_BROWSE_ADDFAV + MENUITEM SEPARATOR + } + POPUP "&Pomoč" + { + MENUITEM "O programu Internet Explorer ...",ID_BROWSE_ABOUT + } +} + +STRINGTABLE +{ + IDS_TB_BACK "Nazaj" + IDS_TB_FORWARD "Naprej" + IDS_TB_STOP "Stop" + IDS_TB_REFRESH "Osveži" + IDS_TB_HOME "Domov" + IDS_TB_PRINT "Natisni" +} + +STRINGTABLE +{ + IDS_ADDRESS "Naslov" +} diff --git a/reactos/dll/win32/shdocvw/Sr.rc b/reactos/dll/win32/shdocvw/Sr.rc new file mode 100644 index 00000000000..5fd9e72b9b2 --- /dev/null +++ b/reactos/dll/win32/shdocvw/Sr.rc @@ -0,0 +1,156 @@ +/* + * Copyright 2010 Alexander N. Sørnes + * Copyright 2010 Đorđe Vasiljević + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include "resource.h" + +#pragma code_page(65001) + +LANGUAGE LANG_SERBIAN, SUBLANG_SERBIAN_CYRILLIC + +IDD_BROWSE_OPEN DIALOG 10, 10, 200, 70 +STYLE DS_MODALFRAME | WS_CAPTION +CAPTION "Отварање адресе" +FONT 8, "MS Shell Dlg" +{ + LTEXT "Унесите адресу коју желите да отворите у Internet Explorer-у",-1,25, 5, 150,15 + LTEXT "Отвори:", -1, 2, 32, 20, 15 + EDITTEXT IDC_BROWSE_OPEN_URL, 25, 30, 160, 13 + DEFPUSHBUTTON "&У реду", IDOK, 25, 50, 50, 15 + PUSHBUTTON "&Откажи", IDCANCEL, 85, 50, 50, 15 +} + +IDR_BROWSE_MAIN_MENU MENU +{ + POPUP "&Датотека" + { + POPUP "&Ново" + { + MENUITEM "&Прозор" ID_BROWSE_NEW_WINDOW + } + MENUITEM "&Отвори...", ID_BROWSE_OPEN + MENUITEM "&Сачувај", ID_BROWSE_SAVE + MENUITEM "Сачувај &као...", ID_BROWSE_SAVE_AS + MENUITEM SEPARATOR + MENUITEM "Формат &штампе...", ID_BROWSE_PRINT_FORMAT + MENUITEM "&Штампај...", ID_BROWSE_PRINT + MENUITEM "&Преглед штампе...", ID_BROWSE_PRINT_PREVIEW + MENUITEM SEPARATOR + MENUITEM "&Својства...", ID_BROWSE_PROPERTIES + MENUITEM "&Затвори", ID_BROWSE_QUIT + } + POPUP "&Приказ" + { + POPUP "&Алатнице" + { + MENUITEM "&Стандардна трака" ID_BROWSE_BAR_STD + MENUITEM "&Трака за навигацију" ID_BROWSE_BAR_ADDR + } + } + POPUP "&Омиљено" + { + MENUITEM "&Додај у омиљене..." ID_BROWSE_ADDFAV + MENUITEM SEPARATOR + } + POPUP "&Помоћ" + { + MENUITEM "&О Internet Explorer-у...", ID_BROWSE_ABOUT + } +} + +STRINGTABLE +{ + IDS_TB_BACK "Назад" + IDS_TB_FORWARD "Напред" + IDS_TB_STOP "Заустави" + IDS_TB_REFRESH "Освежи" + IDS_TB_HOME "Почетна" + IDS_TB_PRINT "Штампај" +} + +STRINGTABLE +{ + IDS_ADDRESS "Адреса" +} + +LANGUAGE LANG_SERBIAN, SUBLANG_SERBIAN_LATIN + +IDD_BROWSE_OPEN DIALOG 10, 10, 200, 70 +STYLE DS_MODALFRAME | WS_CAPTION +CAPTION "Otvaranje adrese" +FONT 8, "MS Shell Dlg" +{ + LTEXT "Unesite adresu koju želite da otvorite u Internet Explorer-u",-1,25, 5, 150,15 + LTEXT "Otvori:", -1, 2, 32, 20, 15 + EDITTEXT IDC_BROWSE_OPEN_URL, 25, 30, 160, 13 + DEFPUSHBUTTON "&U redu", IDOK, 25, 50, 50, 15 + PUSHBUTTON "&Otkaži", IDCANCEL, 85, 50, 50, 15 +} + +IDR_BROWSE_MAIN_MENU MENU +{ + POPUP "&Datoteka" + { + POPUP "&Novo" + { + MENUITEM "&Prozor" ID_BROWSE_NEW_WINDOW + } + MENUITEM "&Otvori...", ID_BROWSE_OPEN + MENUITEM "&Sačuvaj", ID_BROWSE_SAVE + MENUITEM "Sačuvaj &kao...", ID_BROWSE_SAVE_AS + MENUITEM SEPARATOR + MENUITEM "Format &štampe...", ID_BROWSE_PRINT_FORMAT + MENUITEM "&Štampaj...", ID_BROWSE_PRINT + MENUITEM "&Pregled štampe...", ID_BROWSE_PRINT_PREVIEW + MENUITEM SEPARATOR + MENUITEM "&Svojstva...", ID_BROWSE_PROPERTIES + MENUITEM "&Zatvori", ID_BROWSE_QUIT + } + POPUP "&Prikaz" + { + POPUP "&Alatnice" + { + MENUITEM "&Standardna traka" ID_BROWSE_BAR_STD + MENUITEM "&Traka za navigaciju" ID_BROWSE_BAR_ADDR + } + } + POPUP "&Omiljeno" + { + MENUITEM "&Dodaj u omiljene..." ID_BROWSE_ADDFAV + MENUITEM SEPARATOR + } + POPUP "&Pomoć" + { + MENUITEM "&O Internet Explorer-u...", ID_BROWSE_ABOUT + } +} + +STRINGTABLE +{ + IDS_TB_BACK "Nazad" + IDS_TB_FORWARD "Napred" + IDS_TB_STOP "Zaustavi" + IDS_TB_REFRESH "Osveži" + IDS_TB_HOME "Početna" + IDS_TB_PRINT "Štampaj" +} + +STRINGTABLE +{ + IDS_ADDRESS "Adresa" +} diff --git a/reactos/dll/win32/shdocvw/Sv.rc b/reactos/dll/win32/shdocvw/Sv.rc new file mode 100644 index 00000000000..f71d4edf311 --- /dev/null +++ b/reactos/dll/win32/shdocvw/Sv.rc @@ -0,0 +1,88 @@ +/* + * Copyright 2010 Anders Jonsson + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include "resource.h" + +#pragma code_page(65001) + +LANGUAGE LANG_SWEDISH, SUBLANG_NEUTRAL + +IDD_BROWSE_OPEN DIALOG 10, 10, 200, 70 +STYLE DS_MODALFRAME | WS_CAPTION +CAPTION "Öppna webbadress" +FONT 8, "MS Shell Dlg" +{ + LTEXT "Ange webbadressen du vill öppna med Internet Explorer",-1,25, 5, 150,15 + LTEXT "Öppna:", -1, 2, 32, 20, 15 + EDITTEXT IDC_BROWSE_OPEN_URL, 25, 30, 160, 13 + DEFPUSHBUTTON "&OK", IDOK, 25, 50, 50, 15 + PUSHBUTTON "&Avbryt", IDCANCEL, 85, 50, 50, 15 +} + +IDR_BROWSE_MAIN_MENU MENU +{ + POPUP "&Arkiv" + { + POPUP "&Nytt" + { + MENUITEM "&Fönster" ID_BROWSE_NEW_WINDOW + } + MENUITEM "&Öppna...", ID_BROWSE_OPEN + MENUITEM "&Spara", ID_BROWSE_SAVE + MENUITEM "S¶ som...", ID_BROWSE_SAVE_AS + MENUITEM SEPARATOR + MENUITEM "U&tskriftsformat...", ID_BROWSE_PRINT_FORMAT + MENUITEM "Skriv &ut...", ID_BROWSE_PRINT + MENUITEM "&Förhandsgranska...", ID_BROWSE_PRINT_PREVIEW + MENUITEM SEPARATOR + MENUITEM "&Egenskaper...", ID_BROWSE_PROPERTIES + MENUITEM "Stä&ng", ID_BROWSE_QUIT + } + POPUP "&Visa" + { + POPUP "Verktygs&fält" + { + MENUITEM "&Standardfält" ID_BROWSE_BAR_STD + MENUITEM "&Adressfält" ID_BROWSE_BAR_ADDR + } + } + POPUP "&Favoriter" + { + MENUITEM "&Lägg till favoriter..." ID_BROWSE_ADDFAV + MENUITEM SEPARATOR + } + POPUP "&Hjälp" + { + MENUITEM "&Om Internet Explorer...", ID_BROWSE_ABOUT + } +} + +STRINGTABLE +{ + IDS_TB_BACK "Bakåt" + IDS_TB_FORWARD "Framåt" + IDS_TB_STOP "Stopp" + IDS_TB_REFRESH "Uppdatera" + IDS_TB_HOME "Hem" + IDS_TB_PRINT "Skriv ut" +} + +STRINGTABLE +{ + IDS_ADDRESS "Adress" +} diff --git a/reactos/dll/win32/shdocvw/Uk.rc b/reactos/dll/win32/shdocvw/Uk.rc new file mode 100644 index 00000000000..95e14849644 --- /dev/null +++ b/reactos/dll/win32/shdocvw/Uk.rc @@ -0,0 +1,90 @@ +/* + * Copyright 2010 Alexander N. Sørnes + * Copyright 2010 Igor Paliychuk + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include "resource.h" + +/* UTF-8 */ +#pragma code_page(65001) + +LANGUAGE LANG_UKRAINIAN, SUBLANG_DEFAULT + +IDD_BROWSE_OPEN DIALOG 10, 10, 200, 70 +STYLE DS_MODALFRAME | WS_CAPTION +CAPTION "Відкрити URL" +FONT 8, "MS Shell Dlg" +{ + LTEXT "Вкажіть URL, що ви хочете відкрити в Internet Explorer",-1,25, 5, 150,15 + LTEXT "Відкрити:", -1, 2, 32, 30, 15 + EDITTEXT IDC_BROWSE_OPEN_URL, 35, 30, 160, 13 + DEFPUSHBUTTON "&OK", IDOK, 45, 50, 50, 15 + PUSHBUTTON "&Скасувати", IDCANCEL, 105, 50, 50, 15 +} + +IDR_BROWSE_MAIN_MENU MENU +{ + POPUP "&Файл" + { + POPUP "&Створити" + { + MENUITEM "&Вікно" ID_BROWSE_NEW_WINDOW + } + MENUITEM "&Відкрити...", ID_BROWSE_OPEN + MENUITEM "&Зберегти", ID_BROWSE_SAVE + MENUITEM "Зберегти &як...", ID_BROWSE_SAVE_AS + MENUITEM SEPARATOR + MENUITEM "&Формат друку...", ID_BROWSE_PRINT_FORMAT + MENUITEM "&Друк...", ID_BROWSE_PRINT + MENUITEM "Попередній пе&регляд...", ID_BROWSE_PRINT_PREVIEW + MENUITEM SEPARATOR + MENUITEM "В&ластивості...", ID_BROWSE_PROPERTIES + MENUITEM "За&крити", ID_BROWSE_QUIT + } + POPUP "&Вигляд" + { + POPUP "&Панелі інструментів" + { + MENUITEM "&Стандартна панель" ID_BROWSE_BAR_STD + MENUITEM "Рядок &адреси" ID_BROWSE_BAR_ADDR + } + } + POPUP "&Обране" + { + MENUITEM "&Додати до Обраного..." ID_BROWSE_ADDFAV + MENUITEM SEPARATOR + } + POPUP "&Довідка" + { + MENUITEM "&Про Internet Explorer...", ID_BROWSE_ABOUT + } +} + +STRINGTABLE +{ + IDS_TB_BACK "Назад" + IDS_TB_FORWARD "Вперед" + IDS_TB_STOP "Зупинити" + IDS_TB_REFRESH "Оновити" + IDS_TB_HOME "Додому" + IDS_TB_PRINT "Друк" +} + +STRINGTABLE +{ + IDS_ADDRESS "Адреса" +} diff --git a/reactos/dll/win32/shdocvw/dochost.c b/reactos/dll/win32/shdocvw/dochost.c index b3db0125700..f74d06413ac 100644 --- a/reactos/dll/win32/shdocvw/dochost.c +++ b/reactos/dll/win32/shdocvw/dochost.c @@ -311,7 +311,7 @@ void create_doc_view_hwnd(DocHost *This) doc_view_atom = RegisterClassExW(&wndclass); } - GetClientRect(This->frame_hwnd, &rect); /* FIXME */ + This->container_vtbl->GetDocObjRect(This, &rect); This->hwnd = CreateWindowExW(0, wszShell_DocObject_View, wszShell_DocObject_View, WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_TABSTOP, @@ -447,8 +447,14 @@ static HRESULT WINAPI ClOleCommandTarget_Exec(IOleCommandTarget *iface, nCmdexecopt, debugstr_variant(pvaIn), debugstr_variant(pvaOut)); if(!pguidCmdGroup) { - FIXME("Unimplemented cmdid %d\n", nCmdID); - return E_NOTIMPL; + switch(nCmdID) { + case OLECMDID_UPDATECOMMANDS: + return This->container_vtbl->exec(This, pguidCmdGroup, nCmdID, nCmdexecopt, pvaIn, pvaOut); + default: + FIXME("Unimplemented cmdid %d\n", nCmdID); + return E_NOTIMPL; + } + return S_OK; } if(IsEqualGUID(pguidCmdGroup, &CGID_DocHostCmdPriv)) { @@ -783,7 +789,7 @@ static const IPropertyNotifySinkVtbl PropertyNotifySinkVtbl = { PropertyNotifySink_OnRequestEdit }; -void DocHost_Init(DocHost *This, IDispatch *disp) +void DocHost_Init(DocHost *This, IDispatch *disp, const IDocHostContainerVtbl* container) { This->lpDocHostUIHandlerVtbl = &DocHostUIHandler2Vtbl; This->lpOleCommandTargetVtbl = &OleCommandTargetVtbl; @@ -791,6 +797,8 @@ void DocHost_Init(DocHost *This, IDispatch *disp) This->disp = disp; + This->container_vtbl = container; + This->client_disp = NULL; This->document = NULL; diff --git a/reactos/dll/win32/shdocvw/frame.c b/reactos/dll/win32/shdocvw/frame.c index eeff20adcb3..2f089c12595 100644 --- a/reactos/dll/win32/shdocvw/frame.c +++ b/reactos/dll/win32/shdocvw/frame.c @@ -33,6 +33,9 @@ static HRESULT WINAPI InPlaceFrame_QueryInterface(IOleInPlaceFrame *iface, if(IsEqualGUID(&IID_IUnknown, riid)) { TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv); *ppv = INPLACEFRAME(This); + }else if(IsEqualGUID(&IID_IOleWindow, riid)) { + TRACE("(%p)->(IID_IOleWindow %p)\n", This, ppv); + *ppv = INPLACEFRAME(This); }else if(IsEqualGUID(&IID_IOleInPlaceUIWindow, riid)) { TRACE("(%p)->(IID_IOleInPlaceUIWindow %p)\n", This, ppv); *ppv = INPLACEFRAME(This); @@ -135,8 +138,8 @@ static HRESULT WINAPI InPlaceFrame_SetStatusText(IOleInPlaceFrame *iface, LPCOLESTR pszStatusText) { DocHost *This = INPLACEFRAME_THIS(iface); - FIXME("(%p)->(%s)\n", This, debugstr_w(pszStatusText)); - return E_NOTIMPL; + TRACE("(%p)->(%s)\n", This, debugstr_w(pszStatusText)); + return This->container_vtbl->SetStatusText(This, pszStatusText); } static HRESULT WINAPI InPlaceFrame_EnableModeless(IOleInPlaceFrame *iface, BOOL fEnable) diff --git a/reactos/dll/win32/shdocvw/ie.c b/reactos/dll/win32/shdocvw/ie.c index 9d661ca7071..2a048e3ae8f 100644 --- a/reactos/dll/win32/shdocvw/ie.c +++ b/reactos/dll/win32/shdocvw/ie.c @@ -47,6 +47,8 @@ static HRESULT WINAPI InternetExplorer_QueryInterface(IWebBrowser2 *iface, REFII }else if(IsEqualGUID(&IID_IConnectionPointContainer, riid)) { TRACE("(%p)->(IID_IConnectionPointContainer %p)\n", This, ppv); *ppv = CONPTCONT(&This->doc_host.cps); + }else if(HlinkFrame_QI(&This->hlink_frame, riid, ppv)) { + return S_OK; } if(*ppv) { @@ -394,8 +396,10 @@ static HRESULT WINAPI InternetExplorer_get_StatusText(IWebBrowser2 *iface, BSTR static HRESULT WINAPI InternetExplorer_put_StatusText(IWebBrowser2 *iface, BSTR StatusText) { InternetExplorer *This = WEBBROWSER_THIS(iface); - FIXME("(%p)->(%s)\n", This, debugstr_w(StatusText)); - return E_NOTIMPL; + + TRACE("(%p)->(%s)\n", This, debugstr_w(StatusText)); + + return update_ie_statustext(This, StatusText); } static HRESULT WINAPI InternetExplorer_get_ToolBar(IWebBrowser2 *iface, int *Value) @@ -426,19 +430,11 @@ static HRESULT WINAPI InternetExplorer_put_MenuBar(IWebBrowser2 *iface, VARIANT_ TRACE("(%p)->(%x)\n", This, Value); - if((menu = GetMenu(This->frame_hwnd))) - DestroyMenu(menu); - - menu = NULL; - if(Value) - menu = LoadMenuW(shdocvw_hinstance, MAKEINTRESOURCEW(IDR_BROWSE_MAIN_MENU)); + menu = This->menu; if(!SetMenu(This->frame_hwnd, menu)) - { - DestroyMenu(menu); return HRESULT_FROM_WIN32(GetLastError()); - } return S_OK; } diff --git a/reactos/dll/win32/shdocvw/ietoolbar.bmp b/reactos/dll/win32/shdocvw/ietoolbar.bmp new file mode 100644 index 00000000000..d4123627329 Binary files /dev/null and b/reactos/dll/win32/shdocvw/ietoolbar.bmp differ diff --git a/reactos/dll/win32/shdocvw/ietoolbar.svg b/reactos/dll/win32/shdocvw/ietoolbar.svg new file mode 100644 index 00000000000..24866a919c6 --- /dev/null +++ b/reactos/dll/win32/shdocvw/ietoolbar.svg @@ -0,0 +1,285 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/reactos/dll/win32/shdocvw/iexplore.c b/reactos/dll/win32/shdocvw/iexplore.c index fa643feecfa..a0d2684894f 100644 --- a/reactos/dll/win32/shdocvw/iexplore.c +++ b/reactos/dll/win32/shdocvw/iexplore.c @@ -34,6 +34,9 @@ #include "shdocvw.h" #include "mshtmcid.h" #include "shellapi.h" +#include "winreg.h" +#include "shlwapi.h" +#include "intshcut.h" #include "wine/debug.h" @@ -41,12 +44,299 @@ WINE_DEFAULT_DEBUG_CHANNEL(shdocvw); #define IDI_APPICON 1 +#define DOCHOST_THIS(iface) DEFINE_THIS2(InternetExplorer,doc_host,iface) + static const WCHAR szIEWinFrame[] = { 'I','E','F','r','a','m','e',0 }; /* Windows uses "Microsoft Internet Explorer" */ static const WCHAR wszWineInternetExplorer[] = {'W','i','n','e',' ','I','n','t','e','r','n','e','t',' ','E','x','p','l','o','r','e','r',0}; +HRESULT update_ie_statustext(InternetExplorer* This, LPCWSTR text) +{ + if(!SendMessageW(This->status_hwnd, SB_SETTEXTW, MAKEWORD(SB_SIMPLEID, 0), (LPARAM)text)) + return E_FAIL; + + return S_OK; +} + +static void adjust_ie_docobj_rect(HWND frame, RECT* rc) +{ + HWND hwndRebar = GetDlgItem(frame, IDC_BROWSE_REBAR); + HWND hwndStatus = GetDlgItem(frame, IDC_BROWSE_STATUSBAR); + INT barHeight = SendMessageW(hwndRebar, RB_GETBARHEIGHT, 0, 0); + + rc->top += barHeight; + rc->bottom -= barHeight; + + if(IsWindowVisible(hwndStatus)) + { + RECT statusrc; + + GetClientRect(hwndStatus, &statusrc); + rc->bottom -= statusrc.bottom - statusrc.top; + } +} + +static HMENU get_tb_menu(HMENU menu) +{ + HMENU menu_view = GetSubMenu(menu, 1); + + return GetSubMenu(menu_view, 0); +} + +static HMENU get_fav_menu(HMENU menu) +{ + return GetSubMenu(menu, 2); +} + +static LPWSTR get_fav_url_from_id(HMENU menu, UINT id) +{ + MENUITEMINFOW item; + + item.cbSize = sizeof(item); + item.fMask = MIIM_DATA; + + if(!GetMenuItemInfoW(menu, id, FALSE, &item)) + return NULL; + + return (LPWSTR)item.dwItemData; +} + +static void free_fav_menu_data(HMENU menu) +{ + LPWSTR url; + int i; + + for(i = 0; (url = get_fav_url_from_id(menu, ID_BROWSE_GOTOFAV_FIRST + i)); i++) + heap_free( url ); +} + +static int get_menu_item_count(HMENU menu) +{ + MENUITEMINFOW item; + int count = 0; + int i; + + item.cbSize = sizeof(item); + item.fMask = MIIM_DATA | MIIM_SUBMENU; + + for(i = 0; GetMenuItemInfoW(menu, i, TRUE, &item); i++) + { + if(item.hSubMenu) + count += get_menu_item_count(item.hSubMenu); + else + count++; + } + + return count; +} + +static void add_fav_to_menu(HMENU favmenu, HMENU menu, LPWSTR title, LPCWSTR url) +{ + MENUITEMINFOW item; + /* Subtract the number of standard elements in the Favorites menu */ + int favcount = get_menu_item_count(favmenu) - 2; + LPWSTR urlbuf; + + if(favcount > (ID_BROWSE_GOTOFAV_MAX - ID_BROWSE_GOTOFAV_FIRST)) + { + FIXME("Add support for more than %d Favorites\n", favcount); + return; + } + + urlbuf = heap_alloc((lstrlenW(url) + 1) * sizeof(WCHAR)); + + if(!urlbuf) + return; + + lstrcpyW(urlbuf, url); + + item.cbSize = sizeof(item); + item.fMask = MIIM_FTYPE | MIIM_STRING | MIIM_DATA | MIIM_ID; + item.fType = MFT_STRING; + item.dwTypeData = title; + item.wID = ID_BROWSE_GOTOFAV_FIRST + favcount; + item.dwItemData = (ULONG_PTR)urlbuf; + InsertMenuItemW(menu, -1, TRUE, &item); +} + +static void add_favs_to_menu(HMENU favmenu, HMENU menu, LPCWSTR dir) +{ + WCHAR path[MAX_PATH*2]; + const WCHAR search[] = {'*',0}; + WCHAR* filename; + HANDLE findhandle; + WIN32_FIND_DATAW finddata; + IUniformResourceLocatorW* urlobj; + IPersistFile* urlfile; + HRESULT res; + + lstrcpyW(path, dir); + PathAppendW(path, search); + + findhandle = FindFirstFileW(path, &finddata); + + if(findhandle == INVALID_HANDLE_VALUE) + return; + + res = CoCreateInstance(&CLSID_InternetShortcut, NULL, CLSCTX_INPROC_SERVER, &IID_IUniformResourceLocatorW, (PVOID*)&urlobj); + + if(SUCCEEDED(res)) + res = IUnknown_QueryInterface(urlobj, &IID_IPersistFile, (PVOID*)&urlfile); + + if(SUCCEEDED(res)) + { + filename = path + lstrlenW(path) - lstrlenW(search); + + do + { + lstrcpyW(filename, finddata.cFileName); + + if(finddata.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) + { + MENUITEMINFOW item; + const WCHAR ignore1[] = {'.','.',0}; + const WCHAR ignore2[] = {'.',0}; + + if(!lstrcmpW(filename, ignore1) || !lstrcmpW(filename, ignore2)) + continue; + + item.cbSize = sizeof(item); + item.fMask = MIIM_STRING | MIIM_SUBMENU; + item.dwTypeData = filename; + item.hSubMenu = CreatePopupMenu(); + InsertMenuItemW(menu, -1, TRUE, &item); + add_favs_to_menu(favmenu, item.hSubMenu, path); + } else + { + WCHAR* fileext; + WCHAR* url = NULL; + const WCHAR urlext[] = {'.','u','r','l',0}; + + if(lstrcmpiW(PathFindExtensionW(filename), urlext)) + continue; + + if(FAILED(IPersistFile_Load(urlfile, path, 0))) + continue; + + urlobj->lpVtbl->GetURL(urlobj, &url); + + if(!url) + continue; + + fileext = filename + lstrlenW(filename) - lstrlenW(urlext); + *fileext = 0; + add_fav_to_menu(favmenu, menu, filename, url); + } + } while(FindNextFileW(findhandle, &finddata)); + } + + if(urlfile) + IPersistFile_Release(urlfile); + + if(urlobj) + IUnknown_Release(urlobj); + + FindClose(findhandle); +} + +static void add_tbs_to_menu(HMENU menu) +{ + HUSKEY toolbar_handle; + WCHAR toolbar_key[] = {'S','o','f','t','w','a','r','e','\\', + 'M','i','c','r','o','s','o','f','t','\\', + 'I','n','t','e','r','n','e','t',' ', + 'E','x','p','l','o','r','e','r','\\', + 'T','o','o','l','b','a','r',0}; + + if(SHRegOpenUSKeyW(toolbar_key, KEY_READ, NULL, &toolbar_handle, TRUE) == ERROR_SUCCESS) + { + HUSKEY classes_handle; + WCHAR classes_key[] = {'S','o','f','t','w','a','r','e','\\', + 'C','l','a','s','s','e','s','\\','C','L','S','I','D',0}; + WCHAR guid[39]; + DWORD value_len = sizeof(guid)/sizeof(guid[0]); + int i; + + if(SHRegOpenUSKeyW(classes_key, KEY_READ, NULL, &classes_handle, TRUE) != ERROR_SUCCESS) + { + SHRegCloseUSKey(toolbar_handle); + ERR("Failed to open key %s\n", debugstr_w(classes_key)); + return; + } + + for(i = 0; SHRegEnumUSValueW(toolbar_handle, i, guid, &value_len, NULL, NULL, NULL, SHREGENUM_HKLM) == ERROR_SUCCESS; i++) + { + WCHAR tb_name[100]; + DWORD tb_name_len = sizeof(tb_name)/sizeof(tb_name[0]); + HUSKEY tb_class_handle; + MENUITEMINFOW item; + LSTATUS ret; + value_len = sizeof(guid)/sizeof(guid[0]); + + if(lstrlenW(guid) != 38) + { + TRACE("Found invalid IE toolbar entry: %s\n", debugstr_w(guid)); + continue; + } + + if(SHRegOpenUSKeyW(guid, KEY_READ, classes_handle, &tb_class_handle, TRUE) != ERROR_SUCCESS) + { + ERR("Failed to get class info for %s\n", debugstr_w(guid)); + continue; + } + + ret = SHRegQueryUSValueW(tb_class_handle, NULL, NULL, tb_name, &tb_name_len, TRUE, NULL, 0); + + SHRegCloseUSKey(tb_class_handle); + + if(ret != ERROR_SUCCESS) + { + ERR("Failed to get toolbar name for %s\n", debugstr_w(guid)); + continue; + } + + item.cbSize = sizeof(item); + item.fMask = MIIM_STRING; + item.dwTypeData = tb_name; + InsertMenuItemW(menu, GetMenuItemCount(menu), TRUE, &item); + } + + SHRegCloseUSKey(classes_handle); + SHRegCloseUSKey(toolbar_handle); + } +} + +static HMENU create_ie_menu(void) +{ + HMENU menu = LoadMenuW(shdocvw_hinstance, MAKEINTRESOURCEW(IDR_BROWSE_MAIN_MENU)); + HMENU favmenu = get_fav_menu(menu); + WCHAR path[MAX_PATH]; + + add_tbs_to_menu(get_tb_menu(menu)); + + if(SHGetFolderPathW(NULL, CSIDL_COMMON_FAVORITES, NULL, SHGFP_TYPE_CURRENT, path) == S_OK) + add_favs_to_menu(favmenu, favmenu, path); + + if(SHGetFolderPathW(NULL, CSIDL_FAVORITES, NULL, SHGFP_TYPE_CURRENT, path) == S_OK) + add_favs_to_menu(favmenu, favmenu, path); + + return menu; +} + +static void ie_navigate(InternetExplorer* This, LPCWSTR url) +{ + VARIANT variant; + + V_VT(&variant) = VT_BSTR; + V_BSTR(&variant) = SysAllocString(url); + + IWebBrowser2_Navigate2(WEBBROWSER2(This), &variant, NULL, NULL, NULL, NULL); + + SysFreeString(V_BSTR(&variant)); +} + static INT_PTR CALLBACK ie_dialog_open_proc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) { static InternetExplorer* This; @@ -81,7 +371,7 @@ static INT_PTR CALLBACK ie_dialog_open_proc(HWND hwnd, UINT msg, WPARAM wparam, V_VT(&url) = VT_BSTR; V_BSTR(&url) = SysAllocStringLen(NULL, len); - GetWindowTextW(hwndurl, V_BSTR(&url), len); + GetWindowTextW(hwndurl, V_BSTR(&url), len + 1); IWebBrowser2_Navigate2(WEBBROWSER2(This), &url, NULL, NULL, NULL, NULL); SysFreeString(V_BSTR(&url)); @@ -105,32 +395,169 @@ static void ie_dialog_about(HWND hwnd) DestroyIcon(icon); } +static void add_tb_separator(HWND hwnd) +{ + TBBUTTON btn; + + ZeroMemory(&btn, sizeof(btn)); + + btn.iBitmap = 3; + btn.fsStyle = BTNS_SEP; + SendMessageW(hwnd, TB_ADDBUTTONSW, 1, (LPARAM)&btn); +} + +static void add_tb_button(HWND hwnd, int bmp, int cmd, int strId) +{ + TBBUTTON btn; + WCHAR buf[30]; + + LoadStringW(shdocvw_hinstance, strId, buf, sizeof(buf)/sizeof(buf[0])); + + btn.iBitmap = bmp; + btn.idCommand = cmd; + btn.fsState = TBSTATE_ENABLED; + btn.fsStyle = BTNS_SHOWTEXT; + btn.dwData = 0; + btn.iString = (INT_PTR)buf; + + SendMessageW(hwnd, TB_ADDBUTTONSW, 1, (LPARAM)&btn); +} + +static void create_rebar(HWND hwnd) +{ + HWND hwndRebar; + HWND hwndAddress; + HWND hwndToolbar; + REBARINFO rebarinf; + REBARBANDINFOW bandinf; + WCHAR addr[40]; + HIMAGELIST imagelist; + WCHAR idb_ietoolbar[] = {'I','D','B','_','I','E','T','O','O','L','B','A','R',0}; + + LoadStringW(shdocvw_hinstance, IDS_ADDRESS, addr, sizeof(addr)/sizeof(addr[0])); + + hwndRebar = CreateWindowExW(WS_EX_TOOLWINDOW, REBARCLASSNAMEW, NULL, WS_CHILD|WS_VISIBLE|WS_CLIPSIBLINGS|WS_CLIPCHILDREN|RBS_VARHEIGHT|CCS_TOP|CCS_NODIVIDER, 0, 0, 0, 0, hwnd, (HMENU)IDC_BROWSE_REBAR, shdocvw_hinstance, NULL); + + rebarinf.cbSize = sizeof(rebarinf); + rebarinf.fMask = 0; + rebarinf.himl = NULL; + rebarinf.cbSize = sizeof(rebarinf); + + SendMessageW(hwndRebar, RB_SETBARINFO, 0, (LPARAM)&rebarinf); + + hwndToolbar = CreateWindowExW(TBSTYLE_EX_MIXEDBUTTONS, TOOLBARCLASSNAMEW, NULL, TBSTYLE_FLAT | WS_CHILD | WS_VISIBLE, 0, 0, 0, 0, hwndRebar, (HMENU)IDC_BROWSE_TOOLBAR, shdocvw_hinstance, NULL); + + imagelist = ImageList_LoadImageW(shdocvw_hinstance, idb_ietoolbar, 32, 0, CLR_NONE, IMAGE_BITMAP, LR_CREATEDIBSECTION); + + SendMessageW(hwndToolbar, TB_SETIMAGELIST, 0, (LPARAM)imagelist); + SendMessageW(hwndToolbar, TB_BUTTONSTRUCTSIZE, sizeof(TBBUTTON), 0); + add_tb_button(hwndToolbar, 0, 0, IDS_TB_BACK); + add_tb_button(hwndToolbar, 1, 0, IDS_TB_FORWARD); + add_tb_button(hwndToolbar, 2, 0, IDS_TB_STOP); + add_tb_button(hwndToolbar, 3, 0, IDS_TB_REFRESH); + add_tb_button(hwndToolbar, 4, ID_BROWSE_HOME, IDS_TB_HOME); + add_tb_separator(hwndToolbar); + add_tb_button(hwndToolbar, 5, ID_BROWSE_PRINT, IDS_TB_PRINT); + SendMessageW(hwndToolbar, TB_SETBUTTONSIZE, 0, MAKELPARAM(55,50)); + SendMessageW(hwndToolbar, TB_AUTOSIZE, 0, 0); + + bandinf.cbSize = sizeof(bandinf); + bandinf.fMask = RBBIM_STYLE | RBBIM_CHILD | RBBIM_CHILDSIZE | RBBIM_SIZE; + bandinf.fStyle = RBBS_CHILDEDGE; + bandinf.cx = 100; + bandinf.cyMinChild = 52; + bandinf.hwndChild = hwndToolbar; + + SendMessageW(hwndRebar, RB_INSERTBANDW, -1, (LPARAM)&bandinf); + + hwndAddress = CreateWindowExW(0, WC_COMBOBOXEXW, NULL, WS_BORDER|WS_CHILD|WS_VISIBLE|CBS_DROPDOWN, 0, 0, 100,20,hwndRebar, (HMENU)IDC_BROWSE_ADDRESSBAR, shdocvw_hinstance, NULL); + + bandinf.fMask |= RBBIM_TEXT; + bandinf.fStyle = RBBS_CHILDEDGE | RBBS_BREAK; + bandinf.lpText = addr; + bandinf.cyMinChild = 20; + bandinf.hwndChild = hwndAddress; + + SendMessageW(hwndRebar, RB_INSERTBANDW, -1, (LPARAM)&bandinf); +} + static LRESULT iewnd_OnCreate(HWND hwnd, LPCREATESTRUCTW lpcs) { + InternetExplorer* This = (InternetExplorer*)lpcs->lpCreateParams; SetWindowLongPtrW(hwnd, 0, (LONG_PTR) lpcs->lpCreateParams); + + This->menu = create_ie_menu(); + + This->status_hwnd = CreateStatusWindowW(CCS_NODIVIDER|WS_CHILD|WS_VISIBLE, NULL, hwnd, IDC_BROWSE_STATUSBAR); + SendMessageW(This->status_hwnd, SB_SIMPLE, TRUE, 0); + + create_rebar(hwnd); + return 0; } static LRESULT iewnd_OnSize(InternetExplorer *This, INT width, INT height) { + HWND hwndRebar = GetDlgItem(This->frame_hwnd, IDC_BROWSE_REBAR); + INT barHeight = SendMessageW(hwndRebar, RB_GETBARHEIGHT, 0, 0); + RECT docarea = {0, 0, width, height}; + + SendMessageW(This->status_hwnd, WM_SIZE, 0, 0); + + adjust_ie_docobj_rect(This->frame_hwnd, &docarea); + if(This->doc_host.hwnd) - SetWindowPos(This->doc_host.hwnd, NULL, 0, 0, width, height, + SetWindowPos(This->doc_host.hwnd, NULL, docarea.left, docarea.top, docarea.right, docarea.bottom, SWP_NOZORDER | SWP_NOACTIVATE); + SetWindowPos(hwndRebar, NULL, 0, 0, width, barHeight, SWP_NOZORDER | SWP_NOACTIVATE); + + return 0; +} + +static LRESULT iewnd_OnNotify(InternetExplorer *This, WPARAM wparam, LPARAM lparam) +{ + NMHDR* hdr = (NMHDR*)lparam; + + if(hdr->idFrom == IDC_BROWSE_ADDRESSBAR && hdr->code == CBEN_ENDEDITW) + { + NMCBEENDEDITW* info = (NMCBEENDEDITW*)lparam; + + if(info->fChanged && info->iWhy == CBENF_RETURN && info->szText) + { + VARIANT vt; + + V_VT(&vt) = VT_BSTR; + V_BSTR(&vt) = SysAllocString(info->szText); + + IWebBrowser2_Navigate2(WEBBROWSER2(This), &vt, NULL, NULL, NULL, NULL); + + SysFreeString(V_BSTR(&vt)); + + return 0; + } + } + return 0; } static LRESULT iewnd_OnDestroy(InternetExplorer *This) { + HWND hwndRebar = GetDlgItem(This->frame_hwnd, IDC_BROWSE_REBAR); + HWND hwndToolbar = GetDlgItem(hwndRebar, IDC_BROWSE_TOOLBAR); + HIMAGELIST list = (HIMAGELIST)SendMessageW(hwndToolbar, TB_GETIMAGELIST, 0, 0); + TRACE("%p\n", This); + free_fav_menu_data(get_fav_menu(This->menu)); + ImageList_Destroy(list); This->frame_hwnd = NULL; PostQuitMessage(0); /* FIXME */ return 0; } -static LRESULT CALLBACK iewnd_OnCommand(InternetExplorer *This, HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) +static LRESULT iewnd_OnCommand(InternetExplorer *This, HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) { switch(LOWORD(wparam)) { @@ -152,16 +579,43 @@ static LRESULT CALLBACK iewnd_OnCommand(InternetExplorer *This, HWND hwnd, UINT } break; + case ID_BROWSE_HOME: + IWebBrowser2_GoHome(WEBBROWSER2(This)); + break; + case ID_BROWSE_ABOUT: ie_dialog_about(hwnd); break; + case ID_BROWSE_QUIT: + iewnd_OnDestroy(This); + break; + default: + if(LOWORD(wparam) >= ID_BROWSE_GOTOFAV_FIRST && LOWORD(wparam) <= ID_BROWSE_GOTOFAV_MAX) + { + LPCWSTR url = get_fav_url_from_id(get_fav_menu(This->menu), LOWORD(wparam)); + + if(url) + ie_navigate(This, url); + } return DefWindowProcW(hwnd, msg, wparam, lparam); } return 0; } +static LRESULT update_addrbar(InternetExplorer *This, LPARAM lparam) +{ + HWND hwndRebar = GetDlgItem(This->frame_hwnd, IDC_BROWSE_REBAR); + HWND hwndAddress = GetDlgItem(hwndRebar, IDC_BROWSE_ADDRESSBAR); + HWND hwndEdit = (HWND)SendMessageW(hwndAddress, CBEM_GETEDITCONTROL, 0, 0); + LPCWSTR url = (LPCWSTR)lparam; + + SendMessageW(hwndEdit, WM_SETTEXT, 0, (LPARAM)url); + + return 0; +} + static LRESULT CALLBACK ie_window_proc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) { @@ -177,8 +631,12 @@ ie_window_proc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) return iewnd_OnSize(This, LOWORD(lparam), HIWORD(lparam)); case WM_COMMAND: return iewnd_OnCommand(This, hwnd, msg, wparam, lparam); + case WM_NOTIFY: + return iewnd_OnNotify(This, wparam, lparam); case WM_DOCHOSTTASK: return process_dochost_task(&This->doc_host, lparam); + case WM_UPDATEADDRBAR: + return update_addrbar(This, lparam); } return DefWindowProcW(hwnd, msg, wparam, lparam); } @@ -264,6 +722,35 @@ static IWebBrowser2 *create_ie_window(LPCSTR cmdline) return wb; } +static void WINAPI DocHostContainer_GetDocObjRect(DocHost* This, RECT* rc) +{ + GetClientRect(This->frame_hwnd, rc); + adjust_ie_docobj_rect(This->frame_hwnd, rc); +} + +static HRESULT WINAPI DocHostContainer_SetStatusText(DocHost* This, LPCWSTR text) +{ + InternetExplorer* ie = DOCHOST_THIS(This); + return update_ie_statustext(ie, text); +} + +static void WINAPI DocHostContainer_SetURL(DocHost* This, LPCWSTR url) +{ + SendMessageW(This->frame_hwnd, WM_UPDATEADDRBAR, 0, (LPARAM)url); +} + +static HRESULT DocHostContainer_exec(DocHost* This, const GUID *cmd_group, DWORD cmdid, DWORD execopt, VARIANT *in, + VARIANT *out) +{ + return S_OK; +} +static const IDocHostContainerVtbl DocHostContainerVtbl = { + DocHostContainer_GetDocObjRect, + DocHostContainer_SetStatusText, + DocHostContainer_SetURL, + DocHostContainer_exec +}; + HRESULT InternetExplorer_Create(IUnknown *pOuter, REFIID riid, void **ppv) { InternetExplorer *ret; @@ -275,10 +762,12 @@ HRESULT InternetExplorer_Create(IUnknown *pOuter, REFIID riid, void **ppv) ret->ref = 0; ret->doc_host.disp = (IDispatch*)WEBBROWSER2(ret); - DocHost_Init(&ret->doc_host, (IDispatch*)WEBBROWSER2(ret)); + DocHost_Init(&ret->doc_host, (IDispatch*)WEBBROWSER2(ret), &DocHostContainerVtbl); InternetExplorer_WebBrowser_Init(ret); + HlinkFrame_Init(&ret->hlink_frame, (IUnknown*)WEBBROWSER2(ret), &ret->doc_host); + create_frame_hwnd(ret); ret->doc_host.frame_hwnd = ret->frame_hwnd; diff --git a/reactos/dll/win32/shdocvw/intshcut.c b/reactos/dll/win32/shdocvw/intshcut.c index 8c17873453a..202a523d1f3 100644 --- a/reactos/dll/win32/shdocvw/intshcut.c +++ b/reactos/dll/win32/shdocvw/intshcut.c @@ -27,11 +27,17 @@ * The installer for the Zuma Deluxe Popcap game is good for testing. */ +#include +#include + #include "wine/debug.h" #include "shdocvw.h" #include "objidl.h" #include "shobjidl.h" #include "intshcut.h" +#include "shellapi.h" +#include "winreg.h" +#include "shlwapi.h" WINE_DEFAULT_DEBUG_CHANNEL(shdocvw); @@ -237,8 +243,47 @@ static HRESULT WINAPI UniformResourceLocatorW_GetUrl(IUniformResourceLocatorW *u static HRESULT WINAPI UniformResourceLocatorW_InvokeCommand(IUniformResourceLocatorW *url, PURLINVOKECOMMANDINFOW pCommandInfo) { - FIXME("(%p, %p): stub\n", url, pCommandInfo); - return E_NOTIMPL; + InternetShortcut *This = impl_from_IUniformResourceLocatorW(url); + WCHAR app[64]; + HKEY hkey; + static const WCHAR wszURLProtocol[] = {'U','R','L',' ','P','r','o','t','o','c','o','l',0}; + SHELLEXECUTEINFOW sei; + DWORD res, type; + HRESULT hres; + + TRACE("%p %p\n", This, pCommandInfo ); + + if (pCommandInfo->dwcbSize < sizeof (URLINVOKECOMMANDINFOW)) + return E_INVALIDARG; + + if (pCommandInfo->dwFlags != IURL_INVOKECOMMAND_FL_USE_DEFAULT_VERB) + { + FIXME("(%p, %p): non-default verbs not implemented\n", url, pCommandInfo); + return E_NOTIMPL; + } + + hres = CoInternetParseUrl(This->url, PARSE_SCHEMA, 0, app, sizeof(app)/sizeof(WCHAR), NULL, 0); + if(FAILED(hres)) + return E_FAIL; + + res = RegOpenKeyW(HKEY_CLASSES_ROOT, app, &hkey); + if(res != ERROR_SUCCESS) + return E_FAIL; + + res = RegQueryValueExW(hkey, wszURLProtocol, NULL, &type, NULL, NULL); + RegCloseKey(hkey); + if(res != ERROR_SUCCESS || type != REG_SZ) + return E_FAIL; + + memset(&sei, 0, sizeof(sei)); + sei.cbSize = sizeof(sei); + sei.lpFile = This->url; + sei.nShow = SW_SHOW; + + if( ShellExecuteExW(&sei) ) + return S_OK; + else + return E_FAIL; } static HRESULT WINAPI UniformResourceLocatorA_QueryInterface(IUniformResourceLocatorA *url, REFIID riid, PVOID *ppvObject) @@ -299,8 +344,26 @@ static HRESULT WINAPI UniformResourceLocatorA_GetUrl(IUniformResourceLocatorA *u static HRESULT WINAPI UniformResourceLocatorA_InvokeCommand(IUniformResourceLocatorA *url, PURLINVOKECOMMANDINFOA pCommandInfo) { - FIXME("(%p, %p): stub\n", url, pCommandInfo); - return E_NOTIMPL; + URLINVOKECOMMANDINFOW wideCommandInfo; + int len; + WCHAR *wideVerb; + HRESULT res; + InternetShortcut *This = impl_from_IUniformResourceLocatorA(url); + + wideCommandInfo.dwcbSize = sizeof wideCommandInfo; + wideCommandInfo.dwFlags = pCommandInfo->dwFlags; + wideCommandInfo.hwndParent = pCommandInfo->hwndParent; + + len = MultiByteToWideChar(CP_ACP, 0, pCommandInfo->pcszVerb, -1, NULL, 0); + wideVerb = heap_alloc(len * sizeof(WCHAR)); + MultiByteToWideChar(CP_ACP, 0, pCommandInfo->pcszVerb, -1, wideVerb, len); + + wideCommandInfo.pcszVerb = wideVerb; + + res = UniformResourceLocatorW_InvokeCommand(&This->uniformResourceLocatorW, &wideCommandInfo); + heap_free(wideVerb); + + return res; } static HRESULT WINAPI PersistFile_QueryInterface(IPersistFile *pFile, REFIID riid, PVOID *ppvObject) @@ -506,6 +569,22 @@ static const IPersistFileVtbl persistFileVtbl = { PersistFile_GetCurFile }; +static InternetShortcut *create_shortcut(void) +{ + InternetShortcut *newshortcut; + + newshortcut = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(InternetShortcut)); + if (newshortcut) + { + newshortcut->uniformResourceLocatorA.lpVtbl = &uniformResourceLocatorAVtbl; + newshortcut->uniformResourceLocatorW.lpVtbl = &uniformResourceLocatorWVtbl; + newshortcut->persistFile.lpVtbl = &persistFileVtbl; + newshortcut->refCount = 0; + } + + return newshortcut; +} + HRESULT InternetShortcut_Create(IUnknown *pOuter, REFIID riid, void **ppv) { InternetShortcut *This; @@ -518,13 +597,9 @@ HRESULT InternetShortcut_Create(IUnknown *pOuter, REFIID riid, void **ppv) if(pOuter) return CLASS_E_NOAGGREGATION; - This = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(InternetShortcut)); + This = create_shortcut(); if (This) { - This->uniformResourceLocatorA.lpVtbl = &uniformResourceLocatorAVtbl; - This->uniformResourceLocatorW.lpVtbl = &uniformResourceLocatorWVtbl; - This->persistFile.lpVtbl = &persistFileVtbl; - This->refCount = 0; hr = Unknown_QueryInterface(This, riid, ppv); if (SUCCEEDED(hr)) SHDOCVW_LockModule(); @@ -535,3 +610,39 @@ HRESULT InternetShortcut_Create(IUnknown *pOuter, REFIID riid, void **ppv) else return E_OUTOFMEMORY; } + + +/********************************************************************** + * OpenURL (SHDOCVW.@) + */ +void WINAPI OpenURL(HWND hWnd, HINSTANCE hInst, LPCSTR lpcstrUrl, int nShowCmd) +{ + InternetShortcut *shortcut; + WCHAR* urlfilepath = NULL; + shortcut = create_shortcut(); + + if (shortcut) + { + int len; + + len = MultiByteToWideChar(CP_ACP, 0, lpcstrUrl, -1, NULL, 0); + urlfilepath = heap_alloc(len * sizeof(WCHAR)); + MultiByteToWideChar(CP_ACP, 0, lpcstrUrl, -1, urlfilepath, len); + + if(SUCCEEDED(IPersistFile_Load(&shortcut->persistFile, urlfilepath, 0))) + { + URLINVOKECOMMANDINFOW ici; + + memset( &ici, 0, sizeof ici ); + ici.dwcbSize = sizeof ici; + ici.dwFlags = IURL_INVOKECOMMAND_FL_USE_DEFAULT_VERB; + ici.hwndParent = hWnd; + + if FAILED(UniformResourceLocatorW_InvokeCommand(&shortcut->uniformResourceLocatorW, (PURLINVOKECOMMANDINFOW) &ici)) + TRACE("failed to open URL: %s\n.",debugstr_a(lpcstrUrl)); + } + + heap_free(shortcut); + heap_free(urlfilepath); + } +} diff --git a/reactos/dll/win32/shdocvw/navigate.c b/reactos/dll/win32/shdocvw/navigate.c index 6d73fd98b29..a160ee2b52e 100644 --- a/reactos/dll/win32/shdocvw/navigate.c +++ b/reactos/dll/win32/shdocvw/navigate.c @@ -125,6 +125,8 @@ static HRESULT set_dochost_url(DocHost *This, const WCHAR *url) heap_free(This->url); This->url = new_url; + + This->container_vtbl->SetURL(This, This->url); return S_OK; } @@ -759,7 +761,7 @@ HRESULT navigate_url(DocHost *This, LPCWSTR url, const VARIANT *Flags, Flags, Flags ? V_VT(Flags) : -1, TargetFrameName, TargetFrameName ? V_VT(TargetFrameName) : -1); - if(PostData && V_VT(PostData) == (VT_ARRAY | VT_UI1)) { + if(PostData && V_VT(PostData) == (VT_ARRAY | VT_UI1) && V_ARRAY(PostData)) { SafeArrayAccessData(V_ARRAY(PostData), (void**)&post_data); post_data_len = V_ARRAY(PostData)->rgsabound[0].cElements; } @@ -781,7 +783,8 @@ HRESULT navigate_url(DocHost *This, LPCWSTR url, const VARIANT *Flags, DWORD size; size = sizeof(new_url)/sizeof(WCHAR); - hres = UrlApplySchemeW(url, new_url, &size, URL_APPLY_GUESSSCHEME); + hres = UrlApplySchemeW(url, new_url, &size, + URL_APPLY_GUESSSCHEME | URL_APPLY_DEFAULT); if(FAILED(hres)) { WARN("UrlApplyScheme failed: %08x\n", hres); new_url[0] = 0; @@ -881,30 +884,30 @@ HRESULT go_home(DocHost *This) return navigate_url(This, wszPageName, NULL, NULL, NULL, NULL); } -#define HLINKFRAME_THIS(iface) DEFINE_THIS(WebBrowser, HlinkFrame, iface) +#define HLINKFRAME_THIS(iface) DEFINE_THIS(HlinkFrame, IHlinkFrame, iface) static HRESULT WINAPI HlinkFrame_QueryInterface(IHlinkFrame *iface, REFIID riid, void **ppv) { - WebBrowser *This = HLINKFRAME_THIS(iface); - return IWebBrowser2_QueryInterface(WEBBROWSER2(This), riid, ppv); + HlinkFrame *This = HLINKFRAME_THIS(iface); + return IUnknown_QueryInterface(This->outer, riid, ppv); } static ULONG WINAPI HlinkFrame_AddRef(IHlinkFrame *iface) { - WebBrowser *This = HLINKFRAME_THIS(iface); - return IWebBrowser2_AddRef(WEBBROWSER2(This)); + HlinkFrame *This = HLINKFRAME_THIS(iface); + return IUnknown_AddRef(This->outer); } static ULONG WINAPI HlinkFrame_Release(IHlinkFrame *iface) { - WebBrowser *This = HLINKFRAME_THIS(iface); - return IWebBrowser2_Release(WEBBROWSER2(This)); + HlinkFrame *This = HLINKFRAME_THIS(iface); + return IUnknown_Release(This->outer); } static HRESULT WINAPI HlinkFrame_SetBrowseContext(IHlinkFrame *iface, IHlinkBrowseContext *pihlbc) { - WebBrowser *This = HLINKFRAME_THIS(iface); + HlinkFrame *This = HLINKFRAME_THIS(iface); FIXME("(%p)->(%p)\n", This, pihlbc); return E_NOTIMPL; } @@ -912,7 +915,7 @@ static HRESULT WINAPI HlinkFrame_SetBrowseContext(IHlinkFrame *iface, static HRESULT WINAPI HlinkFrame_GetBrowseContext(IHlinkFrame *iface, IHlinkBrowseContext **ppihlbc) { - WebBrowser *This = HLINKFRAME_THIS(iface); + HlinkFrame *This = HLINKFRAME_THIS(iface); FIXME("(%p)->(%p)\n", This, ppihlbc); return E_NOTIMPL; } @@ -920,7 +923,7 @@ static HRESULT WINAPI HlinkFrame_GetBrowseContext(IHlinkFrame *iface, static HRESULT WINAPI HlinkFrame_Navigate(IHlinkFrame *iface, DWORD grfHLNF, LPBC pbc, IBindStatusCallback *pibsc, IHlink *pihlNavigate) { - WebBrowser *This = HLINKFRAME_THIS(iface); + HlinkFrame *This = HLINKFRAME_THIS(iface); IMoniker *mon; LPWSTR location = NULL; @@ -945,13 +948,13 @@ static HRESULT WINAPI HlinkFrame_Navigate(IHlinkFrame *iface, DWORD grfHLNF, LPB return E_NOTIMPL; } - return navigate_hlink(&This->doc_host, mon, pbc, pibsc); + return navigate_hlink(This->doc_host, mon, pbc, pibsc); } static HRESULT WINAPI HlinkFrame_OnNavigate(IHlinkFrame *iface, DWORD grfHLNF, IMoniker *pimkTarget, LPCWSTR pwzLocation, LPCWSTR pwzFriendlyName, DWORD dwreserved) { - WebBrowser *This = HLINKFRAME_THIS(iface); + HlinkFrame *This = HLINKFRAME_THIS(iface); FIXME("(%p)->(%08x %p %s %s %d)\n", This, grfHLNF, pimkTarget, debugstr_w(pwzLocation), debugstr_w(pwzFriendlyName), dwreserved); return E_NOTIMPL; @@ -960,7 +963,7 @@ static HRESULT WINAPI HlinkFrame_OnNavigate(IHlinkFrame *iface, DWORD grfHLNF, static HRESULT WINAPI HlinkFrame_UpdateHlink(IHlinkFrame *iface, ULONG uHLID, IMoniker *pimkTarget, LPCWSTR pwzLocation, LPCWSTR pwzFriendlyName) { - WebBrowser *This = HLINKFRAME_THIS(iface); + HlinkFrame *This = HLINKFRAME_THIS(iface); FIXME("(%p)->(%u %p %s %s)\n", This, uHLID, pimkTarget, debugstr_w(pwzLocation), debugstr_w(pwzFriendlyName)); return E_NOTIMPL; @@ -979,106 +982,106 @@ static const IHlinkFrameVtbl HlinkFrameVtbl = { HlinkFrame_UpdateHlink }; -#define TARGETFRAME2_THIS(iface) DEFINE_THIS(WebBrowser, ITargetFrame2, iface) +#define TARGETFRAME2_THIS(iface) DEFINE_THIS(HlinkFrame, ITargetFrame2, iface) static HRESULT WINAPI TargetFrame2_QueryInterface(ITargetFrame2 *iface, REFIID riid, void **ppv) { - WebBrowser *This = TARGETFRAME2_THIS(iface); - return IWebBrowser2_QueryInterface(WEBBROWSER2(This), riid, ppv); + HlinkFrame *This = TARGETFRAME2_THIS(iface); + return IUnknown_QueryInterface(This->outer, riid, ppv); } static ULONG WINAPI TargetFrame2_AddRef(ITargetFrame2 *iface) { - WebBrowser *This = TARGETFRAME2_THIS(iface); - return IWebBrowser2_AddRef(WEBBROWSER2(This)); + HlinkFrame *This = TARGETFRAME2_THIS(iface); + return IUnknown_AddRef(This->outer); } static ULONG WINAPI TargetFrame2_Release(ITargetFrame2 *iface) { - WebBrowser *This = TARGETFRAME2_THIS(iface); - return IWebBrowser2_Release(WEBBROWSER2(This)); + HlinkFrame *This = TARGETFRAME2_THIS(iface); + return IUnknown_Release(This->outer); } static HRESULT WINAPI TargetFrame2_SetFrameName(ITargetFrame2 *iface, LPCWSTR pszFrameName) { - WebBrowser *This = TARGETFRAME2_THIS(iface); + HlinkFrame *This = TARGETFRAME2_THIS(iface); FIXME("(%p)->(%s)\n", This, debugstr_w(pszFrameName)); return E_NOTIMPL; } static HRESULT WINAPI TargetFrame2_GetFrameName(ITargetFrame2 *iface, LPWSTR *ppszFrameName) { - WebBrowser *This = TARGETFRAME2_THIS(iface); + HlinkFrame *This = TARGETFRAME2_THIS(iface); FIXME("(%p)->(%p)\n", This, ppszFrameName); return E_NOTIMPL; } static HRESULT WINAPI TargetFrame2_GetParentFrame(ITargetFrame2 *iface, IUnknown **ppunkParent) { - WebBrowser *This = TARGETFRAME2_THIS(iface); + HlinkFrame *This = TARGETFRAME2_THIS(iface); FIXME("(%p)->(%p)\n", This, ppunkParent); return E_NOTIMPL; } static HRESULT WINAPI TargetFrame2_SetFrameSrc(ITargetFrame2 *iface, LPCWSTR pszFrameSrc) { - WebBrowser *This = TARGETFRAME2_THIS(iface); + HlinkFrame *This = TARGETFRAME2_THIS(iface); FIXME("(%p)->(%s)\n", This, debugstr_w(pszFrameSrc)); return E_NOTIMPL; } static HRESULT WINAPI TargetFrame2_GetFrameSrc(ITargetFrame2 *iface, LPWSTR *ppszFrameSrc) { - WebBrowser *This = TARGETFRAME2_THIS(iface); + HlinkFrame *This = TARGETFRAME2_THIS(iface); FIXME("(%p)->()\n", This); return E_NOTIMPL; } static HRESULT WINAPI TargetFrame2_GetFramesContainer(ITargetFrame2 *iface, IOleContainer **ppContainer) { - WebBrowser *This = TARGETFRAME2_THIS(iface); + HlinkFrame *This = TARGETFRAME2_THIS(iface); FIXME("(%p)->(%p)\n", This, ppContainer); return E_NOTIMPL; } static HRESULT WINAPI TargetFrame2_SetFrameOptions(ITargetFrame2 *iface, DWORD dwFlags) { - WebBrowser *This = TARGETFRAME2_THIS(iface); + HlinkFrame *This = TARGETFRAME2_THIS(iface); FIXME("(%p)->(%x)\n", This, dwFlags); return E_NOTIMPL; } static HRESULT WINAPI TargetFrame2_GetFrameOptions(ITargetFrame2 *iface, DWORD *pdwFlags) { - WebBrowser *This = TARGETFRAME2_THIS(iface); + HlinkFrame *This = TARGETFRAME2_THIS(iface); FIXME("(%p)->(%p)\n", This, pdwFlags); return E_NOTIMPL; } static HRESULT WINAPI TargetFrame2_SetFrameMargins(ITargetFrame2 *iface, DWORD dwWidth, DWORD dwHeight) { - WebBrowser *This = TARGETFRAME2_THIS(iface); + HlinkFrame *This = TARGETFRAME2_THIS(iface); FIXME("(%p)->(%d %d)\n", This, dwWidth, dwHeight); return E_NOTIMPL; } static HRESULT WINAPI TargetFrame2_GetFrameMargins(ITargetFrame2 *iface, DWORD *pdwWidth, DWORD *pdwHeight) { - WebBrowser *This = TARGETFRAME2_THIS(iface); + HlinkFrame *This = TARGETFRAME2_THIS(iface); FIXME("(%p)->(%p %p)\n", This, pdwWidth, pdwHeight); return E_NOTIMPL; } static HRESULT WINAPI TargetFrame2_FindFrame(ITargetFrame2 *iface, LPCWSTR pszTargetName, DWORD dwFlags, IUnknown **ppunkTargetFrame) { - WebBrowser *This = TARGETFRAME2_THIS(iface); + HlinkFrame *This = TARGETFRAME2_THIS(iface); FIXME("(%p)->(%s %x %p)\n", This, debugstr_w(pszTargetName), dwFlags, ppunkTargetFrame); return E_NOTIMPL; } static HRESULT WINAPI TargetFrame2_GetTargetAlias(ITargetFrame2 *iface, LPCWSTR pszTargetName, LPWSTR *ppszTargetAlias) { - WebBrowser *This = TARGETFRAME2_THIS(iface); + HlinkFrame *This = TARGETFRAME2_THIS(iface); FIXME("(%p)->(%s %p)\n", This, debugstr_w(pszTargetName), ppszTargetAlias); return E_NOTIMPL; } @@ -1103,8 +1106,27 @@ static const ITargetFrame2Vtbl TargetFrame2Vtbl = { TargetFrame2_GetTargetAlias }; -void WebBrowser_HlinkFrame_Init(WebBrowser *This) +BOOL HlinkFrame_QI(HlinkFrame *This, REFIID riid, void **ppv) { - This->lpHlinkFrameVtbl = &HlinkFrameVtbl; - This->lpITargetFrame2Vtbl = &TargetFrame2Vtbl; + if(IsEqualGUID(&IID_IHlinkFrame, riid)) { + TRACE("(%p)->(IID_IHlinkFrame %p)\n", This, ppv); + *ppv = HLINKFRAME(This); + }else if(IsEqualGUID(&IID_ITargetFrame2, riid)) { + TRACE("(%p)->(IID_ITargetFrame2 %p)\n", This, ppv); + *ppv = TARGETFRAME2(This); + }else { + return FALSE; + } + + IUnknown_AddRef((IUnknown*)*ppv); + return TRUE; +} + +void HlinkFrame_Init(HlinkFrame *This, IUnknown *outer, DocHost *doc_host) +{ + This->lpIHlinkFrameVtbl = &HlinkFrameVtbl; + This->lpITargetFrame2Vtbl = &TargetFrame2Vtbl; + + This->outer = outer; + This->doc_host = doc_host; } diff --git a/reactos/dll/win32/shdocvw/resource.h b/reactos/dll/win32/shdocvw/resource.h index 31a700566fb..6f5c777061f 100644 --- a/reactos/dll/win32/shdocvw/resource.h +++ b/reactos/dll/win32/shdocvw/resource.h @@ -24,6 +24,11 @@ #define IDR_BROWSE_MAIN_MENU 1000 #define IDD_BROWSE_OPEN 1001 #define IDC_BROWSE_OPEN_URL 1002 +#define IDC_BROWSE_REBAR 1003 +#define IDC_BROWSE_ADDRESSBAR 1004 +#define IDC_BROWSE_STATUSBAR 1005 +#define IDC_BROWSE_TOOLBAR 1006 +#define IDB_IETOOLBAR 1007 #define ID_BROWSE_NEW_WINDOW 275 #define ID_BROWSE_OPEN 256 @@ -33,4 +38,23 @@ #define ID_BROWSE_PRINT 260 #define ID_BROWSE_PRINT_PREVIEW 277 #define ID_BROWSE_PROPERTIES 262 +#define ID_BROWSE_QUIT 278 #define ID_BROWSE_ABOUT 336 + +#define ID_BROWSE_ADDFAV 1200 +#define ID_BROWSE_HOME 1201 + +#define ID_BROWSE_BAR_STD 1300 +#define ID_BROWSE_BAR_ADDR 1301 + +#define ID_BROWSE_GOTOFAV_FIRST 2000 +#define ID_BROWSE_GOTOFAV_MAX 65000 + +#define IDS_TB_BACK 1100 +#define IDS_TB_FORWARD 1101 +#define IDS_TB_STOP 1102 +#define IDS_TB_REFRESH 1103 +#define IDS_TB_HOME 1104 +#define IDS_TB_PRINT 1105 + +#define IDS_ADDRESS 1106 diff --git a/reactos/dll/win32/shdocvw/shdocvw.h b/reactos/dll/win32/shdocvw/shdocvw.h index d1787cb85c4..61dc63fb0e0 100644 --- a/reactos/dll/win32/shdocvw/shdocvw.h +++ b/reactos/dll/win32/shdocvw/shdocvw.h @@ -43,6 +43,8 @@ #include "resource.h" +#define WM_UPDATEADDRBAR (WM_APP+1) + /********************************************************************** * Shell Instance Objects */ @@ -66,6 +68,14 @@ typedef struct { 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*); @@ -74,6 +84,14 @@ 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; @@ -97,6 +115,8 @@ struct DocHost { IOleDocumentView *view; IUnknown *doc_navigate; + const IDocHostContainerVtbl *container_vtbl; + HWND hwnd; HWND frame_hwnd; @@ -128,10 +148,9 @@ struct WebBrowser { const IViewObject2Vtbl *lpViewObjectVtbl; const IOleInPlaceActiveObjectVtbl *lpOleInPlaceActiveObjectVtbl; const IOleCommandTargetVtbl *lpOleCommandTargetVtbl; - const IHlinkFrameVtbl *lpHlinkFrameVtbl; - const ITargetFrame2Vtbl *lpITargetFrame2Vtbl; const IServiceProviderVtbl *lpServiceProviderVtbl; const IDataObjectVtbl *lpDataObjectVtbl; + HlinkFrame hlink_frame; LONG ref; @@ -166,10 +185,13 @@ struct WebBrowser { struct InternetExplorer { const IWebBrowser2Vtbl *lpWebBrowser2Vtbl; + HlinkFrame hlink_frame; LONG ref; HWND frame_hwnd; + HWND status_hwnd; + HMENU menu; DocHost doc_host; }; @@ -188,9 +210,7 @@ struct InternetExplorer { #define VIEWOBJ2(x) ((IViewObject2*) &(x)->lpViewObjectVtbl); #define ACTIVEOBJ(x) ((IOleInPlaceActiveObject*) &(x)->lpOleInPlaceActiveObjectVtbl) #define OLECMD(x) ((IOleCommandTarget*) &(x)->lpOleCommandTargetVtbl) -#define HLINKFRAME(x) ((IHlinkFrame*) &(x)->lpHlinkFrameVtbl) #define DATAOBJECT(x) ((IDataObject*) &(x)->lpDataObjectVtbl) -#define TARGETFRAME2(x) ((ITargetFrame2*) &(x)->lpITargetFrame2Vtbl) #define CLIENTSITE(x) ((IOleClientSite*) &(x)->lpOleClientSiteVtbl) #define INPLACESITE(x) ((IOleInPlaceSite*) &(x)->lpOleInPlaceSiteVtbl) @@ -203,16 +223,18 @@ struct InternetExplorer { #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_HlinkFrame_Init(WebBrowser*); void WebBrowser_OleObject_Destroy(WebBrowser*); -void DocHost_Init(DocHost*,IDispatch*); +void DocHost_Init(DocHost*,IDispatch*,const IDocHostContainerVtbl*); void DocHost_ClientSite_Init(DocHost*); void DocHost_Frame_Init(DocHost*); void release_dochost_client(DocHost*); @@ -223,6 +245,9 @@ 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**); @@ -247,7 +272,8 @@ HRESULT InternetShortcut_Create(IUnknown*,REFIID,void**); HRESULT TaskbarList_Create(IUnknown*,REFIID,void**); -#define DEFINE_THIS(cls,ifc,iface) ((cls*)((BYTE*)(iface)-offsetof(cls,lp ## ifc ## Vtbl))) +#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) /********************************************************************** * Dll lifetime tracking declaration for shdocvw.dll @@ -259,6 +285,7 @@ static inline void SHDOCVW_UnlockModule(void) { InterlockedDecrement( &SHDOCVW_r 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**); diff --git a/reactos/dll/win32/shdocvw/shdocvw.rbuild b/reactos/dll/win32/shdocvw/shdocvw.rbuild index 47c57a97d25..c7b565269d2 100644 --- a/reactos/dll/win32/shdocvw/shdocvw.rbuild +++ b/reactos/dll/win32/shdocvw/shdocvw.rbuild @@ -12,6 +12,7 @@ uuid ntdll advapi32 + comctl32 user32 ole32 oleaut32 diff --git a/reactos/dll/win32/shdocvw/shdocvw.rc b/reactos/dll/win32/shdocvw/shdocvw.rc index e7276fff6c4..84549f24ac6 100644 --- a/reactos/dll/win32/shdocvw/shdocvw.rc +++ b/reactos/dll/win32/shdocvw/shdocvw.rc @@ -34,4 +34,22 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL /* @makedep: shdocvw.inf */ REGINST REGINST shdocvw.inf +/* @makedep: ietoolbar.bmp */ +IDB_IETOOLBAR BITMAP ietoolbar.bmp + +#include "De.rc" #include "En.rc" +#include "Es.rc" +#include "Fr.rc" +#include "He.rc" +#include "It.rc" +#include "Ko.rc" +#include "Lt.rc" +#include "Nl.rc" +//#include "Pl.rc" +#include "Pt.rc" +#include "Ro.rc" +#include "Si.rc" +#include "Sr.rc" +#include "Sv.rc" +#include "Uk.rc" diff --git a/reactos/dll/win32/shdocvw/shdocvw.spec b/reactos/dll/win32/shdocvw/shdocvw.spec index 4a0dd2c678a..be59d85c06b 100644 --- a/reactos/dll/win32/shdocvw/shdocvw.spec +++ b/reactos/dll/win32/shdocvw/shdocvw.spec @@ -120,7 +120,7 @@ @ stub HlinkFrameNavigateNHL @ stub IEAboutBox @ stub IEWriteErrorLog -@ stub ImportPrivacySettings +@ stdcall ImportPrivacySettings(wstr ptr ptr) @ stub InstallReg_RunDLL @ stdcall OpenURL(long long str long) @ stub SHGetIDispatchForFolder diff --git a/reactos/dll/win32/shdocvw/shdocvw_main.c b/reactos/dll/win32/shdocvw/shdocvw_main.c index 5dfd2b99ddf..a0070b489d4 100644 --- a/reactos/dll/win32/shdocvw/shdocvw_main.c +++ b/reactos/dll/win32/shdocvw/shdocvw_main.c @@ -218,14 +218,6 @@ DWORD WINAPI SetQueryNetSessionCount(DWORD arg) return 0; } -/********************************************************************** - * OpenURL (SHDOCVW.@) - */ -void WINAPI OpenURL(HWND hWnd, HINSTANCE hInst, LPCSTR lpcstrUrl, int nShowCmd) -{ - FIXME("%p %p %s %d\n", hWnd, hInst, debugstr_a(lpcstrUrl), nShowCmd); -} - /********************************************************************** * Some forwards (by ordinal) to SHLWAPI */ @@ -461,3 +453,35 @@ DWORD WINAPI SHRestricted2A(DWORD restriction, LPCSTR url, DWORD reserved) heap_free(urlW); return res; } + +/****************************************************************** + * ImportPrivacySettings (SHDOCVW.@) + * + * Import global and/or per site privacy preferences from an xml file + * + * PARAMS + * filename [I] XML file to use + * pGlobalPrefs [IO] PTR to a usage flag for the global privacy preferences + * pPerSitePrefs [IO] PTR to a usage flag for the per site privacy preferences + * + * RETURNS + * Success: TRUE (the privacy preferences where updated) + * Failure: FALSE (the privacy preferences are unchanged) + * + * NOTES + * Set the flag to TRUE, when the related privacy preferences in the xml file + * should be used (parsed and overwrite the current settings). + * On return, the flag is TRUE, when the related privacy settings where used + * + */ +BOOL WINAPI ImportPrivacySettings(LPCWSTR filename, BOOL *pGlobalPrefs, BOOL * pPerSitePrefs) +{ + FIXME("(%s, %p->%d, %p->%d): stub\n", debugstr_w(filename), + pGlobalPrefs, pGlobalPrefs ? *pGlobalPrefs : 0, + pPerSitePrefs, pPerSitePrefs ? *pPerSitePrefs : 0); + + if (pGlobalPrefs) *pGlobalPrefs = FALSE; + if (pPerSitePrefs) *pPerSitePrefs = FALSE; + + return TRUE; +} diff --git a/reactos/dll/win32/shdocvw/webbrowser.c b/reactos/dll/win32/shdocvw/webbrowser.c index 47996863785..ac45d858b45 100644 --- a/reactos/dll/win32/shdocvw/webbrowser.c +++ b/reactos/dll/win32/shdocvw/webbrowser.c @@ -100,12 +100,6 @@ static HRESULT WINAPI WebBrowser_QueryInterface(IWebBrowser2 *iface, REFIID riid }else if(IsEqualGUID(&IID_IOleCommandTarget, riid)) { TRACE("(%p)->(IID_IOleCommandTarget %p)\n", This, ppv); *ppv = OLECMD(This); - }else if(IsEqualGUID(&IID_IHlinkFrame, riid)) { - TRACE("(%p)->(IID_IHlinkFrame %p)\n", This, ppv); - *ppv = HLINKFRAME(This); - }else if(IsEqualGUID(&IID_ITargetFrame2, riid)) { - TRACE("(%p)->(IID_ITargetFrame2 %p)\n", This, ppv); - *ppv = TARGETFRAME2(This); }else if(IsEqualGUID(&IID_IServiceProvider, riid)) { *ppv = SERVPROV(This); TRACE("(%p)->(IID_IServiceProvider %p)\n", This, ppv); @@ -133,6 +127,17 @@ static HRESULT WINAPI WebBrowser_QueryInterface(IWebBrowser2 *iface, REFIID riid }else if(IsEqualGUID(&IID_IViewObjectEx, riid)) { TRACE("(%p)->(IID_IViewObjectEx %p) returning NULL\n", This, ppv); return E_NOINTERFACE; + }else if(IsEqualGUID(&IID_IOleLink, riid)) { + TRACE("(%p)->(IID_IOleLink %p) returning NULL\n", This, ppv); + return E_NOINTERFACE; + }else if(IsEqualGUID(&IID_IMarshal, riid)) { + TRACE("(%p)->(IID_IMarshal %p) returning NULL\n", This, ppv); + return E_NOINTERFACE; + }else if(IsEqualGUID(&IID_IStdMarshalInfo, riid)) { + TRACE("(%p)->(IID_IStdMarshalInfo %p) returning NULL\n", This, ppv); + return E_NOINTERFACE; + }else if(HlinkFrame_QI(&This->hlink_frame, riid, ppv)) { + return S_OK; } if(*ppv) { @@ -1130,6 +1135,62 @@ static const IServiceProviderVtbl ServiceProviderVtbl = WebBrowser_IServiceProvider_QueryService }; +#define DOCHOST_THIS(iface) DEFINE_THIS2(WebBrowser,doc_host,iface) + +static void WINAPI DocHostContainer_GetDocObjRect(DocHost* This, RECT* rc) +{ + GetClientRect(This->frame_hwnd, rc); +} + +static HRESULT WINAPI DocHostContainer_SetStatusText(DocHost* This, LPCWSTR text) +{ + return E_NOTIMPL; +} + +static void WINAPI DocHostContainer_SetURL(DocHost* This, LPCWSTR url) +{ + +} + +static HRESULT DocHostContainer_exec(DocHost *doc_host, const GUID *cmd_group, DWORD cmdid, DWORD execopt, VARIANT *in, + VARIANT *out) +{ + WebBrowser *This = DOCHOST_THIS(doc_host); + IOleCommandTarget *cmdtrg = NULL; + HRESULT hres; + + if(This->client) { + hres = IOleClientSite_QueryInterface(This->client, &IID_IOleCommandTarget, (void**)&cmdtrg); + if(FAILED(hres)) + cmdtrg = NULL; + } + + if(!cmdtrg && This->container) { + hres = IOleContainer_QueryInterface(This->container, &IID_IOleCommandTarget, (void**)&cmdtrg); + if(FAILED(hres)) + cmdtrg = NULL; + } + + if(!cmdtrg) + return S_OK; + + hres = IOleCommandTarget_Exec(cmdtrg, cmd_group, cmdid, execopt, in, out); + IOleCommandTarget_Release(cmdtrg); + if(FAILED(hres)) + FIXME("Exec failed\n"); + + return hres; +} + +#undef DOCHOST_THIS + +static const IDocHostContainerVtbl DocHostContainerVtbl = { + DocHostContainer_GetDocObjRect, + DocHostContainer_SetStatusText, + DocHostContainer_SetURL, + DocHostContainer_exec +}; + static HRESULT WebBrowser_Create(INT version, IUnknown *pOuter, REFIID riid, void **ppv) { WebBrowser *ret; @@ -1144,7 +1205,7 @@ static HRESULT WebBrowser_Create(INT version, IUnknown *pOuter, REFIID riid, voi ret->ref = 1; ret->version = version; - DocHost_Init(&ret->doc_host, (IDispatch*)WEBBROWSER2(ret)); + DocHost_Init(&ret->doc_host, (IDispatch*)WEBBROWSER2(ret), &DocHostContainerVtbl); ret->visible = VARIANT_TRUE; ret->menu_bar = VARIANT_TRUE; @@ -1157,7 +1218,8 @@ static HRESULT WebBrowser_Create(INT version, IUnknown *pOuter, REFIID riid, voi WebBrowser_DataObject_Init(ret); WebBrowser_Persist_Init(ret); WebBrowser_ClassInfo_Init(ret); - WebBrowser_HlinkFrame_Init(ret); + + HlinkFrame_Init(&ret->hlink_frame, (IUnknown*)WEBBROWSER2(ret), &ret->doc_host); SHDOCVW_LockModule(); diff --git a/reactos/dll/win32/wtsapi32/wtsapi32.c b/reactos/dll/win32/wtsapi32/wtsapi32.c index ab35de4f2ea..604752aa297 100644 --- a/reactos/dll/win32/wtsapi32/wtsapi32.c +++ b/reactos/dll/win32/wtsapi32/wtsapi32.c @@ -141,6 +141,16 @@ void WINAPI WTSFreeMemory(PVOID pMemory) return; } +/************************************************************ + * WTSLogoffSession (WTSAPI32.@) + */ +BOOL WINAPI WTSLogoffSession(HANDLE hserver, DWORD session_id, BOOL bwait) +{ + FIXME("(%p, 0x%x, %d): stub\n", hserver, session_id, bwait); + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + return FALSE; +} + /************************************************************ * WTSOpenServerA (WTSAPI32.@) */ diff --git a/reactos/dll/win32/wtsapi32/wtsapi32.spec b/reactos/dll/win32/wtsapi32/wtsapi32.spec index 2be9df00c9d..f20bbe206b6 100644 --- a/reactos/dll/win32/wtsapi32/wtsapi32.spec +++ b/reactos/dll/win32/wtsapi32/wtsapi32.spec @@ -7,7 +7,7 @@ @ stdcall WTSEnumerateSessionsA(long long long ptr ptr) @ stdcall WTSEnumerateSessionsW(long long long ptr ptr) @ stdcall WTSFreeMemory(ptr) -@ stub WTSLogoffSession +@ stdcall WTSLogoffSession(ptr long long) @ stdcall WTSOpenServerA(ptr) @ stdcall WTSOpenServerW(ptr) @ stdcall WTSQuerySessionInformationA(long long long ptr ptr)