- Sync atl, hlink, shdocvw, wtsapi32 with Wine 1.3.7

svn path=/trunk/; revision=49631
This commit is contained in:
Dmitry Chapyshev 2010-11-19 15:21:38 +00:00
parent 752c855c83
commit 4e31a0e529
40 changed files with 2729 additions and 139 deletions

View file

@ -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%'

View file

@ -1053,6 +1053,9 @@ HRESULT WINAPI AtlAxAttachControl(IUnknown* pControl, HWND hWnd, IUnknown** ppUn
*ppUnkContainer = (IUnknown*) pUnkContainer;
}
if(!hWnd)
return S_FALSE;
return hr;
}

View file

@ -19,7 +19,7 @@
import "ocidl.idl";
cpp_quote("#ifdef ATL_INITGUID")
cpp_quote("#include \"initguid.h\"")
cpp_quote("#include <initguid.h>")
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*);")

View file

@ -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);
}

View file

@ -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)

View file

@ -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)
{

View file

@ -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;

View file

@ -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"
}

View file

@ -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"
}

View file

@ -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"
}

View file

@ -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"
}

View file

@ -0,0 +1,90 @@
/*
* Copyright 2010 Alexander N. Sørnes <alex@thehandofagony.com>
* Copyright 2010 Yaron Shahrabani <sh.yaron@gmail.com>
*
* 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 "כתובת"
}

View file

@ -0,0 +1,90 @@
/*
* Copyright 2010 Alexander N. Sørnes <alex@thehandofagony.com>
* Copyright 2010 Luca Bennati <lucak3@gmail.com>
*
* 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"
}

View file

@ -0,0 +1,88 @@
/*
* Copyright 2010 Alexander N. Sørnes <alex@thehandofagony.com>
* 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 "주소"
}

View file

@ -0,0 +1,89 @@
/*
* Copyright 2010 Aurimas Fišeras <aurimas@gmail.com>
*
* 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"
}

View file

@ -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"
}

View file

@ -0,0 +1,87 @@
/*
* Copyright 2010 £ukasz Wojni³owicz
*
* 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 "Otwórz URL"
FONT 8, "MS Shell Dlg"
{
LTEXT "Podaj adres URL, który chcesz otworzyæ w Internet Explorerze",-1,25, 5, 150,15
LTEXT "Otwórz:", -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 "&Otwórz...", 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 "&W³aœciwoœci...", ID_BROWSE_PROPERTIES
MENUITEM "&Zamknij...", ID_BROWSE_QUIT
}
POPUP "&Widok"
{
POPUP "&Paski narzêdzi"
{
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 "Odœwierz"
IDS_TB_HOME "Strona g³ówna"
IDS_TB_PRINT "Drukuj"
}
STRINGTABLE
{
IDS_ADDRESS "Adres"
}

View file

@ -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"
}

View file

@ -0,0 +1,60 @@
/*
* Copyright 2010 Alexander N. Sørnes <alex@thehandofagony.com>
* 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
}
}

View file

@ -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"
}

View file

@ -0,0 +1,156 @@
/*
* Copyright 2010 Alexander N. Sørnes <alex@thehandofagony.com>
* 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"
}

View file

@ -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&para 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"
}

View file

@ -0,0 +1,90 @@
/*
* Copyright 2010 Alexander N. Sørnes <alex@thehandofagony.com>
* 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 "Адреса"
}

View file

@ -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;

View file

@ -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)

View file

@ -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;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

View file

@ -0,0 +1,285 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg id="svg2" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="32" width="192" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/">
<metadata id="metadata280">
<rdf:RDF>
<cc:Work rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
<dc:title/>
</cc:Work>
</rdf:RDF>
</metadata>
<defs id="defs4">
<radialGradient id="radialGradient2004" gradientUnits="userSpaceOnUse" cy="32.798" cx="22.292" gradientTransform="matrix(-0.589125,0,0,0.685598,29.3555,0.773753)" r="16.956">
<stop id="stop2593" stop-color="#73d216" offset="0"/>
<stop id="stop2595" stop-color="#4e9a06" offset="1"/>
</radialGradient>
<radialGradient id="radialGradient2001" gradientUnits="userSpaceOnUse" cy="5.786" cx="25.076" gradientTransform="matrix(-1.430305,0,0,1.046783,46.13938,2.164948)" r="17.171">
<stop id="stop8652" stop-color="#FFF" offset="0"/>
<stop id="stop8654" stop-color="#FFF" stop-opacity="0" offset="1"/>
</radialGradient>
<radialGradient id="radialGradient1992" gradientUnits="userSpaceOnUse" cy="36.421" cx="24.837" gradientTransform="matrix(1,0,0,0.536723,0,16.87306)" r="15.645">
<stop id="stop8664" stop-color="#000" offset="0"/>
<stop id="stop8666" stop-color="#000" stop-opacity="0" offset="1"/>
</radialGradient>
<linearGradient id="linearGradient5060">
<stop id="stop5062" stop-color="#000" offset="0"/>
<stop id="stop5064" stop-color="#000" stop-opacity="0" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient2797">
<stop id="stop2799" stop-color="#FFF" offset="0"/>
<stop id="stop2801" stop-color="#FFF" stop-opacity="0" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient2871">
<stop id="stop2873" stop-color="#3465a4" offset="0"/>
<stop id="stop2875" stop-color="#3465a4" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient2380">
<stop id="stop2382-9" stop-color="#b9cfe7" offset="0"/>
<stop id="stop2384" stop-color="#729fcf" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient2402">
<stop id="stop2404" stop-color="#729fcf" offset="0"/>
<stop id="stop2406" stop-color="#528ac5" offset="1"/>
</linearGradient>
<radialGradient id="radialGradient3588" gradientUnits="userSpaceOnUse" cy="32.798" cx="22.292" gradientTransform="matrix(0.588566,0,0,0.691503,34.980416,1020.9693)" r="16.956">
<stop id="stop2593-1" stop-color="#73d216" offset="0"/>
<stop id="stop2595-2" stop-color="#4e9a06" offset="1"/>
</radialGradient>
<radialGradient id="radialGradient3590" gradientUnits="userSpaceOnUse" cy="2.8969" cx="19.701" gradientTransform="matrix(1.364487,0,0,1.038407,19.299385,1022.6636)" r="17.171">
<stop id="stop8652-8" stop-color="#FFF" offset="0"/>
<stop id="stop8654-8" stop-color="#FFF" stop-opacity="0" offset="1"/>
</radialGradient>
<radialGradient id="radialGradient3593" gradientUnits="userSpaceOnUse" cy="10.666" cx="16.75" gradientTransform="matrix(2.737165,0,0,2.125222,29.37911,1006.2414)" r="21.25">
<stop id="stop2250" stop-color="#FFF" offset="0"/>
<stop id="stop2252" stop-color="#FFF" stop-opacity="0" offset="1"/>
</radialGradient>
<linearGradient id="linearGradient3596" y2="47.374" gradientUnits="userSpaceOnUse" x2="53.57" gradientTransform="matrix(0.658703,0,0,0.658681,64.193874,1020.5559)" y1="12.504" x1="15.737">
<stop id="stop11782" stop-color="#ff8b8b" offset="0"/>
<stop id="stop11784" stop-color="#ec1b1b" offset="1"/>
</linearGradient>
<radialGradient id="radialGradient3599" gradientUnits="userSpaceOnUse" cy="33.302" cx="24.302" gradientTransform="matrix(1.105562,0,0,1.105705,53.33881,1005.6202)" r="12.302">
<stop id="stop9649" stop-color="#FFF" offset="0"/>
<stop id="stop9651" stop-color="#dbdbdb" offset="1"/>
</radialGradient>
<linearGradient id="linearGradient3601" y2="35.052" gradientUnits="userSpaceOnUse" x2="24.302" gradientTransform="matrix(0.652641,0,0,0.652725,64.345805,1020.7054)" y1="15.802" x1="21.75">
<stop id="stop2258" stop-color="#ff0202" offset="0"/>
<stop id="stop2260" stop-color="#ff9b9b" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient3604" y2="37.96" gradientUnits="userSpaceOnUse" x2="41.048" gradientTransform="matrix(0.67419,0,0,0.674276,63.822139,1020.1817)" y1="20.105" x1="23.996">
<stop id="stop4983" stop-color="#C00" offset="0"/>
<stop id="stop4985" stop-color="#b30000" offset="1"/>
</linearGradient>
<radialGradient id="radialGradient3607" gradientUnits="userSpaceOnUse" cy="36.75" cx="25.125" gradientTransform="matrix(1,0,0,0.595238,0,14.875)" r="15.75">
<stop id="stop21646" stop-color="#000" offset="0"/>
<stop id="stop21648" stop-color="#000" stop-opacity="0" offset="1"/>
</radialGradient>
<linearGradient id="linearGradient3681" y2="19.115" gradientUnits="userSpaceOnUse" x2="15.419" gradientTransform="matrix(0.666667,0,0,0.646309,96.83003,1019.302)" y1="10.612" x1="13.479">
<stop id="stop2833" stop-color="#3465a4" offset="0"/>
<stop id="stop2855" stop-color="#5b86be" offset="0.33333"/>
<stop id="stop2835" stop-color="#83a8d8" stop-opacity="0" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient3683" y2="26.194" gradientUnits="userSpaceOnUse" x2="37.065" gradientTransform="matrix(-0.666667,0,0,-0.646309,128.20505,1049.113)" y1="29.73" x1="37.128">
<stop id="stop2849" stop-color="#3465a4" offset="0"/>
<stop id="stop2851" stop-color="#3465a4" stop-opacity="0" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient3685" y2="20.609" xlink:href="#linearGradient2380" gradientUnits="userSpaceOnUse" x2="15.985" y1="36.061" x1="62.514"/>
<linearGradient id="linearGradient3687" y2="50.94" xlink:href="#linearGradient2871" gradientUnits="userSpaceOnUse" x2="45.38" y1="45.264" x1="46.835"/>
<linearGradient id="linearGradient3691" y2="24.842" gradientUnits="userSpaceOnUse" x2="37.124" gradientTransform="matrix(0.666667,0,0,0.647455,96.519755,1019.8536)" y1="30.749" x1="32.648">
<stop id="stop2692" stop-color="#c4d7eb" offset="0"/>
<stop id="stop2694" stop-color="#c4d7eb" stop-opacity="0" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient3693" y2="24.842" gradientUnits="userSpaceOnUse" x2="37.124" gradientTransform="matrix(0.666667,0,0,0.647455,96.519755,1019.8536)" y1="31.456" x1="36.714">
<stop id="stop2684" stop-color="#3977c3" offset="0"/>
<stop id="stop2686" stop-color="#89aedc" stop-opacity="0" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient3695" y2="26.649" xlink:href="#linearGradient2402" gradientUnits="userSpaceOnUse" x2="53.589" y1="23.668" x1="18.936"/>
<linearGradient id="linearGradient3703" y2="26.048" xlink:href="#linearGradient2797" gradientUnits="userSpaceOnUse" x2="52.854" y1="26.048" x1="5.9649"/>
<radialGradient id="radialGradient3821" gradientUnits="userSpaceOnUse" cy="26.926" cx="9.1295" r="2.1227">
<stop id="stop4700" stop-color="#fffffd" offset="0"/>
<stop id="stop4706" stop-color="#bbbbb9" offset="0.5"/>
<stop id="stop4702" stop-color="#000" offset="1"/>
</radialGradient>
<radialGradient id="radialGradient3832" gradientUnits="userSpaceOnUse" cy="30.443" cx="29.913" gradientTransform="matrix(2.525807,0,0,1.713442,72.53038,988.81062)" r="4.0019">
<stop id="stop2370" stop-color="#FFF" offset="0"/>
<stop id="stop2372" stop-color="#FFF" stop-opacity="0" offset="1"/>
</radialGradient>
<radialGradient id="radialGradient3837" gradientUnits="userSpaceOnUse" cy="19.554" cx="11.681" gradientTransform="matrix(2.733392,0,0,-2.800883,124.51812,1090.5979)" r="8.2452">
<stop id="stop2343" stop-color="#000" offset="0"/>
<stop id="stop2345" stop-color="#000" stop-opacity="0" offset="1"/>
</radialGradient>
<radialGradient id="radialGradient3840" gradientUnits="userSpaceOnUse" cy="24.203" cx="7.5327" gradientTransform="matrix(2.733392,0,0,2.800883,111.04015,968.00238)" r="8.2452">
<stop id="stop2301" stop-color="#FFF" offset="0"/>
<stop id="stop2303" stop-color="#FFF" stop-opacity="0" offset="1"/>
</radialGradient>
<linearGradient id="linearGradient3844" y2="35.569" gradientUnits="userSpaceOnUse" x2="64.388" gradientTransform="matrix(0.236067,0,0,0.236067,129.07598,1020.3064)" y1="65.124" x1="64.388">
<stop id="stop336" stop-color="#FFF" offset="0"/>
<stop id="stop338" stop-color="#ff6200" offset="0.8539"/>
<stop id="stop340" stop-color="#f25d00" offset="1"/>
</linearGradient>
<radialGradient id="radialGradient3847" gradientUnits="userSpaceOnUse" cy="36.778" cx="19.986" gradientTransform="matrix(0.845492,0,0,0.650968,124.14222,1020.5274)" r="1.0821">
<stop id="stop2309" stop-color="#edd400" offset="0"/>
<stop id="stop2311" stop-color="#980" offset="1"/>
</radialGradient>
<radialGradient id="radialGradient3850" gradientUnits="userSpaceOnUse" cy="37.426" cx="20.444" gradientTransform="matrix(0.845492,0,0,0.650968,124.14222,1020.6369)" r="1.0821">
<stop id="stop2321" stop-color="#000" offset="0"/>
<stop id="stop2323" stop-color="#000" stop-opacity="0" offset="1"/>
</radialGradient>
<linearGradient id="linearGradient3853" y2="41.032" gradientUnits="userSpaceOnUse" x2="19.04" gradientTransform="matrix(0.667809,0,0,0.721564,128.52999,1019.1429)" y1="28.939" x1="17.85">
<stop id="stop2408" stop-color="#7c7e79" offset="0"/>
<stop id="stop2414" stop-color="#848681" offset="0.17241"/>
<stop id="stop2410" stop-color="#898c86" offset="1"/>
</linearGradient>
<radialGradient id="radialGradient3856" gradientUnits="userSpaceOnUse" cy="10.578" cx="24.195" gradientTransform="matrix(0.750176,-2.390279e-8,2.846547e-8,0.893373,125.97906,1021.2658)" r="15.243">
<stop id="stop2380" stop-color="#575757" offset="0"/>
<stop id="stop2382" stop-color="#575757" stop-opacity="0" offset="1"/>
</radialGradient>
<linearGradient id="linearGradient3860" y2="32.654" gradientUnits="userSpaceOnUse" x2="17.683" gradientTransform="matrix(0.675325,0,0,0.710034,127.07761,1018.7743)" y1="26.057" x1="17.603">
<stop id="stop2331" stop-color="#000" stop-opacity="0.18556701" offset="0"/>
<stop id="stop2333" stop-color="#FFF" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient3864" y2="-42.219" gradientUnits="userSpaceOnUse" x2="14.049" gradientTransform="matrix(0.221835,0,0,0.110024,140.0235,1030.616)" y1="166.13" x1="52.006">
<stop id="stop17" stop-color="#CCC" offset="0"/>
<stop id="stop19" stop-color="#FFF" offset="0.9831"/>
</linearGradient>
<linearGradient id="linearGradient3870" y2="609.51" gradientUnits="userSpaceOnUse" x2="302.86" gradientTransform="matrix(2.774389,0,0,1.969706,-1892.179,-872.8854)" y1="366.65" x1="302.86">
<stop id="stop5050" stop-color="#000" stop-opacity="0" offset="0"/>
<stop id="stop5056" stop-color="#000" offset="0.5"/>
<stop id="stop5052" stop-color="#000" stop-opacity="0" offset="1"/>
</linearGradient>
<radialGradient id="radialGradient3872" xlink:href="#linearGradient5060" gradientUnits="userSpaceOnUse" cy="486.65" cx="605.71" gradientTransform="matrix(2.774389,0,0,1.969706,-1891.633,-872.8854)" r="117.14"/>
<radialGradient id="radialGradient3874" xlink:href="#linearGradient5060" gradientUnits="userSpaceOnUse" cy="486.65" cx="605.71" gradientTransform="matrix(-2.774389,0,0,1.969706,112.7623,-872.8854)" r="117.14"/>
<linearGradient id="linearGradient3907" y2="72.064" gradientUnits="userSpaceOnUse" x2="9.9128" gradientTransform="matrix(1.848058,0,0,0.217548,160.26603,1024.7799)" y1="57.228" x1="9.8698">
<stop id="stop4735" stop-color="#000" stop-opacity="0.2371134" offset="0"/>
<stop id="stop4737" stop-color="#000" stop-opacity="0" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient3911" y2="54.136" gradientUnits="userSpaceOnUse" x2="10.338" gradientTransform="matrix(1.544788,0,0,0.264367,160.01852,1023.7146)" y1="64.652" x1="10.338">
<stop id="stop4682" stop-color="#f7f6f5" offset="0"/>
<stop id="stop4684" stop-color="#f7f6f5" stop-opacity="0" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient3913" y2="62.282" gradientUnits="userSpaceOnUse" x2="9.7053" gradientTransform="matrix(1.544788,0,0,0.264367,160.01852,1023.7146)" y1="70.725" x1="9.7317">
<stop id="stop4690" stop-color="#666" offset="0"/>
<stop id="stop4692" stop-color="#000" stop-opacity="0" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient3916" y2="19.337" gradientUnits="userSpaceOnUse" x2="20.718" gradientTransform="matrix(0.814222,0,0,0.576573,159.61207,1022.5218)" y1="25.14" x1="20.771">
<stop id="stop15664" stop-color="#FFF" stop-opacity="0" offset="0"/>
<stop id="stop15666" stop-color="#f8f8f8" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient3919" y2="25.247" gradientUnits="userSpaceOnUse" x2="24.79" gradientTransform="matrix(0.665463,0,0,0.744457,159.14802,1023.5823)" y1="3.6785" x1="25.057">
<stop id="stop260" stop-color="#e0e0e0" offset="0"/>
<stop id="stop4886" stop-color="#FFF" offset="0.40547"/>
<stop id="stop4884" stop-color="#cdcdcd" offset="0.53448"/>
<stop id="stop261" stop-color="#494949" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient3922" y2="62.101" gradientUnits="userSpaceOnUse" x2="15.488" gradientTransform="matrix(0.955896,0,0,0.432698,160.6615,1023.6066)" y1="32.539" x1="15.388">
<stop id="stop4764" stop-color="#FFF" stop-opacity="0.12371134" offset="0"/>
<stop id="stop4768" stop-color="#FFF" offset="0.10345"/>
<stop id="stop4766" stop-color="#FFF" stop-opacity="0" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient3926" y2="88.295" gradientUnits="userSpaceOnUse" x2="18.972" gradientTransform="matrix(1.510349,0,0,0.297131,160.25238,1022.5201)" y1="88.295" x1="1.8456">
<stop id="stop4743" stop-color="#dcdcda" offset="0"/>
<stop id="stop4745" stop-color="#bab9b7" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient3929" y2="88.295" gradientUnits="userSpaceOnUse" x2="18.972" gradientTransform="matrix(1.501108,0,0,0.291945,160.40355,1021.921)" y1="88.295" x1="1.8456">
<stop id="stop4670" stop-color="#8e8d87" offset="0"/>
<stop id="stop4676" stop-color="#cbc9c1" offset="0.27586"/>
<stop id="stop4672" stop-color="#8e8d87" offset="1"/>
</linearGradient>
<radialGradient id="radialGradient3932" xlink:href="#linearGradient5060" gradientUnits="userSpaceOnUse" cy="486.65" cx="605.71" gradientTransform="matrix(-0.04372487,0,0,0.02533308,191.79481,1036.9981)" r="117.14"/>
<radialGradient id="radialGradient3935" xlink:href="#linearGradient5060" gradientUnits="userSpaceOnUse" cy="486.65" cx="605.71" gradientTransform="matrix(0.04372487,0,0,0.02533308,160.20518,1036.9981)" r="117.14"/>
<linearGradient id="linearGradient3938" y2="609.51" gradientUnits="userSpaceOnUse" x2="302.86" gradientTransform="matrix(0.04372487,0,0,0.02533308,160.19658,1036.9981)" y1="366.65" x1="302.86">
<stop id="stop5050-7" stop-color="#000" stop-opacity="0" offset="0"/>
<stop id="stop5056-6" stop-color="#000" offset="0.5"/>
<stop id="stop5052-3" stop-color="#000" stop-opacity="0" offset="1"/>
</linearGradient>
</defs>
<g id="layer1" transform="translate(0,-1020.3622)">
<g id="layer1-9" transform="translate(1.0000011,1020.3622)">
<path id="path8660" opacity="0.29946522" style="color:#000000;" d="m40.482,36.421a15.645,8.3969,0,1,1,-31.289,0,15.645,8.3969,0,1,1,31.289,0z" fill-rule="evenodd" transform="matrix(-0.847458,0,0,0.847458,37.46345,-10.18573)" fill="url(#radialGradient1992)"/>
<path id="path8643" stroke-linejoin="round" style="color:#000000;stroke-dasharray:none;" d="m26.453,10.472,0.04687,11.046-8.9853,0,0,5.9819l-14.015-11.425,14.01-11.589-0.04687,5.9893,8.9896-0.0036z" fill-rule="evenodd" stroke-dashoffset="0" stroke="#3a7304" stroke-linecap="round" stroke-miterlimit="10" stroke-width="1.00000072" fill="url(#radialGradient2004)"/>
<path id="path8645" opacity="0.5080214" style="color:#000000;" d="m17.065,5.3254,0,5.6956,8.9193,0,0,5.6895c-11.706-4.2-11.15,3.559-21.807-0.642l12.888-10.743z" fill-rule="evenodd" fill="url(#radialGradient2001)"/>
<path id="path8658" opacity="0.48128339" stroke-linejoin="miter" style="color:#000000;stroke-dasharray:none;" d="m25.5,11.502,0,9.0144-8.9812,0,0,4.9833l-11.47-9.464,11.481-9.535v5.0054l8.9704-0.0031z" stroke-dashoffset="0" stroke="#FFF" stroke-linecap="butt" stroke-miterlimit="10" stroke-width="1.00000048" fill="none"/>
</g>
<g id="g3892">
<path id="path8660-9" opacity="0.29946522" style="color:#000000;" d="m40.482,36.421a15.645,8.3969,0,1,1,-31.289,0,15.645,8.3969,0,1,1,31.289,0z" fill-rule="evenodd" transform="matrix(0.847458,0,0,0.847458,26.898465,1010.2943)" fill="url(#radialGradient1992)"/>
<g id="g3583" transform="translate(-1.3113835,-0.4798)">
<path id="path8643-6" stroke-linejoin="round" style="color:#000000;stroke-dasharray:none;" d="m37.811,1030.9,0,10.989,9.0648,0,0,5.9689,13.935-11.46-14.018-11.54,0,6.0457-8.9818,0z" fill-rule="evenodd" stroke-dashoffset="0" stroke="#3a7304" stroke-linecap="round" stroke-miterlimit="10" stroke-width="1.00000095" fill="url(#radialGradient3588)"/>
<path id="path8645-3" opacity="0.5080214" style="color:#000000;" d="m47.307,1025.9,0,5.5579-8.8983,0,0,5.6736c11.833,1.3333,11.752-5.0586,21.585-0.7253l-12.687-10.506z" fill-rule="evenodd" fill="url(#radialGradient3590)"/>
<path id="path8658-8" opacity="0.48128339" stroke-linejoin="miter" style="color:#000000;stroke-dasharray:none;" d="m38.811,1031.8,0,9.0074,9.0567,0,0,5.0159,11.464-9.5049-11.475-9.4951,0,4.9798-9.0459,0z" stroke-dashoffset="0" stroke="#FFF" stroke-linecap="butt" stroke-miterlimit="10" stroke-width="1.00000107" fill="none"/>
</g>
</g>
<g id="g3609">
<path id="path21642" opacity="0.63068183" style="color:#000000;" d="m40.875,36.75a15.75,9.375,0,1,1,-31.5,0,15.75,9.375,0,1,1,31.5,0z" fill-rule="evenodd" transform="matrix(0.782536,0,0,0.36,60.663725,1035.7572)" fill="url(#radialGradient3607)"/>
<path id="path9480" stroke-linejoin="miter" style="stroke-dasharray:none;" d="m74.333,1021.9,11.519,0,8.644,8.8292,0,12.065-8.5276,8.1027-11.751,0-8.7134-8.6568,0-11.594,8.8296-8.7468z" fill-rule="evenodd" stroke="#860000" stroke-linecap="butt" stroke-miterlimit="4" stroke-width="1.0000006" fill="url(#linearGradient3604)"/>
<path id="path2787" stroke-linejoin="round" style="stroke-dasharray:none;" d="m75.289,1028.9-2.7849,2.7853,4.9177,4.9183-4.9177,4.9184,2.7849,2.7853,4.9177-4.9184,4.9177,4.9184,2.7849-2.7853-4.9177-4.9184,4.9177-4.9183-2.7849-2.7853-4.9177,4.9183-4.9177-4.9183z" fill-rule="evenodd" stroke="url(#linearGradient3601)" stroke-linecap="round" stroke-miterlimit="4" stroke-width="0.80000001" fill="url(#radialGradient3599)"/>
<path id="path9482" opacity="0.81318683" stroke-linejoin="miter" d="m74.747,1022.9,10.689,0,8.0677,8.1824,0,11.273-7.8109,7.5425-11.045,0-8.1423-8.088,0-10.778,8.2414-8.1316z" stroke="url(#linearGradient3596)" stroke-linecap="butt" stroke-miterlimit="4" stroke-width="1.00000036" fill="none"/>
<path id="path2241" opacity="0.28977272" d="m74.527,1022.4-8.5228,8.5126,0,11.295,1.9351,1.9309c11.043,0.038,10.855-8.6495,26.063-7.8897v-5.2529l-8.3582-8.5956h-11.117z" fill-rule="evenodd" fill="url(#radialGradient3593)"/>
</g>
<g id="g3961">
<g id="g5022" fill-rule="nonzero" transform="matrix(0.01379016,0,0,0.01239639,156.26546,1048.1206)">
<rect id="rect4173" opacity="0.40206" style="color:#000000;" height="478.36" width="1339.6" y="-150.7" x="-1559.3" fill="url(#linearGradient3870)"/>
<path id="path5058" opacity="0.40206185" style="color:#000000;" d="m-219.62-150.68v478.33c142.87,0.90045,345.4-107.17,345.4-239.2s-159.44-239.13-345.4-239.13z" fill="url(#radialGradient3872)"/>
<path id="path5018" opacity="0.40206185" style="color:#000000;" d="m-1559.3-150.68v478.33c-142.87,0.90045-345.4-107.17-345.4-239.2s159.44-239.13,345.4-239.13z" fill="url(#radialGradient3874)"/>
</g>
<path id="rect1512" stroke-linejoin="miter" style="color:#000000;" d="m142.42,1025.8,3.9225,0c0.55289,0,9.1431,10.176,9.1431,10.773l-0.29203,12.194c0,0.5968-0.44511,1.0773-0.998,1.0773h-20.712c-0.55289,0-0.998-0.4805-0.998-1.0773l0.0372-12.194c0-0.5969,9.3443-10.773,9.8972-10.773z" fill-rule="nonzero" stroke-dashoffset="0" stroke="#757575" stroke-linecap="butt" stroke-miterlimit="4" stroke-width="1.00000083" fill="url(#linearGradient3864)"/>
<path id="path5" fill="none" d="m159.29,1050.9-30.217,0,0-30.217,30.217,0,0,30.217z"/>
<path id="path2327" fill-rule="evenodd" fill="url(#linearGradient3860)" d="m144,1039.4-0.0344,9.9962-8.8984,0-0.0838-9.9962,9.0165,0z"/>
<path id="path2357" opacity="0.3125" stroke-linejoin="miter" style="color:#000000;" d="m142.61,1026.6,3.5558,0c0.50121,0,8.3159,9.3803,8.3159,9.9305l-0.22206,11.864c0,0.2992-0.0919,0.4257-0.32774,0.4257l-20.077,0.01c-0.2358,0-0.37353-0.052-0.37353-0.2955l0.13774-12.004c0-0.5502,8.4892-9.9305,8.9905-9.9305z" stroke-dashoffset="0" stroke="#FFF" stroke-linecap="butt" stroke-miterlimit="4" stroke-width="1.0000006" fill="none"/>
<path id="path23" opacity="0.2" d="m132.79,1039-0.0362,1.7301,12.245-8.7861,10.191,7.4362,0.0476-0.2078-10.914-10.603-11.534,10.43z" fill-rule="evenodd" fill="url(#radialGradient3856)"/>
<path id="path188" fill-rule="evenodd" fill="url(#linearGradient3853)" d="m143.25,1040,0,9.3338-7.3717,0-0.14199-9.3338,7.5137,0z"/>
<path id="path2315" opacity="0.40909089" d="m141.43,1044.3c0.50552,0,0.91413,0.3144,0.91413,0.7012,0,0.3907-0.40861,0.7077-0.91413,0.7077-0.50513,0-0.91569-0.317-0.91569-0.7077,0.00039-0.3868,0.41056-0.7012,0.91569-0.7012z" fill-rule="evenodd" fill="url(#radialGradient3850)"/>
<path id="path217" fill-rule="evenodd" fill="url(#radialGradient3847)" d="m141.34,1044c0.50551,0,0.91413,0.3144,0.91413,0.7011,0,0.3907-0.40862,0.7077-0.91413,0.7077-0.50513,0-0.91569-0.317-0.91569-0.7077,0.00039-0.3867,0.41056-0.7011,0.91569-0.7011z"/>
<path id="path342" fill="url(#linearGradient3844)" d="m144.28,1028.1,12.618,11.447,0.32979,0.2613,0.26912-0.1142-0.24858-0.5078-0.18508-0.149-12.783-10.382-12.926,10.496-0.1584,0.096-0.14448,0.4712,0.28895,0.086,0.25637-0.2056,12.684-11.499z"/>
<path id="path362" stroke-linejoin="round" style="stroke-dasharray:none;" d="m144.2,1021.9-14.72,11.986,0,5,1,1s13.654-11.203,13.798-11.317l13.202,11.317,1-1v-4l-14.202-13.055-0.0784,0.07z" stroke="#a40000" stroke-miterlimit="4" stroke-width="0.80000001" fill="#ef2929"/>
<path id="path1536" opacity="0.40909089" style="color:#000000;" d="m129.98,1034.1,0,4.25,14.246-12.013-0.0469-3.9289-14.199,11.692z" fill-rule="nonzero" fill="url(#radialGradient3840)"/>
<path id="path2337" opacity="0.14901961" style="color:#000000;" d="m144.31,1026.2,0.0663-3.8941,13.589,12.76-0.0175,3.2098-13.637-12.075z" fill-rule="nonzero" fill="url(#radialGradient3837)"/>
<path id="rect2361" opacity="0.31818183" stroke-linejoin="miter" style="color:#000000;" d="m145.82,1039.2,6.6456,0c0.56648,0,1.0225,0.4065,1.0225,0.9114l-0.006,5.9496c0,0.505-0.43838,0.8296-1.0049,0.8296h-6.6574c-0.56649,0-1.0225-0.4065-1.0225-0.9115v-5.8677c0-0.5049,0.45605-0.9114,1.0225-0.9114z" stroke-dashoffset="0" stroke="#FFF" stroke-linecap="butt" stroke-miterlimit="4" stroke-width="1" fill="none"/>
<rect id="rect3263" stroke-linejoin="miter" style="color:#000000;stroke-dasharray:none;" fill-rule="nonzero" stroke-dashoffset="0" rx="0.26686" ry="0.22963" height="6" width="7" stroke="#757575" stroke-linecap="butt" stroke-miterlimit="4" y="1039.9" x="145.48" stroke-width="1" fill="#3465a4"/>
<path id="rect2363" opacity="0.39772728" style="color:#000000;" d="m146,1043.3c2.4359,0.1802,3.7217-0.787,5.9708-0.8452l0.0166-2.0954h-6l0.0126,2.9439z" fill-rule="nonzero" fill="url(#radialGradient3832)"/>
</g>
<g id="g3876">
<path id="path8660-0" opacity="0.38333333" style="color:#000000;" d="m40.482,36.421a15.645,8.3969,0,1,1,-31.289,0,15.645,8.3969,0,1,1,31.289,0z" fill-rule="evenodd" transform="matrix(-0.993158,0,0,-0.667502,137.20489,1070.0684)" fill="url(#radialGradient1992)"/>
<g id="g3667" transform="translate(-0.41059,1.42455)">
<path id="path2865" stroke-linejoin="miter" style="color:#000000;stroke-dasharray:none;" d="m109.96,1026.2s-5.9583-0.4039-4.125,6.3823h-5.125s0.33334-7.6749,9.25-6.3823z" fill-rule="nonzero" stroke-dashoffset="0" display="block" stroke="url(#linearGradient3683)" stroke-linecap="butt" stroke-miterlimit="4" stroke-width="1.00000024" fill="url(#linearGradient3681)"/>
<g id="g1878" transform="matrix(-0.386034,-0.316192,-0.326152,0.374245,134.46368,1028.1234)" stroke="#3465a4" stroke-width="1.52344131" fill="url(#linearGradient3685)">
<path id="path1880" stroke-linejoin="miter" style="color:#000000;stroke-dasharray:none;" d="M44.307,50.23c18.514-14.411,5.358-36.818-21.845-37.732l-0.348-9.3465-14.49,17.346,15.09,12.722s-0.25192-9.8812-0.25192-9.8812c18.83,0.99898,32.982,14.072,21.844,26.892z" fill-rule="nonzero" stroke-dashoffset="0" display="block" stroke="url(#linearGradient3687)" stroke-linecap="butt" stroke-miterlimit="4" stroke-width="2.00967717" fill="url(#linearGradient3685)"/>
</g>
<path id="path2839" stroke-linejoin="miter" style="color:#000000;stroke-dasharray:none;" d="m115.44,1041.5s5.9583,0.4046,4.125-6.3936h5.1839c0,0.9728-0.39226,7.6885-9.3089,6.3936z" fill-rule="nonzero" stroke-dashoffset="0" display="block" stroke="url(#linearGradient3693)" stroke-linecap="butt" stroke-miterlimit="4" stroke-width="1.00000012" fill="url(#linearGradient3691)"/>
<g id="g2779" stroke-linejoin="miter" style="color:#000000;stroke-dasharray:none;" fill-rule="nonzero" display="block" stroke-dashoffset="0" transform="matrix(0.386034,0.316753,0.326152,-0.374909,91.23907,1039.6243)" stroke="url(#linearGradient3687)" stroke-linecap="butt" stroke-miterlimit="4" stroke-width="2.00789738" fill="url(#linearGradient3695)">
<path id="path2781" stroke-linejoin="miter" style="color:#000000;stroke-dasharray:none;" d="M44.307,50.23c18.514-14.411,5.358-36.818-21.845-37.732l-0.063-9.429-14.605,17.355,14.668,12.582v-9.6684c18.83,0.99898,32.982,14.072,21.844,26.892z" fill-rule="nonzero" stroke-dashoffset="0" display="block" stroke="url(#linearGradient3687)" stroke-linecap="butt" stroke-miterlimit="4" stroke-width="2.00789738" fill="url(#linearGradient3695)"/>
</g>
<path id="path2791" opacity="0.27222224" style="color:#000000;" d="m101.42,1044.2-0.005-9.2715,8.1406-0.04-2.8009,3.2437,2.7032,1.7397c-2,1.4568-2.9393,1.3182-3.606,2.9773l-1.9248-1.4913-2.5069,2.8418z" fill-rule="nonzero" fill="#FFF"/>
<g id="g2793" opacity="0.5" transform="matrix(0.328713,0.262901,0.277723,-0.311169,94.451191,1039.6682)" stroke="#FFF" stroke-width="1.59006381" fill="none">
<path id="path2795" stroke-linejoin="miter" style="color:#000000;stroke-dasharray:none;" d="M51.77,46.731c9.12-15.22-5.305-35.305-33.483-34.489l-0.061-7.0152-11.692,14.07,11.502,9.847s0.05562-9.0069,0.05562-9.0069c23.572,0.79434,37.206,12.015,33.678,26.594z" stroke-dashoffset="0" display="block" stroke="url(#linearGradient3703)" stroke-linecap="butt" stroke-miterlimit="4" stroke-width="2.38841796" fill="none"/>
</g>
<g id="g2805" opacity="0.5" transform="matrix(-0.339024,-0.277687,-0.286434,0.328671,131.88578,1028.1196)" stroke="#FFF" stroke-width="1.52344131" fill="none">
<path id="path2807" stroke-linejoin="miter" style="color:#000000;stroke-dasharray:none;" d="M51.39,46.506c9.12-15.22-5.103-33.388-32.525-33.75l-0.203-6.8084-11.22,13.22,11.585,9.795s-0.31396-8.424-0.31396-8.424c22.406,0.47504,35.698,11.698,32.677,25.967z" stroke-dashoffset="0" display="block" stroke="url(#linearGradient3703)" stroke-linecap="butt" stroke-miterlimit="4" stroke-width="2.2883451" fill="none"/>
</g>
<path id="path2811" opacity="0.27222224" style="color:#000000;" d="m101.06,1030.1c1.8331-6.967,11.056-4.1901,13.552-3.1271,2.7835,0.1366,3.6269-1.4573,5.8438-1.564-9.3665-6.3273-18.708-4.0447-19.396,4.6911z" fill-rule="nonzero" fill="#FFF"/>
</g>
</g>
<g id="g3940">
<rect id="rect4173-6" opacity="0.40206" style="color:#000000;" fill-rule="nonzero" height="6.1523" width="21.113" y="1046.3" x="165.44" fill="url(#linearGradient3938)"/>
<path id="path5058-2" opacity="0.40206185" style="color:#000000;" d="m186.56,1046.3v6.152c2.2517,0.012,5.4436-1.3783,5.4436-3.0764,0-1.698-2.5128-3.0756-5.4436-3.0756z" fill-rule="nonzero" fill="url(#radialGradient3935)"/>
<path id="path5018-1" opacity="0.40206185" style="color:#000000;" d="m165.44,1046.3v6.152c-2.2517,0.012-5.4436-1.3783-5.4436-3.0764,0-1.698,2.5128-3.0756,5.4436-3.0756z" fill-rule="nonzero" fill="url(#radialGradient3932)"/>
<rect id="rect4652" rx="1.1157" ry="1.141" height="4.3277" width="25.057" stroke="#595959" stroke-miterlimit="4" y="1045.5" x="163.5" stroke-width="1" fill="url(#linearGradient3929)"/>
<path id="rect4609" stroke-linejoin="miter" style="color:#000000;" d="m164.89,1035.9,22.235,0c0.25375,0,0.57798,0.1972,0.77793,0.4953,0.19994,0.2982,1.1444,1.7858,1.3565,2.1033,0.21216,0.3175,0.25896,0.6185,0.25896,1.01v8.2631c0,0.6251-0.48239,1.1283-1.0816,1.1283h-24.859c-0.59921,0-1.0816-0.5032-1.0816-1.1283v-8.2631c0-0.3381,0.0667-0.8227,0.29419-1.1313,0.2871-0.3893,1.0573-1.7433,1.2604-2.0304,0.20315-0.2872,0.57619-0.4469,0.83877-0.4469z" fill-rule="nonzero" stroke-dashoffset="0" stroke="#676767" stroke-linecap="butt" stroke-miterlimit="4" stroke-width="1.00000072" fill="url(#linearGradient3926)"/>
<path id="path4718" fill-rule="evenodd" fill="#fbfbfb" d="m165.21,1036.4c-0.32896,0-0.75194,0.078-0.92539,0.3188l-1.2146,1.6835c-0.19552,0.271,0.0222,0.9098,0.61055,0.9098h24.632c0.79582,0,0.79814-0.6012,0.61054-0.8572l-1.1567-1.5782c-0.20974-0.2862-0.28587-0.4767-0.80972-0.4767h-21.747z"/>
<path id="path4750" stroke-linejoin="miter" style="color:#000000;" d="m165.48,1036.8,21.024,0c0.23419,0,0.53343,0.1765,0.71796,0.4435,0.18454,0.2671,0.83016,1.3133,1.026,1.5976,0.19581,0.2843,0.27896,0.5539,0.27896,0.9045v7.2992c0,0.5598-0.0856,0.8082-0.63867,0.8082h-23.736c-0.55303,0-0.67863-0.2484-0.67863-0.8082v-7.2992c0-0.3027,0.14144-0.7368,0.35143-1.0131,0.26497-0.3486,0.69329-1.2752,0.88078-1.5323,0.18749-0.2572,0.53178-0.4002,0.77413-0.4002z" stroke-dashoffset="0" stroke="url(#linearGradient3922)" stroke-linecap="butt" stroke-miterlimit="4" stroke-width="0.9469679" fill="none"/>
<path id="rect15391" stroke-linejoin="miter" style="color:#000000;" d="m167.33,1023.9,17.347,0c0.45791,0,0.82657,0.3529,0.82657,0.7913v12.941h-19v-12.941c0-0.4384,0.36865-0.7913,0.82657-0.7913z" fill-rule="nonzero" stroke-dashoffset="0" display="block" stroke="#898989" stroke-linecap="round" stroke-miterlimit="4" stroke-width="1.00000083" fill="url(#linearGradient3919)"/>
<rect id="rect15660" stroke-linejoin="round" style="color:#000000;" display="block" stroke-dashoffset="0" rx="0.12007" ry="0.11941" height="12.724" width="16.981" stroke="url(#linearGradient3916)" stroke-linecap="round" stroke-miterlimit="4" y="1024.9" x="167.52" stroke-width="1" fill="none"/>
<rect id="rect4678" rx="1.1157" ry="1.0723" height="3.25" width="22" stroke="url(#linearGradient3913)" stroke-miterlimit="4" y="1039.6" x="164.5" stroke-width="1" fill="url(#linearGradient3911)"/>
<path id="path4696" fill="url(#radialGradient3821)" d="m10.872,27.626a1.2816,1.2816,0,1,1,-2.5633,0,1.2816,1.2816,0,1,1,2.5633,0z" transform="matrix(0.666667,0,0,0.666667,160.58599,1022.3401)"/>
<path id="path4731" opacity="0.36571428" d="m167.68,1038.4,17.042,0.038c0.45833,0,0.65855-0.2238,0.625-0.6031l-0.0833-0.9423h1.2441c0.54167,0,0.66014,0.1162,0.79167,0.3393l0.33333,0.5653c0.3512,0.5957,1.2074,1.1905,0.33211,1.1905-3.0018,0-18.785-0.2105-20.285-0.5874z" fill-rule="evenodd" fill="url(#linearGradient3907)"/>
<path id="path4760" stroke-linejoin="round" d="m188.47,1039-24.975,0" stroke="#FFF" stroke-linecap="round" stroke-width="1.00000048px" fill="none"/>
<g id="g4849" opacity="0.43575416" fill-opacity="0.29239765" fill-rule="nonzero" transform="matrix(0.684243,0,0,0.993056,159.41998,1019.4386)" fill="#000">
<rect id="rect4833" style="color:#000000;" height="1" width="19" y="7" x="14"/>
<rect id="rect4835" style="color:#000000;" height="1" width="19" y="9" x="14"/>
<rect id="rect4837" style="color:#000000;" height="1" width="19" y="11" x="14"/>
<rect id="rect4839" style="color:#000000;" height="1" width="11" y="13" x="14"/>
</g>
<path id="path8643-7" style="color:#000000;" fill-rule="evenodd" fill="#a7a7a7" d="m173.99,1034.4,5.0626,0,0-1.9842,1.9686-0.031-4.5899-6.0785-5.0468,6.053,2.607,0-0.001,2.0409z"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 32 KiB

View file

@ -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;

View file

@ -27,11 +27,17 @@
* The installer for the Zuma Deluxe Popcap game is good for testing.
*/
#include <stdarg.h>
#include <stdio.h>
#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);
}
}

View file

@ -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;
}

View file

@ -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

View file

@ -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**);

View file

@ -12,6 +12,7 @@
<library>uuid</library>
<library>ntdll</library>
<library>advapi32</library>
<library>comctl32</library>
<library>user32</library>
<library>ole32</library>
<library>oleaut32</library>

View file

@ -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"

View file

@ -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

View file

@ -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;
}

View file

@ -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();

View file

@ -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.@)
*/

View file

@ -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)