From c28ad3b23e05b5537fa2de11b4c7a079ef4f919e Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Sun, 21 Apr 2013 13:50:00 +0000 Subject: [PATCH] [SHDOCVW] * Sync with Wine 1.5.26. svn path=/trunk/; revision=58802 --- reactos/dll/win32/shdocvw/CMakeLists.txt | 47 +- reactos/dll/win32/shdocvw/De.rc | 88 -- reactos/dll/win32/shdocvw/En.rc | 86 -- reactos/dll/win32/shdocvw/Es.rc | 89 -- reactos/dll/win32/shdocvw/Fr.rc | 91 -- reactos/dll/win32/shdocvw/He.rc | 90 -- reactos/dll/win32/shdocvw/It.rc | 90 -- reactos/dll/win32/shdocvw/Ko.rc | 88 -- reactos/dll/win32/shdocvw/Lt.rc | 89 -- reactos/dll/win32/shdocvw/Nl.rc | 86 -- reactos/dll/win32/shdocvw/Pl.rc | 87 -- reactos/dll/win32/shdocvw/Pt.rc | 94 -- reactos/dll/win32/shdocvw/Ro.rc | 60 -- reactos/dll/win32/shdocvw/Si.rc | 88 -- reactos/dll/win32/shdocvw/Sr.rc | 156 --- reactos/dll/win32/shdocvw/Sv.rc | 88 -- reactos/dll/win32/shdocvw/Tr.rc | 91 -- reactos/dll/win32/shdocvw/Uk.rc | 90 -- reactos/dll/win32/shdocvw/classinfo.c | 98 -- reactos/dll/win32/shdocvw/client.c | 532 ---------- reactos/dll/win32/shdocvw/dochost.c | 832 --------------- reactos/dll/win32/shdocvw/events.c | 316 ------ reactos/dll/win32/shdocvw/factory.c | 339 ------ reactos/dll/win32/shdocvw/frame.c | 183 ---- reactos/dll/win32/shdocvw/ie.c | 686 ------------ reactos/dll/win32/shdocvw/ietoolbar.bmp | Bin 24698 -> 0 bytes reactos/dll/win32/shdocvw/ietoolbar.svg | 285 ----- reactos/dll/win32/shdocvw/iexplore.c | 830 --------------- reactos/dll/win32/shdocvw/intshcut.c | 648 ----------- reactos/dll/win32/shdocvw/navigate.c | 1132 -------------------- reactos/dll/win32/shdocvw/oleobject.c | 972 ----------------- reactos/dll/win32/shdocvw/persist.c | 276 ----- reactos/dll/win32/shdocvw/resource.h | 60 -- reactos/dll/win32/shdocvw/shdocvw.h | 306 +----- reactos/dll/win32/shdocvw/shdocvw.inf | 158 --- reactos/dll/win32/shdocvw/shdocvw.rc | 69 +- reactos/dll/win32/shdocvw/shdocvw.spec | 4 +- reactos/dll/win32/shdocvw/shdocvw_main.c | 154 ++- reactos/dll/win32/shdocvw/shlinstobj.c | 110 +- reactos/dll/win32/shdocvw/taskbarlist.c | 168 --- reactos/dll/win32/shdocvw/urlhist.c | 131 --- reactos/dll/win32/shdocvw/version.rc | 27 - reactos/dll/win32/shdocvw/view.c | 238 ----- reactos/dll/win32/shdocvw/webbrowser.c | 1240 ---------------------- reactos/media/doc/README.WINE | 2 +- 45 files changed, 173 insertions(+), 11221 deletions(-) delete mode 100644 reactos/dll/win32/shdocvw/De.rc delete mode 100644 reactos/dll/win32/shdocvw/En.rc delete mode 100644 reactos/dll/win32/shdocvw/Es.rc delete mode 100644 reactos/dll/win32/shdocvw/Fr.rc delete mode 100644 reactos/dll/win32/shdocvw/He.rc delete mode 100644 reactos/dll/win32/shdocvw/It.rc delete mode 100644 reactos/dll/win32/shdocvw/Ko.rc delete mode 100644 reactos/dll/win32/shdocvw/Lt.rc delete mode 100644 reactos/dll/win32/shdocvw/Nl.rc delete mode 100644 reactos/dll/win32/shdocvw/Pl.rc delete mode 100644 reactos/dll/win32/shdocvw/Pt.rc delete mode 100644 reactos/dll/win32/shdocvw/Ro.rc delete mode 100644 reactos/dll/win32/shdocvw/Si.rc delete mode 100644 reactos/dll/win32/shdocvw/Sr.rc delete mode 100644 reactos/dll/win32/shdocvw/Sv.rc delete mode 100644 reactos/dll/win32/shdocvw/Tr.rc delete mode 100644 reactos/dll/win32/shdocvw/Uk.rc delete mode 100644 reactos/dll/win32/shdocvw/classinfo.c delete mode 100644 reactos/dll/win32/shdocvw/client.c delete mode 100644 reactos/dll/win32/shdocvw/dochost.c delete mode 100644 reactos/dll/win32/shdocvw/events.c delete mode 100644 reactos/dll/win32/shdocvw/factory.c delete mode 100644 reactos/dll/win32/shdocvw/frame.c delete mode 100644 reactos/dll/win32/shdocvw/ie.c delete mode 100644 reactos/dll/win32/shdocvw/ietoolbar.bmp delete mode 100644 reactos/dll/win32/shdocvw/ietoolbar.svg delete mode 100644 reactos/dll/win32/shdocvw/iexplore.c delete mode 100644 reactos/dll/win32/shdocvw/intshcut.c delete mode 100644 reactos/dll/win32/shdocvw/navigate.c delete mode 100644 reactos/dll/win32/shdocvw/oleobject.c delete mode 100644 reactos/dll/win32/shdocvw/persist.c delete mode 100644 reactos/dll/win32/shdocvw/resource.h delete mode 100644 reactos/dll/win32/shdocvw/shdocvw.inf delete mode 100644 reactos/dll/win32/shdocvw/taskbarlist.c delete mode 100644 reactos/dll/win32/shdocvw/urlhist.c delete mode 100644 reactos/dll/win32/shdocvw/version.rc delete mode 100644 reactos/dll/win32/shdocvw/view.c delete mode 100644 reactos/dll/win32/shdocvw/webbrowser.c diff --git a/reactos/dll/win32/shdocvw/CMakeLists.txt b/reactos/dll/win32/shdocvw/CMakeLists.txt index 34b51022118..8ec066a6fbf 100644 --- a/reactos/dll/win32/shdocvw/CMakeLists.txt +++ b/reactos/dll/win32/shdocvw/CMakeLists.txt @@ -1,6 +1,4 @@ -add_typelib(shdocvw_v1.idl) - add_definitions( -D__WINESRC__ -D_SHDOCVW_) @@ -9,57 +7,22 @@ include_directories(${REACTOS_SOURCE_DIR}/include/reactos/wine) spec2def(shdocvw.dll shdocvw.spec ADD_IMPORTLIB) list(APPEND SOURCE - classinfo.c - client.c - dochost.c - events.c - factory.c - frame.c - ie.c - iexplore.c - intshcut.c - navigate.c - oleobject.c - persist.c shdocvw_main.c shlinstobj.c - taskbarlist.c - urlhist.c - view.c - webbrowser.c ${CMAKE_CURRENT_BINARY_DIR}/shdocvw_stubs.c ${CMAKE_CURRENT_BINARY_DIR}/shdocvw.def) + +add_typelib(shdocvw_v1.idl) set_source_files_properties(shdocvw.rc PROPERTIES OBJECT_DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/shdocvw_v1.tlb) - -add_library(shdocvw SHARED - ${SOURCE} - shdocvw.rc) - +add_library(shdocvw SHARED ${SOURCE} shdocvw.rc) set_module_type(shdocvw win32dll) target_link_libraries(shdocvw uuid wine) -add_delay_importlibs(shdocvw version ole32 oleaut32) - -add_importlibs(shdocvw - comctl32 - shlwapi - shell32 - user32 - advapi32 - gdi32 - urlmon - msvcrt - kernel32 - ntdll) +add_importlibs(shdocvw shlwapi advapi32 msvcrt kernel32 ntdll) +add_delay_importlibs(shdocvw version ole32 oleaut32 ieframe) # shdocvw_v1.tlb needs stdole2.tlb add_dependencies(shdocvw stdole2) add_pch(shdocvw shdocvw.h) add_cd_file(TARGET shdocvw DESTINATION reactos/system32 FOR all) - -if(NOT MSVC) - # FIXME: http://www.cmake.org/Bug/view.php?id=12998 - #allow_warnings(shdocvw) - set_source_files_properties(${SOURCE} PROPERTIES COMPILE_FLAGS "-Wno-error") -endif() diff --git a/reactos/dll/win32/shdocvw/De.rc b/reactos/dll/win32/shdocvw/De.rc deleted file mode 100644 index 9e5a50b30b9..00000000000 --- a/reactos/dll/win32/shdocvw/De.rc +++ /dev/null @@ -1,88 +0,0 @@ -/* - * Copyright 2010 André Hentschel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA - */ - -#include "resource.h" - -#pragma code_page(65001) - -LANGUAGE LANG_GERMAN, SUBLANG_NEUTRAL - -IDD_BROWSE_OPEN DIALOG 10, 10, 200, 70 -STYLE DS_MODALFRAME | WS_CAPTION -CAPTION "URL öffnen" -FONT 8, "MS Shell Dlg" -{ - LTEXT "Geben Sie die Url ein, die Sie mit Internet Explorer öffnen möchten",-1,30, 5, 150,15 - LTEXT "Öffnen:", -1, 2, 32, 25, 15 - EDITTEXT IDC_BROWSE_OPEN_URL, 30, 30, 160, 13 - DEFPUSHBUTTON "&OK", IDOK, 30, 50, 50, 15 - PUSHBUTTON "&Abbrechen", IDCANCEL, 90, 50, 50, 15 -} - -IDR_BROWSE_MAIN_MENU MENU -{ - POPUP "&Datei" - { - POPUP "&Neu" - { - MENUITEM "&Fenster", ID_BROWSE_NEW_WINDOW - } - MENUITEM "Ö&ffnen...", ID_BROWSE_OPEN - MENUITEM "&Speichern", ID_BROWSE_SAVE - MENUITEM "Speichern &als...", ID_BROWSE_SAVE_AS - MENUITEM SEPARATOR - MENUITEM "Seite &einrichten...", ID_BROWSE_PRINT_FORMAT - MENUITEM "Dr&ucken...", ID_BROWSE_PRINT - MENUITEM "Seiten&vorschau...", ID_BROWSE_PRINT_PREVIEW - MENUITEM SEPARATOR - MENUITEM "Ei&genschaften...", ID_BROWSE_PROPERTIES - MENUITEM "&Beenden", ID_BROWSE_QUIT - } - POPUP "&Ansicht" - { - POPUP "&Symbolleisten" - { - MENUITEM "&Standard", ID_BROWSE_BAR_STD - MENUITEM "&Adressleiste", ID_BROWSE_BAR_ADDR - } - } - POPUP "&Favoriten" - { - MENUITEM "&Zu den Favoriten hinzufügen...", ID_BROWSE_ADDFAV - MENUITEM SEPARATOR - } - POPUP "&Hilfe" - { - MENUITEM "Über &Internet Explorer...", ID_BROWSE_ABOUT - } -} - -STRINGTABLE -{ - IDS_TB_BACK "Zurück" - IDS_TB_FORWARD "Vorwärts" - IDS_TB_STOP "Stopp" - IDS_TB_REFRESH "Neu laden" - IDS_TB_HOME "Start" - IDS_TB_PRINT "Drucken" -} - -STRINGTABLE -{ - IDS_ADDRESS "Adresse" -} diff --git a/reactos/dll/win32/shdocvw/En.rc b/reactos/dll/win32/shdocvw/En.rc deleted file mode 100644 index 9e0bd2beadc..00000000000 --- a/reactos/dll/win32/shdocvw/En.rc +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Copyright 2010 Alexander N. Sørnes - * - * 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_ENGLISH, SUBLANG_DEFAULT - -IDD_BROWSE_OPEN DIALOG 10, 10, 200, 70 -STYLE DS_MODALFRAME | WS_CAPTION -CAPTION "Open URL" -FONT 8, "MS Shell Dlg" -{ - LTEXT "Specify the URL you wish to open 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 "&Cancel", IDCANCEL, 85, 50, 50, 15 -} - -IDR_BROWSE_MAIN_MENU MENU -{ - POPUP "&File" - { - POPUP "&New" - { - MENUITEM "&Window", ID_BROWSE_NEW_WINDOW - } - MENUITEM "&Open...", ID_BROWSE_OPEN - MENUITEM "&Save", ID_BROWSE_SAVE - MENUITEM "Save &as...", ID_BROWSE_SAVE_AS - MENUITEM SEPARATOR - MENUITEM "Print &format...", ID_BROWSE_PRINT_FORMAT - MENUITEM "Pr&int...", ID_BROWSE_PRINT - MENUITEM "Print previe&w...", ID_BROWSE_PRINT_PREVIEW - MENUITEM SEPARATOR - MENUITEM "&Properties...", ID_BROWSE_PROPERTIES - MENUITEM "&Close", ID_BROWSE_QUIT - } - POPUP "&View" - { - POPUP "&Toolbars" - { - MENUITEM "&Standard bar", ID_BROWSE_BAR_STD - MENUITEM "&Address bar", ID_BROWSE_BAR_ADDR - } - } - POPUP "&Favorites" - { - MENUITEM "&Add to Favorites...", ID_BROWSE_ADDFAV - MENUITEM SEPARATOR - } - POPUP "&Help" - { - MENUITEM "&About Internet Explorer...", ID_BROWSE_ABOUT - } -} - -STRINGTABLE -{ - IDS_TB_BACK "Back" - IDS_TB_FORWARD "Forward" - IDS_TB_STOP "Stop" - IDS_TB_REFRESH "Refresh" - IDS_TB_HOME "Home" - IDS_TB_PRINT "Print" -} - -STRINGTABLE -{ - IDS_ADDRESS "Address" -} diff --git a/reactos/dll/win32/shdocvw/Es.rc b/reactos/dll/win32/shdocvw/Es.rc deleted file mode 100644 index 680f5426baa..00000000000 --- a/reactos/dll/win32/shdocvw/Es.rc +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Spanish resources for shdocvw - * - * Copyright 2010 José Rostagno - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA - */ - -#include "resource.h" - -#pragma code_page(65001) - -LANGUAGE LANG_SPANISH, SUBLANG_NEUTRAL - -IDD_BROWSE_OPEN DIALOG 10, 10, 200, 70 -STYLE DS_MODALFRAME | WS_CAPTION -CAPTION "Abrir URL" -FONT 8, "MS Shell Dlg" -{ - LTEXT "Especifique la dirección que desea abrir en Internet Explorer",-1,25, 5, 150,15 - LTEXT "Abrir:", -1, 2, 32, 20, 15 - EDITTEXT IDC_BROWSE_OPEN_URL, 25, 30, 160, 13 - DEFPUSHBUTTON "&Aceptar", IDOK, 25, 50, 50, 15 - PUSHBUTTON "&Cancelar", IDCANCEL, 85, 50, 50, 15 -} - -IDR_BROWSE_MAIN_MENU MENU -{ - POPUP "&Archivo" - { - POPUP "&Nuevo" - { - MENUITEM "&Ventana", ID_BROWSE_NEW_WINDOW - } - MENUITEM "&Abrir...", ID_BROWSE_OPEN - MENUITEM "&Guardar", ID_BROWSE_SAVE - MENUITEM "Guardar &como...", ID_BROWSE_SAVE_AS - MENUITEM SEPARATOR - MENUITEM "&Formato de impresión...", ID_BROWSE_PRINT_FORMAT - MENUITEM "&Imprimir...", ID_BROWSE_PRINT - MENUITEM "&Vista previa de impresión...", ID_BROWSE_PRINT_PREVIEW - MENUITEM SEPARATOR - MENUITEM "&Propiedades...", ID_BROWSE_PROPERTIES - } - POPUP "&Ver" - { - POPUP "&Barra de herramientas" - { - MENUITEM "Barra &estándar", ID_BROWSE_BAR_STD - MENUITEM "Barra de &direcciones", ID_BROWSE_BAR_ADDR - } - } - POPUP "&Favoritos" - { - MENUITEM "&Añadir a Favoritos...", ID_BROWSE_ADDFAV - MENUITEM SEPARATOR - } - POPUP "A&yuda" - { - MENUITEM "Acerca &de Internet Explorer...", ID_BROWSE_ABOUT - } -} - -STRINGTABLE -{ - IDS_TB_BACK "Atrás" - IDS_TB_FORWARD "Adelante" - IDS_TB_STOP "Detener" - IDS_TB_REFRESH "Recargar" - IDS_TB_HOME "Inicio" - IDS_TB_PRINT "Imprimir" -} - -STRINGTABLE -{ - IDS_ADDRESS "Dirección" -} diff --git a/reactos/dll/win32/shdocvw/Fr.rc b/reactos/dll/win32/shdocvw/Fr.rc deleted file mode 100644 index bbc7eae32b3..00000000000 --- a/reactos/dll/win32/shdocvw/Fr.rc +++ /dev/null @@ -1,91 +0,0 @@ -/* - * shdocvw French resources - * - * Copyright 2010 Frédéric Delanoy - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA - */ - -#include "resource.h" - -/* UTF-8 */ -#pragma code_page(65001) - -LANGUAGE LANG_FRENCH, SUBLANG_NEUTRAL - -IDD_BROWSE_OPEN DIALOG 10, 10, 200, 70 -STYLE DS_MODALFRAME | WS_CAPTION -CAPTION "Open URL" -FONT 8, "MS Shell Dlg" -{ - LTEXT "Spécifiez l'URL que vous désirez ouvrir dans Internet Explorer :",-1,30, 6, 150, 17 - LTEXT "Ouvrir :", -1, 2, 32, 27, 15 - EDITTEXT IDC_BROWSE_OPEN_URL, 30, 30, 155, 13 - DEFPUSHBUTTON "&OK", IDOK, 54, 50, 50, 15 - PUSHBUTTON "&Annuler", IDCANCEL, 114, 50, 50, 15 -} - -IDR_BROWSE_MAIN_MENU MENU -{ - POPUP "&Fichier" - { - POPUP "&Nouvelle" - { - MENUITEM "&Fenêtre", ID_BROWSE_NEW_WINDOW - } - MENUITEM "&Ouvrir...", ID_BROWSE_OPEN - MENUITEM "&Enregistrer", ID_BROWSE_SAVE - MENUITEM "Enregistrer &sous...", ID_BROWSE_SAVE_AS - MENUITEM SEPARATOR - MENUITEM "&Format d'impression...", ID_BROWSE_PRINT_FORMAT - MENUITEM "&Imprimer...", ID_BROWSE_PRINT - MENUITEM "&Aperçu avant impression...", ID_BROWSE_PRINT_PREVIEW - MENUITEM SEPARATOR - MENUITEM "&Propriétés...", ID_BROWSE_PROPERTIES - MENUITEM "&Quitter", ID_BROWSE_QUIT - } - POPUP "&Afficher" - { - POPUP "&Barres d'outils" - { - MENUITEM "Barre &standard", ID_BROWSE_BAR_STD - MENUITEM "Barre d'&adresse", ID_BROWSE_BAR_ADDR - } - } - POPUP "&Favoris" - { - MENUITEM "&Ajouter aux favoris...", ID_BROWSE_ADDFAV - MENUITEM SEPARATOR - } - POPUP "A&ide" - { - MENUITEM "À &propos d'Internet Explorer...", ID_BROWSE_ABOUT - } -} - -STRINGTABLE -{ - IDS_TB_BACK "Précédent" - IDS_TB_FORWARD "Suivant" - IDS_TB_STOP "Arrêter" - IDS_TB_REFRESH "Recharger" - IDS_TB_HOME "Accueil" - IDS_TB_PRINT "Imprimer" -} - -STRINGTABLE -{ - IDS_ADDRESS "Adresse" -} diff --git a/reactos/dll/win32/shdocvw/He.rc b/reactos/dll/win32/shdocvw/He.rc deleted file mode 100644 index 2b5f4e5593f..00000000000 --- a/reactos/dll/win32/shdocvw/He.rc +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright 2010 Alexander N. Sørnes - * Copyright 2010 Yaron Shahrabani - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA - */ - -#include "resource.h" - -#pragma code_page(65001) - -LANGUAGE LANG_HEBREW, SUBLANG_DEFAULT - -IDD_BROWSE_OPEN DIALOG 10, 10, 200, 70 -STYLE DS_MODALFRAME | WS_CAPTION -EXSTYLE WS_EX_LAYOUTRTL -CAPTION "פתיחת כתובת" -FONT 8, "MS Shell Dlg" -{ - LTEXT "נא לציין את הכתובת אותה ברצונך לפתוח באמצעות Internet Explorer",-1,25, 5, 150,15 - LTEXT "פתיחה:", -1, 2, 32, 20, 15 - EDITTEXT IDC_BROWSE_OPEN_URL, 25, 30, 160, 13 - DEFPUSHBUTTON "&אישור", IDOK, 25, 50, 50, 15 - PUSHBUTTON "&ביטול", IDCANCEL, 85, 50, 50, 15 -} - -IDR_BROWSE_MAIN_MENU MENU -{ - POPUP "&קובץ" - { - POPUP "&חדש" - { - MENUITEM "&חלון", ID_BROWSE_NEW_WINDOW - } - MENUITEM "&פתיחה...", ID_BROWSE_OPEN - MENUITEM "&שמירה", ID_BROWSE_SAVE - MENUITEM "שמירה &בשם...", ID_BROWSE_SAVE_AS - MENUITEM SEPARATOR - MENUITEM "&תצורת ההדפסה...", ID_BROWSE_PRINT_FORMAT - MENUITEM "ה&דפסה...", ID_BROWSE_PRINT - MENUITEM "תצוגה מ&קדימה להדפסה...", ID_BROWSE_PRINT_PREVIEW - MENUITEM SEPARATOR - MENUITEM "מ&אפיינים...", ID_BROWSE_PROPERTIES - MENUITEM "&סגירה", ID_BROWSE_QUIT - } - POPUP "&תצוגה" - { - POPUP "&סרגלי כלים" - { - MENUITEM "סרגל הכלים ה&רגיל", ID_BROWSE_BAR_STD - MENUITEM "סרגל ה&כתובות", ID_BROWSE_BAR_ADDR - } - } - POPUP "&מועדפים" - { - MENUITEM "הו&ספה למועדפים...", ID_BROWSE_ADDFAV - MENUITEM SEPARATOR - } - POPUP "ע&זרה" - { - MENUITEM "על &אודות Internet Explorer...", ID_BROWSE_ABOUT - } -} - -STRINGTABLE -{ - IDS_TB_BACK "חזרה" - IDS_TB_FORWARD "קדימה" - IDS_TB_STOP "עצירה" - IDS_TB_REFRESH "רענון" - IDS_TB_HOME "דף הבית" - IDS_TB_PRINT "הדפסה" -} - -STRINGTABLE -{ - IDS_ADDRESS "כתובת" -} diff --git a/reactos/dll/win32/shdocvw/It.rc b/reactos/dll/win32/shdocvw/It.rc deleted file mode 100644 index c86c456d1af..00000000000 --- a/reactos/dll/win32/shdocvw/It.rc +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright 2010 Alexander N. Sørnes - * Copyright 2010 Luca Bennati - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA - */ - -#include "resource.h" - -/* UTF-8 */ -#pragma code_page(65001) - -LANGUAGE LANG_ITALIAN, SUBLANG_NEUTRAL - -IDD_BROWSE_OPEN DIALOG 10, 10, 200, 70 -STYLE DS_MODALFRAME | WS_CAPTION -CAPTION "Apri URL" -FONT 8, "MS Shell Dlg" -{ - LTEXT "Specifica l'URL che vuoi aprire in Internet Explorer",-1,25, 5, 150,15 - LTEXT "Apri:", -1, 2, 32, 20, 15 - EDITTEXT IDC_BROWSE_OPEN_URL, 25, 30, 160, 13 - DEFPUSHBUTTON "&OK", IDOK, 25, 50, 50, 15 - PUSHBUTTON "&Annulla", IDCANCEL, 85, 50, 50, 15 -} - -IDR_BROWSE_MAIN_MENU MENU -{ - POPUP "&File" - { - POPUP "&Nuova" - { - MENUITEM "Fin&estra", ID_BROWSE_NEW_WINDOW - } - MENUITEM "&Apri...", ID_BROWSE_OPEN - MENUITEM "&Salva", ID_BROWSE_SAVE - MENUITEM "Sa&lva come...", ID_BROWSE_SAVE_AS - MENUITEM SEPARATOR - MENUITEM "&Imposta pagina...", ID_BROWSE_PRINT_FORMAT - MENUITEM "S&tampa...", ID_BROWSE_PRINT - MENUITEM "Antepri&ma di stampa...", ID_BROWSE_PRINT_PREVIEW - MENUITEM SEPARATOR - MENUITEM "&Proprietà...", ID_BROWSE_PROPERTIES - MENUITEM "&Chiudi", ID_BROWSE_QUIT - } - POPUP "&Visualizza" - { - POPUP "&Barre degli strumenti" - { - MENUITEM "Barra &predefinita", ID_BROWSE_BAR_STD - MENUITEM "Barra dell'&indirizzo", ID_BROWSE_BAR_ADDR - } - } - POPUP "&Preferiti" - { - MENUITEM "&Aggiungi ai Preferiti...", ID_BROWSE_ADDFAV - MENUITEM SEPARATOR - } - POPUP "&Aiuto" - { - MENUITEM "&Informazioni su Internet Explorer...", ID_BROWSE_ABOUT - } -} - -STRINGTABLE -{ - IDS_TB_BACK "Indietro" - IDS_TB_FORWARD "Avanti" - IDS_TB_STOP "Ferma" - IDS_TB_REFRESH "Aggiorna" - IDS_TB_HOME "Inizio" - IDS_TB_PRINT "Stampa" -} - -STRINGTABLE -{ - IDS_ADDRESS "Indirizzo" -} diff --git a/reactos/dll/win32/shdocvw/Ko.rc b/reactos/dll/win32/shdocvw/Ko.rc deleted file mode 100644 index 7bcfdf3f824..00000000000 --- a/reactos/dll/win32/shdocvw/Ko.rc +++ /dev/null @@ -1,88 +0,0 @@ -/* - * Copyright 2010 Alexander N. Sørnes - * Copyright 2010 YunSOng Hwang - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA - */ - -#include "resource.h" - -#pragma code_page(65001) - -LANGUAGE LANG_KOREAN, SUBLANG_DEFAULT - -IDD_BROWSE_OPEN DIALOG 10, 10, 200, 70 -STYLE DS_MODALFRAME | WS_CAPTION -CAPTION "URL 열기" -FONT 8, "MS Shell Dlg" -{ - LTEXT "인터넷 익스플로어로 열 URL 지정",-1,25, 5, 150,15 - LTEXT "열기:", -1, 2, 32, 20, 15 - EDITTEXT IDC_BROWSE_OPEN_URL, 25, 30, 160, 13 - DEFPUSHBUTTON "확인(&O)", IDOK, 25, 50, 50, 15 - PUSHBUTTON "취소(&C)", IDCANCEL, 85, 50, 50, 15 -} - -IDR_BROWSE_MAIN_MENU MENU -{ - POPUP "파일(&F)" - { - POPUP "새 작업(&N)" - { - MENUITEM "창(&W)", ID_BROWSE_NEW_WINDOW - } - MENUITEM "열기(&O)...", ID_BROWSE_OPEN - MENUITEM "저장(&S)", ID_BROWSE_SAVE - MENUITEM "다른 이름으로 저장(&A)...", ID_BROWSE_SAVE_AS - MENUITEM SEPARATOR - MENUITEM "인쇄 형식(&F)...", ID_BROWSE_PRINT_FORMAT - MENUITEM "인쇄(&I)...", ID_BROWSE_PRINT - MENUITEM "인쇄 미리보기(&W)...", ID_BROWSE_PRINT_PREVIEW - MENUITEM SEPARATOR - MENUITEM "속성(&P)...", ID_BROWSE_PROPERTIES - } - POPUP "보기(&V)" - { - POPUP "도구바(&T)" - { - MENUITEM "표준 바(&S)", ID_BROWSE_BAR_STD - MENUITEM "주소 바(&A)", ID_BROWSE_BAR_ADDR - } - } - POPUP "즐겨찾기(&F)" - { - MENUITEM "즐겨찾기 추가(&A)...", ID_BROWSE_ADDFAV - MENUITEM SEPARATOR - } - POPUP "도움말(&H)" - { - MENUITEM "인터넷 익스플로어 정보(&A)...", ID_BROWSE_ABOUT - } -} - -STRINGTABLE -{ - IDS_TB_BACK "뒤로" - IDS_TB_FORWARD "앞으로" - IDS_TB_STOP "멈추기" - IDS_TB_REFRESH "새로 고침" - IDS_TB_HOME "홈" - IDS_TB_PRINT "인쇄" -} - -STRINGTABLE -{ - IDS_ADDRESS "주소" -} diff --git a/reactos/dll/win32/shdocvw/Lt.rc b/reactos/dll/win32/shdocvw/Lt.rc deleted file mode 100644 index 267426770f1..00000000000 --- a/reactos/dll/win32/shdocvw/Lt.rc +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Copyright 2010 Aurimas Fišeras - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA - */ - -#include "resource.h" - -/* UTF-8 */ -#pragma code_page(65001) - -LANGUAGE LANG_LITHUANIAN, SUBLANG_NEUTRAL - -IDD_BROWSE_OPEN DIALOG 10, 10, 200, 70 -STYLE DS_MODALFRAME | WS_CAPTION -CAPTION "Atverti URL" -FONT 8, "MS Shell Dlg" -{ - LTEXT "Nurodykite URL, kurį norite atverti su interneto naršykle",-1 ,30, 5, 150, 16 - LTEXT "Atverti:", -1, 2, 32, 25, 15 - EDITTEXT IDC_BROWSE_OPEN_URL, 30, 30, 160, 13 - DEFPUSHBUTTON "&Gerai", IDOK, 30, 50, 50, 15 - PUSHBUTTON "&Atsisakyti", IDCANCEL, 90, 50, 50, 15 -} - -IDR_BROWSE_MAIN_MENU MENU -{ - POPUP "&Failas" - { - POPUP "&Naujas" - { - MENUITEM "&Langas", ID_BROWSE_NEW_WINDOW - } - MENUITEM "&Atverti...", ID_BROWSE_OPEN - MENUITEM "&Išsaugoti", ID_BROWSE_SAVE - MENUITEM "Išsaugoti &kaip...", ID_BROWSE_SAVE_AS - MENUITEM SEPARATOR - MENUITEM "Spaudinio &formatas...", ID_BROWSE_PRINT_FORMAT - MENUITEM "S&pausdinti...", ID_BROWSE_PRINT - MENUITEM "Spaudinio pe&ržiūra...", ID_BROWSE_PRINT_PREVIEW - MENUITEM SEPARATOR - MENUITEM "&Savybės...", ID_BROWSE_PROPERTIES - MENUITEM "&Užverti", ID_BROWSE_QUIT - } - POPUP "&Rodymas" - { - POPUP "&Įrankių juosta" - { - MENUITEM "Į&prastinė juosta", ID_BROWSE_BAR_STD - MENUITEM "&Adreso juosta", ID_BROWSE_BAR_ADDR - } - } - POPUP "&Adresynas" - { - MENUITEM "Į&rašyti į adresyną...", ID_BROWSE_ADDFAV - MENUITEM SEPARATOR - } - POPUP "&Žinynas" - { - MENUITEM "&Apie interneto naršyklę...", ID_BROWSE_ABOUT - } -} - -STRINGTABLE -{ - IDS_TB_BACK "Atgal" - IDS_TB_FORWARD "Pirmyn" - IDS_TB_STOP "Stabdyti" - IDS_TB_REFRESH "Atnaujinti" - IDS_TB_HOME "Pradžia" - IDS_TB_PRINT "Spausdinti" -} - -STRINGTABLE -{ - IDS_ADDRESS "Adresas" -} diff --git a/reactos/dll/win32/shdocvw/Nl.rc b/reactos/dll/win32/shdocvw/Nl.rc deleted file mode 100644 index f7e515d88ba..00000000000 --- a/reactos/dll/win32/shdocvw/Nl.rc +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Copyright 2010 Sven Baars - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA - */ - -#include "resource.h" - -LANGUAGE LANG_DUTCH, SUBLANG_NEUTRAL - -IDD_BROWSE_OPEN DIALOG 10, 10, 200, 70 -STYLE DS_MODALFRAME | WS_CAPTION -CAPTION "Open URL" -FONT 8, "MS Shell Dlg" -{ - LTEXT "Specificeer de URL die u wilt openen in Internet Explorer",-1,25, 5, 150,15 - LTEXT "Open:", -1, 2, 32, 20, 15 - EDITTEXT IDC_BROWSE_OPEN_URL, 25, 30, 160, 13 - DEFPUSHBUTTON "&OK", IDOK, 25, 50, 50, 15 - PUSHBUTTON "&Annuleren", IDCANCEL, 85, 50, 50, 15 -} - -IDR_BROWSE_MAIN_MENU MENU -{ - POPUP "&Bestand" - { - POPUP "&Nieuw" - { - MENUITEM "&Venster", ID_BROWSE_NEW_WINDOW - } - MENUITEM "&Openen...", ID_BROWSE_OPEN - MENUITEM "Op&slaan", ID_BROWSE_SAVE - MENUITEM "Ops&laan als...", ID_BROWSE_SAVE_AS - MENUITEM SEPARATOR - MENUITEM "Pa&gina-instellingen...", ID_BROWSE_PRINT_FORMAT - MENUITEM "Af&drukken...", ID_BROWSE_PRINT - MENUITEM "Afdruk&voorbeeld...", ID_BROWSE_PRINT_PREVIEW - MENUITEM SEPARATOR - MENUITEM "&Eigenschappen...", ID_BROWSE_PROPERTIES - MENUITEM "&Afsluiten", ID_BROWSE_QUIT - } - POPUP "Bee&ld" - { - POPUP "&Werkbalken" - { - MENUITEM "&Standaardbalk", ID_BROWSE_BAR_STD - MENUITEM "&Adresbalk", ID_BROWSE_BAR_ADDR - } - } - POPUP "&Favorieten" - { - MENUITEM "&Toevoegen aan Favorieten...", ID_BROWSE_ADDFAV - MENUITEM SEPARATOR - } - POPUP "&Help" - { - MENUITEM "&Over Internet Explorer...", ID_BROWSE_ABOUT - } -} - -STRINGTABLE -{ - IDS_TB_BACK "Terug" - IDS_TB_FORWARD "Vooruit" - IDS_TB_STOP "Stoppen" - IDS_TB_REFRESH "Vernieuwen" - IDS_TB_HOME "Startpagina" - IDS_TB_PRINT "Printen" -} - -STRINGTABLE -{ - IDS_ADDRESS "Adres" -} diff --git a/reactos/dll/win32/shdocvw/Pl.rc b/reactos/dll/win32/shdocvw/Pl.rc deleted file mode 100644 index 5a6ada86e6e..00000000000 --- a/reactos/dll/win32/shdocvw/Pl.rc +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Copyright 2010 ukasz Wojniowicz - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA - */ - -#include "resource.h" - - -LANGUAGE LANG_POLISH, SUBLANG_DEFAULT - -IDD_BROWSE_OPEN DIALOG 10, 10, 200, 70 -STYLE DS_MODALFRAME | WS_CAPTION -CAPTION "Otwrz URL" -FONT 8, "MS Shell Dlg" -{ - LTEXT "Podaj adres URL, ktry chcesz otworzy w Internet Explorerze",-1,25, 5, 150,15 - LTEXT "Otwrz:", -1, 2, 32, 20, 15 - EDITTEXT IDC_BROWSE_OPEN_URL, 25, 30, 160, 13 - DEFPUSHBUTTON "&OK", IDOK, 25, 50, 50, 15 - PUSHBUTTON "&Anuluj", IDCANCEL, 85, 50, 50, 15 -} - -IDR_BROWSE_MAIN_MENU MENU -{ - POPUP "&Plik" - { - POPUP "&Nowe" - { - MENUITEM "&Okno" ID_BROWSE_NEW_WINDOW - } - MENUITEM "&Otwrz...", ID_BROWSE_OPEN - MENUITEM "&Zapisz", ID_BROWSE_SAVE - MENUITEM "Zapisz &jako...", ID_BROWSE_SAVE_AS - MENUITEM SEPARATOR - MENUITEM "Forma&t wydruku...", ID_BROWSE_PRINT_FORMAT - MENUITEM "&Drukuj...", ID_BROWSE_PRINT - MENUITEM "Podgl&d wydruku...", ID_BROWSE_PRINT_PREVIEW - MENUITEM SEPARATOR - MENUITEM "&Waciwoci...", ID_BROWSE_PROPERTIES - MENUITEM "&Zamknij...", ID_BROWSE_QUIT - } - POPUP "&Widok" - { - POPUP "&Paski narzdzi" - { - MENUITEM "Pasek &standardowy" ID_BROWSE_BAR_STD - MENUITEM "&Pasek adresu" ID_BROWSE_BAR_ADDR - } - } - POPUP "&Ulubione" - { - MENUITEM "&Dodaj do ulubionych..." ID_BROWSE_ADDFAV - MENUITEM SEPARATOR - } - POPUP "&Pomoc" - { - MENUITEM "&O Internet Explorer...", ID_BROWSE_ABOUT - } -} - -STRINGTABLE -{ - IDS_TB_BACK "Wstecz" - IDS_TB_FORWARD "Dalej" - IDS_TB_STOP "Zatrzymaj" - IDS_TB_REFRESH "Odwierz" - IDS_TB_HOME "Strona gwna" - IDS_TB_PRINT "Drukuj" -} - -STRINGTABLE -{ - IDS_ADDRESS "Adres" -} diff --git a/reactos/dll/win32/shdocvw/Pt.rc b/reactos/dll/win32/shdocvw/Pt.rc deleted file mode 100644 index c65b89062cd..00000000000 --- a/reactos/dll/win32/shdocvw/Pt.rc +++ /dev/null @@ -1,94 +0,0 @@ -/* - * Copyright 2010 Gustavo Henrique Milaré - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA - */ - -#include "resource.h" - -#pragma code_page(65001) - -LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE_BRAZILIAN - -IDD_BROWSE_OPEN DIALOG 10, 10, 200, 70 -STYLE DS_MODALFRAME | WS_CAPTION -CAPTION "Abrir URL" -FONT 8, "MS Shell Dlg" -{ - LTEXT "Especifique a URL que você deseja abrir no Internet Explorer",-1,25, 5, 150,15 - LTEXT "Abrir:", -1, 2, 32, 20, 15 - EDITTEXT IDC_BROWSE_OPEN_URL, 25, 30, 160, 13 - DEFPUSHBUTTON "&OK", IDOK, 25, 50, 50, 15 - PUSHBUTTON "&Cancelar", IDCANCEL, 85, 50, 50, 15 -} - -LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE_BRAZILIAN - -IDR_BROWSE_MAIN_MENU MENU -{ - POPUP "&Arquivo" - { - POPUP "&Novo" - { - MENUITEM "&Janela", ID_BROWSE_NEW_WINDOW - } - MENUITEM "&Abrir...", ID_BROWSE_OPEN - MENUITEM "&Salvar", ID_BROWSE_SAVE - MENUITEM "Salvar &como...", ID_BROWSE_SAVE_AS - MENUITEM SEPARATOR - MENUITEM "Imprimir &formato...", ID_BROWSE_PRINT_FORMAT - MENUITEM "&Imprimir...", ID_BROWSE_PRINT - MENUITEM "&Vizualizar impressão...", ID_BROWSE_PRINT_PREVIEW - MENUITEM SEPARATOR - MENUITEM "&Propriedades...", ID_BROWSE_PROPERTIES - MENUITEM "&Fechar", ID_BROWSE_QUIT - } - POPUP "&Ver" - { - POPUP "&Ferramentas" - { - MENUITEM "Barra &padrão", ID_BROWSE_BAR_STD - MENUITEM "Barra de &endereço", ID_BROWSE_BAR_ADDR - } - } - POPUP "&Favoritos" - { - MENUITEM "&Adicionar aos Favoritos...", ID_BROWSE_ADDFAV - MENUITEM SEPARATOR - } - POPUP "A&juda" - { - MENUITEM "&Sobre o Internet Explorer...", ID_BROWSE_ABOUT - } -} - -LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE_BRAZILIAN - -STRINGTABLE -{ - IDS_TB_BACK "Voltar" - IDS_TB_FORWARD "Avançar" - IDS_TB_STOP "Parar" - IDS_TB_REFRESH "Atualizar" - IDS_TB_HOME "Início" - IDS_TB_PRINT "Imprimir" -} - -LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE_BRAZILIAN - -STRINGTABLE -{ - IDS_ADDRESS "Endereço" -} diff --git a/reactos/dll/win32/shdocvw/Ro.rc b/reactos/dll/win32/shdocvw/Ro.rc deleted file mode 100644 index d417552278a..00000000000 --- a/reactos/dll/win32/shdocvw/Ro.rc +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright 2010 Alexander N. Sørnes - * Copyright 2010 Michael Stefaniuc - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA - */ - -#include "resource.h" - -LANGUAGE LANG_ROMANIAN, SUBLANG_NEUTRAL - -#pragma code_page(65001) - -IDD_BROWSE_OPEN DIALOG 10, 10, 210, 70 -STYLE DS_MODALFRAME | WS_CAPTION -CAPTION "Deschide URL-ul" -FONT 8, "MS Shell Dlg" -{ - LTEXT "Specificați URL-ul pe care doriți să îl deschideți în Internet Explorer",-1,35, 5, 160,15 - LTEXT "Deschide:", -1, 2, 32, 30, 15 - EDITTEXT IDC_BROWSE_OPEN_URL, 35, 30, 170, 13 - DEFPUSHBUTTON "&OK", IDOK, 35, 50, 50, 15 - PUSHBUTTON "&Renunță", IDCANCEL, 95, 50, 50, 15 -} - -IDR_BROWSE_MAIN_MENU MENU -{ - POPUP "&Fișier" - { - POPUP "&Nou" - { - MENUITEM "&Fereastră", ID_BROWSE_NEW_WINDOW - } - MENUITEM "&Deschidere...", ID_BROWSE_OPEN - MENUITEM "&Salvează", ID_BROWSE_SAVE - MENUITEM "S&alvare ca...", ID_BROWSE_SAVE_AS - MENUITEM SEPARATOR - MENUITEM "&Format tipărire...", ID_BROWSE_PRINT_FORMAT - MENUITEM "T&ipărire...", ID_BROWSE_PRINT - MENUITEM "Pre&vizualizare imprimare...", ID_BROWSE_PRINT_PREVIEW - MENUITEM SEPARATOR - MENUITEM "&Proprietăți...", ID_BROWSE_PROPERTIES - } - POPUP "&Ajutor" - { - MENUITEM "&Despre Internet Explorer...", ID_BROWSE_ABOUT - } -} diff --git a/reactos/dll/win32/shdocvw/Si.rc b/reactos/dll/win32/shdocvw/Si.rc deleted file mode 100644 index 8a81a3e36c0..00000000000 --- a/reactos/dll/win32/shdocvw/Si.rc +++ /dev/null @@ -1,88 +0,0 @@ -/* - * Copyright 2010 Matej Spindler - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA - */ - -#include "resource.h" - -#pragma code_page(65001) - -LANGUAGE LANG_SLOVENIAN, SUBLANG_DEFAULT - -IDD_BROWSE_OPEN DIALOG 10, 10, 200, 70 -STYLE DS_MODALFRAME | WS_CAPTION -CAPTION "Open URL" -FONT 8, "MS Shell Dlg" -{ - LTEXT "Vnesite interneti naslov dokumenta, ki ga bo Internet Explorer odpru.",-1,25, 5, 150,15 - LTEXT "Odpri:", -1, 2, 32, 20, 15 - EDITTEXT IDC_BROWSE_OPEN_URL, 25, 30, 160, 13 - DEFPUSHBUTTON "&V redu", IDOK, 25, 50, 50, 15 - PUSHBUTTON "&Prekliči", IDCANCEL, 85, 50, 50, 15 -} - -IDR_BROWSE_MAIN_MENU MENU -{ - POPUP "&Datoteka" - { - POPUP "&Nov" - { - MENUITEM "&Okno", ID_BROWSE_NEW_WINDOW - } - MENUITEM "&Odpri ...", ID_BROWSE_OPEN - MENUITEM "&Shrani", ID_BROWSE_SAVE - MENUITEM "Shrani &kot ...", ID_BROWSE_SAVE_AS - MENUITEM SEPARATOR - MENUITEM "Nastavitve tiskanja ...", ID_BROWSE_PRINT_FORMAT - MENUITEM "Na&tisni ...", ID_BROWSE_PRINT - MENUITEM "Predo&gled tiskanja ...", ID_BROWSE_PRINT_PREVIEW - MENUITEM SEPARATOR - MENUITEM "&Lastnosti ...", ID_BROWSE_PROPERTIES - MENUITEM "&Zapri", ID_BROWSE_QUIT - } - POPUP "Pogl&ed" - { - POPUP "Oro&dne vrstice" - { - MENUITEM "&Statusna vrstica", ID_BROWSE_BAR_STD - MENUITEM "&Naslovna vrstica", ID_BROWSE_BAR_ADDR - } - } - POPUP "&Priljubljene" - { - MENUITEM "&Dodaj med priljubljene ...", ID_BROWSE_ADDFAV - MENUITEM SEPARATOR - } - POPUP "&Pomoč" - { - MENUITEM "O programu Internet Explorer ...", ID_BROWSE_ABOUT - } -} - -STRINGTABLE -{ - IDS_TB_BACK "Nazaj" - IDS_TB_FORWARD "Naprej" - IDS_TB_STOP "Stop" - IDS_TB_REFRESH "Osveži" - IDS_TB_HOME "Domov" - IDS_TB_PRINT "Natisni" -} - -STRINGTABLE -{ - IDS_ADDRESS "Naslov" -} diff --git a/reactos/dll/win32/shdocvw/Sr.rc b/reactos/dll/win32/shdocvw/Sr.rc deleted file mode 100644 index cf32fb06474..00000000000 --- a/reactos/dll/win32/shdocvw/Sr.rc +++ /dev/null @@ -1,156 +0,0 @@ -/* - * Copyright 2010 Alexander N. Sørnes - * Copyright 2010 Đorđe Vasiljević - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA - */ - -#include "resource.h" - -#pragma code_page(65001) - -LANGUAGE LANG_SERBIAN, SUBLANG_SERBIAN_CYRILLIC - -IDD_BROWSE_OPEN DIALOG 10, 10, 200, 70 -STYLE DS_MODALFRAME | WS_CAPTION -CAPTION "Отварање адресе" -FONT 8, "MS Shell Dlg" -{ - LTEXT "Унесите адресу коју желите да отворите у Internet Explorer-у",-1,25, 5, 150,15 - LTEXT "Отвори:", -1, 2, 32, 20, 15 - EDITTEXT IDC_BROWSE_OPEN_URL, 25, 30, 160, 13 - DEFPUSHBUTTON "&У реду", IDOK, 25, 50, 50, 15 - PUSHBUTTON "&Откажи", IDCANCEL, 85, 50, 50, 15 -} - -IDR_BROWSE_MAIN_MENU MENU -{ - POPUP "&Датотека" - { - POPUP "&Ново" - { - MENUITEM "&Прозор", ID_BROWSE_NEW_WINDOW - } - MENUITEM "&Отвори...", ID_BROWSE_OPEN - MENUITEM "&Сачувај", ID_BROWSE_SAVE - MENUITEM "Сачувај &као...", ID_BROWSE_SAVE_AS - MENUITEM SEPARATOR - MENUITEM "Формат &штампе...", ID_BROWSE_PRINT_FORMAT - MENUITEM "&Штампај...", ID_BROWSE_PRINT - MENUITEM "&Преглед штампе...", ID_BROWSE_PRINT_PREVIEW - MENUITEM SEPARATOR - MENUITEM "&Својства...", ID_BROWSE_PROPERTIES - MENUITEM "&Затвори", ID_BROWSE_QUIT - } - POPUP "&Приказ" - { - POPUP "&Алатнице" - { - MENUITEM "&Стандардна трака", ID_BROWSE_BAR_STD - MENUITEM "&Трака за навигацију", ID_BROWSE_BAR_ADDR - } - } - POPUP "&Омиљено" - { - MENUITEM "&Додај у омиљене...", ID_BROWSE_ADDFAV - MENUITEM SEPARATOR - } - POPUP "&Помоћ" - { - MENUITEM "&О Internet Explorer-у...", ID_BROWSE_ABOUT - } -} - -STRINGTABLE -{ - IDS_TB_BACK "Назад" - IDS_TB_FORWARD "Напред" - IDS_TB_STOP "Заустави" - IDS_TB_REFRESH "Освежи" - IDS_TB_HOME "Почетна" - IDS_TB_PRINT "Штампај" -} - -STRINGTABLE -{ - IDS_ADDRESS "Адреса" -} - -LANGUAGE LANG_SERBIAN, SUBLANG_SERBIAN_LATIN - -IDD_BROWSE_OPEN DIALOG 10, 10, 200, 70 -STYLE DS_MODALFRAME | WS_CAPTION -CAPTION "Otvaranje adrese" -FONT 8, "MS Shell Dlg" -{ - LTEXT "Unesite adresu koju želite da otvorite u Internet Explorer-u",-1,25, 5, 150,15 - LTEXT "Otvori:", -1, 2, 32, 20, 15 - EDITTEXT IDC_BROWSE_OPEN_URL, 25, 30, 160, 13 - DEFPUSHBUTTON "&U redu", IDOK, 25, 50, 50, 15 - PUSHBUTTON "&Otkaži", IDCANCEL, 85, 50, 50, 15 -} - -IDR_BROWSE_MAIN_MENU MENU -{ - POPUP "&Datoteka" - { - POPUP "&Novo" - { - MENUITEM "&Prozor", ID_BROWSE_NEW_WINDOW - } - MENUITEM "&Otvori...", ID_BROWSE_OPEN - MENUITEM "&Sačuvaj", ID_BROWSE_SAVE - MENUITEM "Sačuvaj &kao...", ID_BROWSE_SAVE_AS - MENUITEM SEPARATOR - MENUITEM "Format &štampe...", ID_BROWSE_PRINT_FORMAT - MENUITEM "&Štampaj...", ID_BROWSE_PRINT - MENUITEM "&Pregled štampe...", ID_BROWSE_PRINT_PREVIEW - MENUITEM SEPARATOR - MENUITEM "&Svojstva...", ID_BROWSE_PROPERTIES - MENUITEM "&Zatvori", ID_BROWSE_QUIT - } - POPUP "&Prikaz" - { - POPUP "&Alatnice" - { - MENUITEM "&Standardna traka", ID_BROWSE_BAR_STD - MENUITEM "&Traka za navigaciju", ID_BROWSE_BAR_ADDR - } - } - POPUP "&Omiljeno" - { - MENUITEM "&Dodaj u omiljene...", ID_BROWSE_ADDFAV - MENUITEM SEPARATOR - } - POPUP "&Pomoć" - { - MENUITEM "&O Internet Explorer-u...", ID_BROWSE_ABOUT - } -} - -STRINGTABLE -{ - IDS_TB_BACK "Nazad" - IDS_TB_FORWARD "Napred" - IDS_TB_STOP "Zaustavi" - IDS_TB_REFRESH "Osveži" - IDS_TB_HOME "Početna" - IDS_TB_PRINT "Štampaj" -} - -STRINGTABLE -{ - IDS_ADDRESS "Adresa" -} diff --git a/reactos/dll/win32/shdocvw/Sv.rc b/reactos/dll/win32/shdocvw/Sv.rc deleted file mode 100644 index d79e2c49e48..00000000000 --- a/reactos/dll/win32/shdocvw/Sv.rc +++ /dev/null @@ -1,88 +0,0 @@ -/* - * Copyright 2010 Anders Jonsson - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA - */ - -#include "resource.h" - -#pragma code_page(65001) - -LANGUAGE LANG_SWEDISH, SUBLANG_NEUTRAL - -IDD_BROWSE_OPEN DIALOG 10, 10, 200, 70 -STYLE DS_MODALFRAME | WS_CAPTION -CAPTION "Öppna webbadress" -FONT 8, "MS Shell Dlg" -{ - LTEXT "Ange webbadressen du vill öppna med Internet Explorer",-1,25, 5, 150,15 - LTEXT "Öppna:", -1, 2, 32, 20, 15 - EDITTEXT IDC_BROWSE_OPEN_URL, 25, 30, 160, 13 - DEFPUSHBUTTON "&OK", IDOK, 25, 50, 50, 15 - PUSHBUTTON "&Avbryt", IDCANCEL, 85, 50, 50, 15 -} - -IDR_BROWSE_MAIN_MENU MENU -{ - POPUP "&Arkiv" - { - POPUP "&Nytt" - { - MENUITEM "&Fönster", ID_BROWSE_NEW_WINDOW - } - MENUITEM "&Öppna...", ID_BROWSE_OPEN - MENUITEM "&Spara", ID_BROWSE_SAVE - MENUITEM "S¶ som...", ID_BROWSE_SAVE_AS - MENUITEM SEPARATOR - MENUITEM "U&tskriftsformat...", ID_BROWSE_PRINT_FORMAT - MENUITEM "Skriv &ut...", ID_BROWSE_PRINT - MENUITEM "&Förhandsgranska...", ID_BROWSE_PRINT_PREVIEW - MENUITEM SEPARATOR - MENUITEM "&Egenskaper...", ID_BROWSE_PROPERTIES - MENUITEM "Stä&ng", ID_BROWSE_QUIT - } - POPUP "&Visa" - { - POPUP "Verktygs&fält" - { - MENUITEM "&Standardfält", ID_BROWSE_BAR_STD - MENUITEM "&Adressfält", ID_BROWSE_BAR_ADDR - } - } - POPUP "&Favoriter" - { - MENUITEM "&Lägg till favoriter...", ID_BROWSE_ADDFAV - MENUITEM SEPARATOR - } - POPUP "&Hjälp" - { - MENUITEM "&Om Internet Explorer...", ID_BROWSE_ABOUT - } -} - -STRINGTABLE -{ - IDS_TB_BACK "Bakåt" - IDS_TB_FORWARD "Framåt" - IDS_TB_STOP "Stopp" - IDS_TB_REFRESH "Uppdatera" - IDS_TB_HOME "Hem" - IDS_TB_PRINT "Skriv ut" -} - -STRINGTABLE -{ - IDS_ADDRESS "Adress" -} diff --git a/reactos/dll/win32/shdocvw/Tr.rc b/reactos/dll/win32/shdocvw/Tr.rc deleted file mode 100644 index 6f9f19adedb..00000000000 --- a/reactos/dll/win32/shdocvw/Tr.rc +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Copyright 2010 Alexander N. Sørnes - * - * Çeviri 2012 Arda Tanrıkulu - * - * 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_TURKISH, SUBLANG_DEFAULT - -IDD_BROWSE_OPEN DIALOG 10, 10, 200, 70 -STYLE DS_MODALFRAME | WS_CAPTION -CAPTION "Aç" -FONT 8, "MS Shell Dlg" -{ - LTEXT "Bir belgenin veya klasörün Internet adresini yazın. Internet Explorer sizin için açacaktır.",-1,25, 5, 150,15 - LTEXT "Aç:", -1, 2, 32, 20, 15 - EDITTEXT IDC_BROWSE_OPEN_URL, 25, 30, 160, 13 - DEFPUSHBUTTON "Tamam", IDOK, 25, 50, 50, 15 - PUSHBUTTON "İptal", IDCANCEL, 85, 50, 50, 15 -} - -IDR_BROWSE_MAIN_MENU MENU -{ - POPUP "&Dosya" - { - POPUP "Y&eni" - { - MENUITEM "Pen&cere", ID_BROWSE_NEW_WINDOW - } - MENUITEM "&Aç...", ID_BROWSE_OPEN - MENUITEM "&Kaydet", ID_BROWSE_SAVE - MENUITEM "&Farklı Kaydet....", ID_BROWSE_SAVE_AS - MENUITEM SEPARATOR - MENUITEM "&Sayfa Yapısı...", ID_BROWSE_PRINT_FORMAT - MENUITEM "Pr&int...", ID_BROWSE_PRINT - MENUITEM "Baskı Ö&nizleme...", ID_BROWSE_PRINT_PREVIEW - MENUITEM SEPARATOR - MENUITEM "Ö&zellikler", ID_BROWSE_PROPERTIES - MENUITEM "&Kapat", ID_BROWSE_QUIT - } - POPUP "&Görünüm" - { - POPUP "&Araç Çubukları" - { - MENUITEM "Standart Ç&ubuk", ID_BROWSE_BAR_STD - MENUITEM "&Adres Çubuğu", ID_BROWSE_BAR_ADDR - } - } - POPUP "&Sık Kullanılanlar" - { - MENUITEM "Sık Kullanılanlara &Ekle", ID_BROWSE_ADDFAV - MENUITEM SEPARATOR - } - POPUP "&Yardım" - { - MENUITEM "Internet Explorer &Hakkında", ID_BROWSE_ABOUT - } -} - -STRINGTABLE -{ - IDS_TB_BACK "Geri" - IDS_TB_FORWARD "İleri" - IDS_TB_STOP "Dur" - IDS_TB_REFRESH "Yenile" - IDS_TB_HOME "Giriş" - IDS_TB_PRINT "Yazdır" -} - -STRINGTABLE -{ - IDS_ADDRESS "Adres" -} diff --git a/reactos/dll/win32/shdocvw/Uk.rc b/reactos/dll/win32/shdocvw/Uk.rc deleted file mode 100644 index 13178c1defb..00000000000 --- a/reactos/dll/win32/shdocvw/Uk.rc +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright 2010 Alexander N. Sørnes - * Copyright 2010 Igor Paliychuk - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA - */ - -#include "resource.h" - -/* UTF-8 */ -#pragma code_page(65001) - -LANGUAGE LANG_UKRAINIAN, SUBLANG_DEFAULT - -IDD_BROWSE_OPEN DIALOG 10, 10, 200, 70 -STYLE DS_MODALFRAME | WS_CAPTION -CAPTION "Відкрити URL" -FONT 8, "MS Shell Dlg" -{ - LTEXT "Вкажіть URL, що ви хочете відкрити в Internet Explorer",-1,25, 5, 150,15 - LTEXT "Відкрити:", -1, 2, 32, 30, 15 - EDITTEXT IDC_BROWSE_OPEN_URL, 35, 30, 160, 13 - DEFPUSHBUTTON "&OK", IDOK, 45, 50, 50, 15 - PUSHBUTTON "&Скасувати", IDCANCEL, 105, 50, 50, 15 -} - -IDR_BROWSE_MAIN_MENU MENU -{ - POPUP "&Файл" - { - POPUP "&Створити" - { - MENUITEM "&Вікно", ID_BROWSE_NEW_WINDOW - } - MENUITEM "&Відкрити...", ID_BROWSE_OPEN - MENUITEM "&Зберегти", ID_BROWSE_SAVE - MENUITEM "Зберегти &як...", ID_BROWSE_SAVE_AS - MENUITEM SEPARATOR - MENUITEM "&Формат друку...", ID_BROWSE_PRINT_FORMAT - MENUITEM "&Друк...", ID_BROWSE_PRINT - MENUITEM "Попередній пе&регляд...", ID_BROWSE_PRINT_PREVIEW - MENUITEM SEPARATOR - MENUITEM "В&ластивості...", ID_BROWSE_PROPERTIES - MENUITEM "За&крити", ID_BROWSE_QUIT - } - POPUP "&Вигляд" - { - POPUP "&Панелі інструментів" - { - MENUITEM "&Стандартна панель", ID_BROWSE_BAR_STD - MENUITEM "Рядок &адреси", ID_BROWSE_BAR_ADDR - } - } - POPUP "&Обране" - { - MENUITEM "&Додати до Обраного...", ID_BROWSE_ADDFAV - MENUITEM SEPARATOR - } - POPUP "&Довідка" - { - MENUITEM "&Про Internet Explorer...", ID_BROWSE_ABOUT - } -} - -STRINGTABLE -{ - IDS_TB_BACK "Назад" - IDS_TB_FORWARD "Вперед" - IDS_TB_STOP "Зупинити" - IDS_TB_REFRESH "Оновити" - IDS_TB_HOME "Додому" - IDS_TB_PRINT "Друк" -} - -STRINGTABLE -{ - IDS_ADDRESS "Адреса" -} diff --git a/reactos/dll/win32/shdocvw/classinfo.c b/reactos/dll/win32/shdocvw/classinfo.c deleted file mode 100644 index 5f4faf436f0..00000000000 --- a/reactos/dll/win32/shdocvw/classinfo.c +++ /dev/null @@ -1,98 +0,0 @@ -/* - * Implementation of IProvideClassInfo interfaces for WebBrowser control - * - * Copyright 2001 John R. Sheets (for CodeWeavers) - * - * 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 -//#include - -//#include "windef.h" -//#include "winbase.h" -#include "shdocvw.h" -#include - -WINE_DEFAULT_DEBUG_CHANNEL(shdocvw); - -/********************************************************************** - * Implement the IProvideClassInfo2 interface - */ - -#define CLASSINFO_THIS(iface) DEFINE_THIS(WebBrowser, ProvideClassInfo, iface) - -static HRESULT WINAPI ProvideClassInfo_QueryInterface(IProvideClassInfo2 *iface, - REFIID riid, LPVOID *ppobj) -{ - WebBrowser *This = CLASSINFO_THIS(iface); - return IWebBrowser_QueryInterface(WEBBROWSER(This), riid, ppobj); -} - -static ULONG WINAPI ProvideClassInfo_AddRef(IProvideClassInfo2 *iface) -{ - WebBrowser *This = CLASSINFO_THIS(iface); - return IWebBrowser_AddRef(WEBBROWSER(This)); -} - -static ULONG WINAPI ProvideClassInfo_Release(IProvideClassInfo2 *iface) -{ - WebBrowser *This = CLASSINFO_THIS(iface); - return IWebBrowser_Release(WEBBROWSER(This)); -} - -static HRESULT WINAPI ProvideClassInfo_GetClassInfo(IProvideClassInfo2 *iface, LPTYPEINFO *ppTI) -{ - WebBrowser *This = CLASSINFO_THIS(iface); - FIXME("(%p)->(%p)\n", This, ppTI); - return E_NOTIMPL; -} - -static HRESULT WINAPI ProvideClassInfo_GetGUID(IProvideClassInfo2 *iface, - DWORD dwGuidKind, GUID *pGUID) -{ - WebBrowser *This = CLASSINFO_THIS(iface); - - TRACE("(%p)->(%d %p)\n", This, dwGuidKind, pGUID); - - if(!pGUID) - return E_POINTER; - - if (dwGuidKind != GUIDKIND_DEFAULT_SOURCE_DISP_IID) { - WARN("Wrong GUID type: %d\n", dwGuidKind); - *pGUID = IID_NULL; - return E_FAIL; - } - - memcpy(pGUID, This->version == 1 ? &DIID_DWebBrowserEvents : &DIID_DWebBrowserEvents2, - sizeof(GUID)); - return S_OK; -} - -#undef CLASSINFO_THIS - -static const IProvideClassInfo2Vtbl ProvideClassInfoVtbl = -{ - ProvideClassInfo_QueryInterface, - ProvideClassInfo_AddRef, - ProvideClassInfo_Release, - ProvideClassInfo_GetClassInfo, - ProvideClassInfo_GetGUID -}; - -void WebBrowser_ClassInfo_Init(WebBrowser *This) -{ - This->lpProvideClassInfoVtbl = &ProvideClassInfoVtbl; -} diff --git a/reactos/dll/win32/shdocvw/client.c b/reactos/dll/win32/shdocvw/client.c deleted file mode 100644 index edafbc8a887..00000000000 --- a/reactos/dll/win32/shdocvw/client.c +++ /dev/null @@ -1,532 +0,0 @@ -/* - * Copyright 2005 Jacek Caban for CodeWeavers - * - * 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 - -#include -#include "shdocvw.h" -#include -#include - -WINE_DEFAULT_DEBUG_CHANNEL(shdocvw); - -#define CLIENTSITE_THIS(iface) DEFINE_THIS(DocHost, OleClientSite, iface) - -static HRESULT WINAPI ClientSite_QueryInterface(IOleClientSite *iface, REFIID riid, void **ppv) -{ - DocHost *This = CLIENTSITE_THIS(iface); - - *ppv = NULL; - - if(IsEqualGUID(&IID_IUnknown, riid)) { - TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv); - *ppv = CLIENTSITE(This); - }else if(IsEqualGUID(&IID_IOleClientSite, riid)) { - TRACE("(%p)->(IID_IOleClientSite %p)\n", This, ppv); - *ppv = CLIENTSITE(This); - }else if(IsEqualGUID(&IID_IOleWindow, riid)) { - TRACE("(%p)->(IID_IOleWindow %p)\n", This, ppv); - *ppv = INPLACESITE(This); - }else if(IsEqualGUID(&IID_IOleInPlaceSite, riid)) { - TRACE("(%p)->(IID_IOleInPlaceSite %p)\n", This, ppv); - *ppv = INPLACESITE(This); - }else if(IsEqualGUID(&IID_IDocHostUIHandler, riid)) { - TRACE("(%p)->(IID_IDocHostUIHandler %p)\n", This, ppv); - *ppv = DOCHOSTUI(This); - }else if(IsEqualGUID(&IID_IDocHostUIHandler2, riid)) { - TRACE("(%p)->(IID_IDocHostUIHandler2 %p)\n", This, ppv); - *ppv = DOCHOSTUI2(This); - }else if(IsEqualGUID(&IID_IOleDocumentSite, riid)) { - TRACE("(%p)->(IID_IOleDocumentSite %p)\n", This, ppv); - *ppv = DOCSITE(This); - }else if(IsEqualGUID(&IID_IOleCommandTarget, riid)) { - TRACE("(%p)->(IID_IOleCommandTarget %p)\n", This, ppv); - *ppv = OLECMD(This); - }else if(IsEqualGUID(&IID_IDispatch, riid)) { - TRACE("(%p)->(IID_IDispatch %p)\n", This, ppv); - *ppv = CLDISP(This); - }else if(IsEqualGUID(&IID_IPropertyNotifySink, riid)) { - TRACE("(%p)->(IID_IPropertyNotifySink %p)\n", This, ppv); - *ppv = PROPNOTIF(This); - }else if(IsEqualGUID(&IID_IServiceProvider, riid)) { - TRACE("(%p)->(IID_IServiceProvider %p)\n", This, ppv); - *ppv = SERVPROV(This); - } - - if(*ppv) { - IOleClientSite_AddRef(CLIENTSITE(This)); - return S_OK; - } - - WARN("Unsupported interface %s\n", debugstr_guid(riid)); - - return E_NOINTERFACE; -} - -static ULONG WINAPI ClientSite_AddRef(IOleClientSite *iface) -{ - DocHost *This = CLIENTSITE_THIS(iface); - return IDispatch_AddRef(This->disp); -} - -static ULONG WINAPI ClientSite_Release(IOleClientSite *iface) -{ - DocHost *This = CLIENTSITE_THIS(iface); - return IDispatch_Release(This->disp); -} - -static HRESULT WINAPI ClientSite_SaveObject(IOleClientSite *iface) -{ - DocHost *This = CLIENTSITE_THIS(iface); - FIXME("(%p)\n", This); - return E_NOTIMPL; -} - -static HRESULT WINAPI ClientSite_GetMoniker(IOleClientSite *iface, DWORD dwAssign, - DWORD dwWhichMoniker, IMoniker **ppmk) -{ - DocHost *This = CLIENTSITE_THIS(iface); - FIXME("(%p)->(%d %d %p)\n", This, dwAssign, dwWhichMoniker, ppmk); - return E_NOTIMPL; -} - -static HRESULT WINAPI ClientSite_GetContainer(IOleClientSite *iface, IOleContainer **ppContainer) -{ - DocHost *This = CLIENTSITE_THIS(iface); - FIXME("(%p)->(%p)\n", This, ppContainer); - return E_NOTIMPL; -} - -static HRESULT WINAPI ClientSite_ShowObject(IOleClientSite *iface) -{ - DocHost *This = CLIENTSITE_THIS(iface); - FIXME("(%p)\n", This); - return E_NOTIMPL; -} - -static HRESULT WINAPI ClientSite_OnShowWindow(IOleClientSite *iface, BOOL fShow) -{ - DocHost *This = CLIENTSITE_THIS(iface); - FIXME("(%p)->(%x)\n", This, fShow); - return E_NOTIMPL; -} - -static HRESULT WINAPI ClientSite_RequestNewObjectLayout(IOleClientSite *iface) -{ - DocHost *This = CLIENTSITE_THIS(iface); - FIXME("(%p)\n", This); - return E_NOTIMPL; -} - -#undef CLIENTSITE_THIS - -static const IOleClientSiteVtbl OleClientSiteVtbl = { - ClientSite_QueryInterface, - ClientSite_AddRef, - ClientSite_Release, - ClientSite_SaveObject, - ClientSite_GetMoniker, - ClientSite_GetContainer, - ClientSite_ShowObject, - ClientSite_OnShowWindow, - ClientSite_RequestNewObjectLayout -}; - -#define INPLACESITE_THIS(iface) DEFINE_THIS(DocHost, OleInPlaceSite, iface) - -static HRESULT WINAPI InPlaceSite_QueryInterface(IOleInPlaceSite *iface, REFIID riid, void **ppv) -{ - DocHost *This = INPLACESITE_THIS(iface); - return IOleClientSite_QueryInterface(CLIENTSITE(This), riid, ppv); -} - -static ULONG WINAPI InPlaceSite_AddRef(IOleInPlaceSite *iface) -{ - DocHost *This = INPLACESITE_THIS(iface); - return IOleClientSite_AddRef(CLIENTSITE(This)); -} - -static ULONG WINAPI InPlaceSite_Release(IOleInPlaceSite *iface) -{ - DocHost *This = INPLACESITE_THIS(iface); - return IOleClientSite_Release(CLIENTSITE(This)); -} - -static HRESULT WINAPI InPlaceSite_GetWindow(IOleInPlaceSite *iface, HWND *phwnd) -{ - DocHost *This = INPLACESITE_THIS(iface); - - TRACE("(%p)->(%p)\n", This, phwnd); - - *phwnd = This->hwnd; - return S_OK; -} - -static HRESULT WINAPI InPlaceSite_ContextSensitiveHelp(IOleInPlaceSite *iface, BOOL fEnterMode) -{ - DocHost *This = INPLACESITE_THIS(iface); - FIXME("(%p)->(%x)\n", This, fEnterMode); - return E_NOTIMPL; -} - -static HRESULT WINAPI InPlaceSite_CanInPlaceActivate(IOleInPlaceSite *iface) -{ - DocHost *This = INPLACESITE_THIS(iface); - - TRACE("(%p)\n", This); - - /* Nothing to do here */ - return S_OK; -} - -static HRESULT WINAPI InPlaceSite_OnInPlaceActivate(IOleInPlaceSite *iface) -{ - DocHost *This = INPLACESITE_THIS(iface); - - TRACE("(%p)\n", This); - - /* Nothing to do here */ - return S_OK; -} - -static HRESULT WINAPI InPlaceSite_OnUIActivate(IOleInPlaceSite *iface) -{ - DocHost *This = INPLACESITE_THIS(iface); - FIXME("(%p)\n", This); - return E_NOTIMPL; -} - -static HRESULT WINAPI InPlaceSite_GetWindowContext(IOleInPlaceSite *iface, - IOleInPlaceFrame **ppFrame, IOleInPlaceUIWindow **ppDoc, LPRECT lprcPosRect, - LPRECT lprcClipRect, LPOLEINPLACEFRAMEINFO lpFrameInfo) -{ - DocHost *This = INPLACESITE_THIS(iface); - - TRACE("(%p)->(%p %p %p %p %p)\n", This, ppFrame, ppDoc, lprcPosRect, - lprcClipRect, lpFrameInfo); - - IOleInPlaceFrame_AddRef(INPLACEFRAME(This)); - *ppFrame = INPLACEFRAME(This); - *ppDoc = NULL; - - GetClientRect(This->hwnd, lprcPosRect); - *lprcClipRect = *lprcPosRect; - - lpFrameInfo->fMDIApp = FALSE; - lpFrameInfo->hwndFrame = This->frame_hwnd; - lpFrameInfo->haccel = NULL; - lpFrameInfo->cAccelEntries = 0; /* FIXME: should be 5 */ - - return S_OK; -} - -static HRESULT WINAPI InPlaceSite_Scroll(IOleInPlaceSite *iface, SIZE scrollExtent) -{ - DocHost *This = INPLACESITE_THIS(iface); - FIXME("(%p)->({%d %d})\n", This, scrollExtent.cx, scrollExtent.cy); - return E_NOTIMPL; -} - -static HRESULT WINAPI InPlaceSite_OnUIDeactivate(IOleInPlaceSite *iface, BOOL fUndoable) -{ - DocHost *This = INPLACESITE_THIS(iface); - FIXME("(%p)->(%x)\n", This, fUndoable); - return E_NOTIMPL; -} - -static HRESULT WINAPI InPlaceSite_OnInPlaceDeactivate(IOleInPlaceSite *iface) -{ - DocHost *This = INPLACESITE_THIS(iface); - - TRACE("(%p)\n", This); - - /* Nothing to do here */ - return S_OK; -} - -static HRESULT WINAPI InPlaceSite_DiscardUndoState(IOleInPlaceSite *iface) -{ - DocHost *This = INPLACESITE_THIS(iface); - FIXME("(%p)\n", This); - return E_NOTIMPL; -} - -static HRESULT WINAPI InPlaceSite_DeactivateAndUndo(IOleInPlaceSite *iface) -{ - DocHost *This = INPLACESITE_THIS(iface); - FIXME("(%p)\n", This); - return E_NOTIMPL; -} - -static HRESULT WINAPI InPlaceSite_OnPosRectChange(IOleInPlaceSite *iface, - LPCRECT lprcPosRect) -{ - DocHost *This = INPLACESITE_THIS(iface); - FIXME("(%p)->(%p)\n", This, lprcPosRect); - return E_NOTIMPL; -} - -#undef INPLACESITE_THIS - -static const IOleInPlaceSiteVtbl OleInPlaceSiteVtbl = { - InPlaceSite_QueryInterface, - InPlaceSite_AddRef, - InPlaceSite_Release, - InPlaceSite_GetWindow, - InPlaceSite_ContextSensitiveHelp, - InPlaceSite_CanInPlaceActivate, - InPlaceSite_OnInPlaceActivate, - InPlaceSite_OnUIActivate, - InPlaceSite_GetWindowContext, - InPlaceSite_Scroll, - InPlaceSite_OnUIDeactivate, - InPlaceSite_OnInPlaceDeactivate, - InPlaceSite_DiscardUndoState, - InPlaceSite_DeactivateAndUndo, - InPlaceSite_OnPosRectChange -}; - -#define DOCSITE_THIS(iface) DEFINE_THIS(DocHost, OleDocumentSite, iface) - -static HRESULT WINAPI OleDocumentSite_QueryInterface(IOleDocumentSite *iface, - REFIID riid, void **ppv) -{ - DocHost *This = DOCSITE_THIS(iface); - return IOleClientSite_QueryInterface(CLIENTSITE(This), riid, ppv); -} - -static ULONG WINAPI OleDocumentSite_AddRef(IOleDocumentSite *iface) -{ - DocHost *This = DOCSITE_THIS(iface); - return IOleClientSite_AddRef(CLIENTSITE(This)); -} - -static ULONG WINAPI OleDocumentSite_Release(IOleDocumentSite *iface) -{ - DocHost *This = DOCSITE_THIS(iface); - return IOleClientSite_Release(CLIENTSITE(This)); -} - -static HRESULT WINAPI OleDocumentSite_ActivateMe(IOleDocumentSite *iface, - IOleDocumentView *pViewToActivate) -{ - DocHost *This = DOCSITE_THIS(iface); - IOleDocument *oledoc; - RECT rect; - HRESULT hres; - - TRACE("(%p)->(%p)\n", This, pViewToActivate); - - hres = IUnknown_QueryInterface(This->document, &IID_IOleDocument, (void**)&oledoc); - if(FAILED(hres)) - return hres; - - IOleDocument_CreateView(oledoc, INPLACESITE(This), NULL, 0, &This->view); - IOleDocument_Release(oledoc); - - GetClientRect(This->hwnd, &rect); - IOleDocumentView_SetRect(This->view, &rect); - - hres = IOleDocumentView_Show(This->view, TRUE); - - return hres; -} - -#undef DOCSITE_THIS - -static const IOleDocumentSiteVtbl OleDocumentSiteVtbl = { - OleDocumentSite_QueryInterface, - OleDocumentSite_AddRef, - OleDocumentSite_Release, - OleDocumentSite_ActivateMe -}; - -#define DISP_THIS(iface) DEFINE_THIS(DocHost, Dispatch, iface) - -static HRESULT WINAPI ClDispatch_QueryInterface(IDispatch *iface, REFIID riid, void **ppv) -{ - DocHost *This = DISP_THIS(iface); - return IOleClientSite_QueryInterface(CLIENTSITE(This), riid, ppv); -} - -static ULONG WINAPI ClDispatch_AddRef(IDispatch *iface) -{ - DocHost *This = DISP_THIS(iface); - return IOleClientSite_AddRef(CLIENTSITE(This)); -} - -static ULONG WINAPI ClDispatch_Release(IDispatch *iface) -{ - DocHost *This = DISP_THIS(iface); - return IOleClientSite_Release(CLIENTSITE(This)); -} - -static HRESULT WINAPI ClDispatch_GetTypeInfoCount(IDispatch *iface, UINT *pctinfo) -{ - DocHost *This = DISP_THIS(iface); - - TRACE("(%p)->(%p)\n", This, pctinfo); - - return E_NOTIMPL; -} - -static HRESULT WINAPI ClDispatch_GetTypeInfo(IDispatch *iface, UINT iTInfo, LCID lcid, - ITypeInfo **ppTInfo) -{ - DocHost *This = DISP_THIS(iface); - - TRACE("(%p)->(%u %d %p)\n", This, iTInfo, lcid, ppTInfo); - - return E_NOTIMPL; -} - -static HRESULT WINAPI ClDispatch_GetIDsOfNames(IDispatch *iface, REFIID riid, LPOLESTR *rgszNames, - UINT cNames, LCID lcid, DISPID *rgDispId) -{ - DocHost *This = DISP_THIS(iface); - - TRACE("(%p)->(%s %p %u %d %p)\n", This, debugstr_guid(riid), rgszNames, cNames, - lcid, rgDispId); - - return E_NOTIMPL; -} - -static const char *debugstr_dispid(DISPID dispid) -{ - static char buf[16]; - -#define CASE_DISPID(did) case did: return #did - switch(dispid) { - CASE_DISPID(DISPID_AMBIENT_USERMODE); - CASE_DISPID(DISPID_AMBIENT_DLCONTROL); - CASE_DISPID(DISPID_AMBIENT_USERAGENT); - CASE_DISPID(DISPID_AMBIENT_PALETTE); - CASE_DISPID(DISPID_AMBIENT_OFFLINEIFNOTCONNECTED); - CASE_DISPID(DISPID_AMBIENT_SILENT); - } -#undef CASE_DISPID - - sprintf(buf, "%d", dispid); - return buf; -} - -static HRESULT WINAPI ClDispatch_Invoke(IDispatch *iface, DISPID dispIdMember, REFIID riid, - LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, - VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr) -{ - DocHost *This = DISP_THIS(iface); - - TRACE("(%p)->(%s %s %d %04x %p %p %p %p)\n", This, debugstr_dispid(dispIdMember), - debugstr_guid(riid), lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr); - - switch(dispIdMember) { - case DISPID_AMBIENT_USERMODE: - case DISPID_AMBIENT_DLCONTROL: - case DISPID_AMBIENT_USERAGENT: - case DISPID_AMBIENT_PALETTE: - if(!This->client_disp) - return E_FAIL; - return IDispatch_Invoke(This->client_disp, dispIdMember, riid, lcid, wFlags, - pDispParams, pVarResult, pExcepInfo, puArgErr); - case DISPID_AMBIENT_OFFLINEIFNOTCONNECTED: - V_VT(pVarResult) = VT_BOOL; - V_BOOL(pVarResult) = This->offline; - return S_OK; - case DISPID_AMBIENT_SILENT: - V_VT(pVarResult) = VT_BOOL; - V_BOOL(pVarResult) = This->offline; - return S_OK; - } - - FIXME("unhandled dispid %d\n", dispIdMember); - return E_NOTIMPL; -} - -#undef DISP_THIS - -static const IDispatchVtbl DispatchVtbl = { - ClDispatch_QueryInterface, - ClDispatch_AddRef, - ClDispatch_Release, - ClDispatch_GetTypeInfoCount, - ClDispatch_GetTypeInfo, - ClDispatch_GetIDsOfNames, - ClDispatch_Invoke -}; - -#define SERVPROV_THIS(iface) DEFINE_THIS(DocHost, ServiceProvider, iface) - -static HRESULT WINAPI ClServiceProvider_QueryInterface(IServiceProvider *iface, REFIID riid, - void **ppv) -{ - DocHost *This = SERVPROV_THIS(iface); - return IOleClientSite_QueryInterface(CLIENTSITE(This), riid, ppv); -} - -static ULONG WINAPI ClServiceProvider_AddRef(IServiceProvider *iface) -{ - DocHost *This = SERVPROV_THIS(iface); - return IOleClientSite_AddRef(CLIENTSITE(This)); -} - -static ULONG WINAPI ClServiceProvider_Release(IServiceProvider *iface) -{ - DocHost *This = SERVPROV_THIS(iface); - return IOleClientSite_Release(CLIENTSITE(This)); -} - -static HRESULT WINAPI ClServiceProvider_QueryService(IServiceProvider *iface, REFGUID guidService, - REFIID riid, void **ppv) -{ - DocHost *This = SERVPROV_THIS(iface); - - if(IsEqualGUID(&IID_IHlinkFrame, guidService)) { - TRACE("(%p)->(IID_IHlinkFrame %s %p)\n", This, debugstr_guid(riid), ppv); - return IDispatch_QueryInterface(This->disp, riid, ppv); - } - - FIXME("(%p)->(%s %s %p)\n", This, debugstr_guid(guidService), debugstr_guid(riid), ppv); - - return E_NOINTERFACE; -} - -#undef SERVPROV_THIS - -static const IServiceProviderVtbl ServiceProviderVtbl = { - ClServiceProvider_QueryInterface, - ClServiceProvider_AddRef, - ClServiceProvider_Release, - ClServiceProvider_QueryService -}; - -void DocHost_ClientSite_Init(DocHost *This) -{ - This->lpOleClientSiteVtbl = &OleClientSiteVtbl; - This->lpOleInPlaceSiteVtbl = &OleInPlaceSiteVtbl; - This->lpOleDocumentSiteVtbl = &OleDocumentSiteVtbl; - This->lpDispatchVtbl = &DispatchVtbl; - This->lpServiceProviderVtbl = &ServiceProviderVtbl; - - This->view = NULL; -} - -void DocHost_ClientSite_Release(DocHost *This) -{ - if(This->view) - IOleDocumentView_Release(This->view); -} diff --git a/reactos/dll/win32/shdocvw/dochost.c b/reactos/dll/win32/shdocvw/dochost.c deleted file mode 100644 index b777272f96a..00000000000 --- a/reactos/dll/win32/shdocvw/dochost.c +++ /dev/null @@ -1,832 +0,0 @@ -/* - * Copyright 2005-2006 Jacek Caban for CodeWeavers - * - * 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 -#include "shdocvw.h" -//#include "hlink.h" -#include -#include -#include - -WINE_DEFAULT_DEBUG_CHANNEL(shdocvw); - -DEFINE_OLEGUID(CGID_DocHostCmdPriv, 0x000214D4L, 0, 0); - -#define DOCHOST_DOCCANNAVIGATE 0 - -static ATOM doc_view_atom = 0; - -void push_dochost_task(DocHost *This, task_header_t *task, task_proc_t proc, BOOL send) -{ - task->proc = proc; - - /* FIXME: Don't use lParam */ - if(send) - SendMessageW(This->frame_hwnd, WM_DOCHOSTTASK, 0, (LPARAM)task); - else - PostMessageW(This->frame_hwnd, WM_DOCHOSTTASK, 0, (LPARAM)task); -} - -LRESULT process_dochost_task(DocHost *This, LPARAM lparam) -{ - task_header_t *task = (task_header_t*)lparam; - - task->proc(This, task); - - heap_free(task); - return 0; -} - -static void notif_complete(DocHost *This, DISPID dispid) -{ - DISPPARAMS dispparams; - VARIANTARG params[2]; - VARIANT url; - - dispparams.cArgs = 2; - dispparams.cNamedArgs = 0; - dispparams.rgdispidNamedArgs = NULL; - dispparams.rgvarg = params; - - V_VT(params) = (VT_BYREF|VT_VARIANT); - V_BYREF(params) = &url; - - V_VT(params+1) = VT_DISPATCH; - V_DISPATCH(params+1) = This->disp; - - V_VT(&url) = VT_BSTR; - V_BSTR(&url) = SysAllocString(This->url); - - TRACE("%d >>>\n", dispid); - call_sink(This->cps.wbe2, dispid, &dispparams); - TRACE("%d <<<\n", dispid); - - SysFreeString(V_BSTR(&url)); - This->busy = VARIANT_FALSE; -} - -static void object_available(DocHost *This) -{ - IHlinkTarget *hlink; - HRESULT hres; - - TRACE("(%p)\n", This); - - if(!This->document) { - WARN("document == NULL\n"); - return; - } - - hres = IUnknown_QueryInterface(This->document, &IID_IHlinkTarget, (void**)&hlink); - if(FAILED(hres)) { - FIXME("Could not get IHlinkTarget interface\n"); - return; - } - - hres = IHlinkTarget_Navigate(hlink, 0, NULL); - IHlinkTarget_Release(hlink); - if(FAILED(hres)) - FIXME("Navigate failed\n"); -} - -static HRESULT get_doc_ready_state(DocHost *This, READYSTATE *ret) -{ - DISPPARAMS dp = {NULL,NULL,0,0}; - IDispatch *disp; - EXCEPINFO ei; - VARIANT var; - HRESULT hres; - - hres = IUnknown_QueryInterface(This->document, &IID_IDispatch, (void**)&disp); - if(FAILED(hres)) - return hres; - - hres = IDispatch_Invoke(disp, DISPID_READYSTATE, &IID_NULL, LOCALE_SYSTEM_DEFAULT, DISPATCH_PROPERTYGET, - &dp, &var, &ei, NULL); - IDispatch_Release(disp); - if(FAILED(hres)) { - WARN("Invoke(DISPID_READYSTATE failed: %08x\n", hres); - return hres; - } - - if(V_VT(&var) != VT_I4) { - WARN("V_VT(var) = %d\n", V_VT(&var)); - VariantClear(&var); - return E_FAIL; - } - - *ret = V_I4(&var); - return S_OK; -} - -static void advise_prop_notif(DocHost *This, BOOL set) -{ - IConnectionPointContainer *cp_container; - IConnectionPoint *cp; - HRESULT hres; - - hres = IUnknown_QueryInterface(This->document, &IID_IConnectionPointContainer, (void**)&cp_container); - if(FAILED(hres)) - return; - - hres = IConnectionPointContainer_FindConnectionPoint(cp_container, &IID_IPropertyNotifySink, &cp); - IConnectionPointContainer_Release(cp_container); - if(FAILED(hres)) - return; - - if(set) - hres = IConnectionPoint_Advise(cp, (IUnknown*)PROPNOTIF(This), &This->prop_notif_cookie); - else - hres = IConnectionPoint_Unadvise(cp, This->prop_notif_cookie); - IConnectionPoint_Release(cp); - - if(SUCCEEDED(hres)) - This->is_prop_notif = set; -} - -void set_doc_state(DocHost *This, READYSTATE doc_state) -{ - This->doc_state = doc_state; - if(doc_state > This->ready_state) - This->ready_state = doc_state; -} - -static void update_ready_state(DocHost *This, READYSTATE ready_state) -{ - if(ready_state > READYSTATE_LOADING && This->doc_state <= READYSTATE_LOADING) - notif_complete(This, DISPID_NAVIGATECOMPLETE2); - - if(ready_state == READYSTATE_COMPLETE && This->doc_state < READYSTATE_COMPLETE) { - set_doc_state(This, READYSTATE_COMPLETE); - notif_complete(This, DISPID_DOCUMENTCOMPLETE); - }else { - set_doc_state(This, ready_state); - } -} - -typedef struct { - task_header_t header; - IUnknown *doc; - READYSTATE ready_state; -} ready_state_task_t; - -static void ready_state_proc(DocHost *This, task_header_t *_task) -{ - ready_state_task_t *task = (ready_state_task_t*)_task; - - if(task->doc == This->document) - update_ready_state(This, task->ready_state); - - IUnknown_Release(task->doc); -} - -static void push_ready_state_task(DocHost *This, READYSTATE ready_state) -{ - ready_state_task_t *task = heap_alloc(sizeof(ready_state_task_t)); - - IUnknown_AddRef(This->document); - task->doc = This->document; - task->ready_state = ready_state; - - push_dochost_task(This, &task->header, ready_state_proc, FALSE); -} - -static void object_available_proc(DocHost *This, task_header_t *task) -{ - object_available(This); -} - -HRESULT dochost_object_available(DocHost *This, IUnknown *doc) -{ - READYSTATE ready_state; - task_header_t *task; - IOleObject *oleobj; - HRESULT hres; - - IUnknown_AddRef(doc); - This->document = doc; - - hres = IUnknown_QueryInterface(doc, &IID_IOleObject, (void**)&oleobj); - if(SUCCEEDED(hres)) { - CLSID clsid; - - hres = IOleObject_GetUserClassID(oleobj, &clsid); - if(SUCCEEDED(hres)) - TRACE("Got clsid %s\n", - IsEqualGUID(&clsid, &CLSID_HTMLDocument) ? "CLSID_HTMLDocument" : debugstr_guid(&clsid)); - - hres = IOleObject_SetClientSite(oleobj, CLIENTSITE(This)); - if(FAILED(hres)) - FIXME("SetClientSite failed: %08x\n", hres); - - IOleObject_Release(oleobj); - }else { - FIXME("Could not get IOleObject iface: %08x\n", hres); - } - - /* FIXME: Call SetAdvise */ - - task = heap_alloc(sizeof(*task)); - push_dochost_task(This, task, object_available_proc, FALSE); - - hres = get_doc_ready_state(This, &ready_state); - if(SUCCEEDED(hres)) { - if(ready_state == READYSTATE_COMPLETE) - push_ready_state_task(This, READYSTATE_COMPLETE); - if(ready_state != READYSTATE_COMPLETE || This->doc_navigate) - advise_prop_notif(This, TRUE); - } - - return S_OK; -} - -static LRESULT resize_document(DocHost *This, LONG width, LONG height) -{ - RECT rect = {0, 0, width, height}; - - TRACE("(%p)->(%d %d)\n", This, width, height); - - if(This->view) - IOleDocumentView_SetRect(This->view, &rect); - - return 0; -} - -static LRESULT WINAPI doc_view_proc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) -{ - DocHost *This; - - static const WCHAR wszTHIS[] = {'T','H','I','S',0}; - - if(msg == WM_CREATE) { - This = *(DocHost**)lParam; - SetPropW(hwnd, wszTHIS, This); - }else { - This = GetPropW(hwnd, wszTHIS); - } - - switch(msg) { - case WM_SIZE: - return resize_document(This, LOWORD(lParam), HIWORD(lParam)); - } - - return DefWindowProcW(hwnd, msg, wParam, lParam); -} - -void create_doc_view_hwnd(DocHost *This) -{ - RECT rect; - - static const WCHAR wszShell_DocObject_View[] = - {'S','h','e','l','l',' ','D','o','c','O','b','j','e','c','t',' ','V','i','e','w',0}; - - if(!doc_view_atom) { - static WNDCLASSEXW wndclass = { - sizeof(wndclass), - CS_PARENTDC, - doc_view_proc, - 0, 0 /* native uses 4*/, NULL, NULL, NULL, - (HBRUSH)(COLOR_WINDOW + 1), NULL, - wszShell_DocObject_View, - NULL - }; - - wndclass.hInstance = shdocvw_hinstance; - - doc_view_atom = RegisterClassExW(&wndclass); - } - - 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, - rect.left, rect.top, rect.right, rect.bottom, This->frame_hwnd, - NULL, shdocvw_hinstance, This); -} - -void deactivate_document(DocHost *This) -{ - IOleInPlaceObjectWindowless *winobj; - IOleObject *oleobj = NULL; - IHlinkTarget *hlink = NULL; - HRESULT hres; - - if(This->doc_navigate) { - IUnknown_Release(This->doc_navigate); - This->doc_navigate = NULL; - } - - if(This->is_prop_notif) - advise_prop_notif(This, FALSE); - - if(This->view) - IOleDocumentView_UIActivate(This->view, FALSE); - - hres = IUnknown_QueryInterface(This->document, &IID_IOleInPlaceObjectWindowless, - (void**)&winobj); - if(SUCCEEDED(hres)) { - IOleInPlaceObjectWindowless_InPlaceDeactivate(winobj); - IOleInPlaceObjectWindowless_Release(winobj); - } - - if(This->view) { - IOleDocumentView_Show(This->view, FALSE); - IOleDocumentView_CloseView(This->view, 0); - IOleDocumentView_SetInPlaceSite(This->view, NULL); - IOleDocumentView_Release(This->view); - This->view = NULL; - } - - hres = IUnknown_QueryInterface(This->document, &IID_IOleObject, (void**)&oleobj); - if(SUCCEEDED(hres)) - IOleObject_Close(oleobj, OLECLOSE_NOSAVE); - - hres = IUnknown_QueryInterface(This->document, &IID_IHlinkTarget, (void**)&hlink); - if(SUCCEEDED(hres)) { - IHlinkTarget_SetBrowseContext(hlink, NULL); - IHlinkTarget_Release(hlink); - } - - if(oleobj) { - IOleClientSite *client_site = NULL; - - IOleObject_GetClientSite(oleobj, &client_site); - if(client_site) { - if(client_site == CLIENTSITE(This)) - IOleObject_SetClientSite(oleobj, NULL); - IOleClientSite_Release(client_site); - } - - IOleObject_Release(oleobj); - } - - IUnknown_Release(This->document); - This->document = NULL; -} - -void release_dochost_client(DocHost *This) -{ - if(This->hwnd) { - DestroyWindow(This->hwnd); - This->hwnd = NULL; - } - - if(This->hostui) { - IDocHostUIHandler_Release(This->hostui); - This->hostui = NULL; - } - - if(This->client_disp) { - IDispatch_Release(This->client_disp); - This->client_disp = NULL; - } - - if(This->frame) { - IOleInPlaceFrame_Release(This->frame); - This->frame = NULL; - } -} - -#define OLECMD_THIS(iface) DEFINE_THIS(DocHost, OleCommandTarget, iface) - -static HRESULT WINAPI ClOleCommandTarget_QueryInterface(IOleCommandTarget *iface, - REFIID riid, void **ppv) -{ - DocHost *This = OLECMD_THIS(iface); - return IOleClientSite_QueryInterface(CLIENTSITE(This), riid, ppv); -} - -static ULONG WINAPI ClOleCommandTarget_AddRef(IOleCommandTarget *iface) -{ - DocHost *This = OLECMD_THIS(iface); - return IOleClientSite_AddRef(CLIENTSITE(This)); -} - -static ULONG WINAPI ClOleCommandTarget_Release(IOleCommandTarget *iface) -{ - DocHost *This = OLECMD_THIS(iface); - return IOleClientSite_Release(CLIENTSITE(This)); -} - -static HRESULT WINAPI ClOleCommandTarget_QueryStatus(IOleCommandTarget *iface, - const GUID *pguidCmdGroup, ULONG cCmds, OLECMD prgCmds[], OLECMDTEXT *pCmdText) -{ - DocHost *This = OLECMD_THIS(iface); - ULONG i= 0; - FIXME("(%p)->(%s %u %p %p)\n", This, debugstr_guid(pguidCmdGroup), cCmds, prgCmds, - pCmdText); - while (prgCmds && (cCmds > i)) { - FIXME("command_%u: %u, 0x%x\n", i, prgCmds[i].cmdID, prgCmds[i].cmdf); - i++; - } - return E_NOTIMPL; -} - -static HRESULT WINAPI ClOleCommandTarget_Exec(IOleCommandTarget *iface, - const GUID *pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt, VARIANT *pvaIn, - VARIANT *pvaOut) -{ - DocHost *This = OLECMD_THIS(iface); - - TRACE("(%p)->(%s %d %d %p %p)\n", This, debugstr_guid(pguidCmdGroup), nCmdID, - nCmdexecopt, debugstr_variant(pvaIn), debugstr_variant(pvaOut)); - - if(!pguidCmdGroup) { - 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)) { - switch(nCmdID) { - case DOCHOST_DOCCANNAVIGATE: - if(!pvaIn || V_VT(pvaIn) != VT_UNKNOWN) - return E_INVALIDARG; - - if(This->doc_navigate) - IUnknown_Release(This->doc_navigate); - IUnknown_AddRef(V_UNKNOWN(pvaIn)); - This->doc_navigate = V_UNKNOWN(pvaIn); - return S_OK; - - default: - FIXME("unsupported command %d of CGID_DocHostCmdPriv\n", nCmdID); - return E_NOTIMPL; - } - } - - FIXME("Unimplemented group %s\n", debugstr_guid(pguidCmdGroup)); - return E_NOTIMPL; -} - -#undef OLECMD_THIS - -static const IOleCommandTargetVtbl OleCommandTargetVtbl = { - ClOleCommandTarget_QueryInterface, - ClOleCommandTarget_AddRef, - ClOleCommandTarget_Release, - ClOleCommandTarget_QueryStatus, - ClOleCommandTarget_Exec -}; - -#define DOCHOSTUI_THIS(iface) DEFINE_THIS(DocHost, DocHostUIHandler, iface) - -static HRESULT WINAPI DocHostUIHandler_QueryInterface(IDocHostUIHandler2 *iface, - REFIID riid, void **ppv) -{ - DocHost *This = DOCHOSTUI_THIS(iface); - return IOleClientSite_QueryInterface(CLIENTSITE(This), riid, ppv); -} - -static ULONG WINAPI DocHostUIHandler_AddRef(IDocHostUIHandler2 *iface) -{ - DocHost *This = DOCHOSTUI_THIS(iface); - return IOleClientSite_AddRef(CLIENTSITE(This)); -} - -static ULONG WINAPI DocHostUIHandler_Release(IDocHostUIHandler2 *iface) -{ - DocHost *This = DOCHOSTUI_THIS(iface); - return IOleClientSite_Release(CLIENTSITE(This)); -} - -static HRESULT WINAPI DocHostUIHandler_ShowContextMenu(IDocHostUIHandler2 *iface, - DWORD dwID, POINT *ppt, IUnknown *pcmdtReserved, IDispatch *pdispReserved) -{ - DocHost *This = DOCHOSTUI_THIS(iface); - HRESULT hres; - - TRACE("(%p)->(%d %p %p %p)\n", This, dwID, ppt, pcmdtReserved, pdispReserved); - - if(This->hostui) { - hres = IDocHostUIHandler_ShowContextMenu(This->hostui, dwID, ppt, pcmdtReserved, - pdispReserved); - if(hres == S_OK) - return S_OK; - } - - FIXME("default action not implemented\n"); - return E_NOTIMPL; -} - -static HRESULT WINAPI DocHostUIHandler_GetHostInfo(IDocHostUIHandler2 *iface, - DOCHOSTUIINFO *pInfo) -{ - DocHost *This = DOCHOSTUI_THIS(iface); - HRESULT hres; - - TRACE("(%p)->(%p)\n", This, pInfo); - - if(This->hostui) { - hres = IDocHostUIHandler_GetHostInfo(This->hostui, pInfo); - if(SUCCEEDED(hres)) - return hres; - } - - pInfo->dwFlags = DOCHOSTUIFLAG_DISABLE_HELP_MENU | DOCHOSTUIFLAG_OPENNEWWIN - | DOCHOSTUIFLAG_URL_ENCODING_ENABLE_UTF8 | DOCHOSTUIFLAG_ENABLE_INPLACE_NAVIGATION - | DOCHOSTUIFLAG_IME_ENABLE_RECONVERSION; - return S_OK; -} - -static HRESULT WINAPI DocHostUIHandler_ShowUI(IDocHostUIHandler2 *iface, DWORD dwID, - IOleInPlaceActiveObject *pActiveObject, IOleCommandTarget *pCommandTarget, - IOleInPlaceFrame *pFrame, IOleInPlaceUIWindow *pDoc) -{ - DocHost *This = DOCHOSTUI_THIS(iface); - FIXME("(%p)->(%d %p %p %p %p)\n", This, dwID, pActiveObject, pCommandTarget, - pFrame, pDoc); - return E_NOTIMPL; -} - -static HRESULT WINAPI DocHostUIHandler_HideUI(IDocHostUIHandler2 *iface) -{ - DocHost *This = DOCHOSTUI_THIS(iface); - FIXME("(%p)\n", This); - return E_NOTIMPL; -} - -static HRESULT WINAPI DocHostUIHandler_UpdateUI(IDocHostUIHandler2 *iface) -{ - DocHost *This = DOCHOSTUI_THIS(iface); - - TRACE("(%p)\n", This); - - if(!This->hostui) - return S_FALSE; - - return IDocHostUIHandler_UpdateUI(This->hostui); -} - -static HRESULT WINAPI DocHostUIHandler_EnableModeless(IDocHostUIHandler2 *iface, - BOOL fEnable) -{ - DocHost *This = DOCHOSTUI_THIS(iface); - FIXME("(%p)->(%x)\n", This, fEnable); - return E_NOTIMPL; -} - -static HRESULT WINAPI DocHostUIHandler_OnDocWindowActivate(IDocHostUIHandler2 *iface, - BOOL fActivate) -{ - DocHost *This = DOCHOSTUI_THIS(iface); - FIXME("(%p)->(%x)\n", This, fActivate); - return E_NOTIMPL; -} - -static HRESULT WINAPI DocHostUIHandler_OnFrameWindowActivate(IDocHostUIHandler2 *iface, - BOOL fActivate) -{ - DocHost *This = DOCHOSTUI_THIS(iface); - FIXME("(%p)->(%x)\n", This, fActivate); - return E_NOTIMPL; -} - -static HRESULT WINAPI DocHostUIHandler_ResizeBorder(IDocHostUIHandler2 *iface, - LPCRECT prcBorder, IOleInPlaceUIWindow *pUIWindow, BOOL fRameWindow) -{ - DocHost *This = DOCHOSTUI_THIS(iface); - FIXME("(%p)->(%p %p %X)\n", This, prcBorder, pUIWindow, fRameWindow); - return E_NOTIMPL; -} - -static HRESULT WINAPI DocHostUIHandler_TranslateAccelerator(IDocHostUIHandler2 *iface, - LPMSG lpMsg, const GUID *pguidCmdGroup, DWORD nCmdID) -{ - DocHost *This = DOCHOSTUI_THIS(iface); - FIXME("(%p)->(%p %p %d)\n", This, lpMsg, pguidCmdGroup, nCmdID); - return E_NOTIMPL; -} - -static HRESULT WINAPI DocHostUIHandler_GetOptionKeyPath(IDocHostUIHandler2 *iface, - LPOLESTR *pchKey, DWORD dw) -{ - DocHost *This = DOCHOSTUI_THIS(iface); - - TRACE("(%p)->(%p %d)\n", This, pchKey, dw); - - if(This->hostui) - return IDocHostUIHandler_GetOptionKeyPath(This->hostui, pchKey, dw); - - return S_OK; -} - -static HRESULT WINAPI DocHostUIHandler_GetDropTarget(IDocHostUIHandler2 *iface, - IDropTarget *pDropTarget, IDropTarget **ppDropTarget) -{ - DocHost *This = DOCHOSTUI_THIS(iface); - FIXME("(%p)\n", This); - return E_NOTIMPL; -} - -static HRESULT WINAPI DocHostUIHandler_GetExternal(IDocHostUIHandler2 *iface, - IDispatch **ppDispatch) -{ - DocHost *This = DOCHOSTUI_THIS(iface); - - TRACE("(%p)->(%p)\n", This, ppDispatch); - - if(This->hostui) - return IDocHostUIHandler_GetExternal(This->hostui, ppDispatch); - - FIXME("default action not implemented\n"); - return E_NOTIMPL; -} - -static HRESULT WINAPI DocHostUIHandler_TranslateUrl(IDocHostUIHandler2 *iface, - DWORD dwTranslate, OLECHAR *pchURLIn, OLECHAR **ppchURLOut) -{ - DocHost *This = DOCHOSTUI_THIS(iface); - - TRACE("(%p)->(%d %s %p)\n", This, dwTranslate, debugstr_w(pchURLIn), ppchURLOut); - - if(This->hostui) - return IDocHostUIHandler_TranslateUrl(This->hostui, dwTranslate, - pchURLIn, ppchURLOut); - - return S_FALSE; -} - -static HRESULT WINAPI DocHostUIHandler_FilterDataObject(IDocHostUIHandler2 *iface, - IDataObject *pDO, IDataObject **ppDORet) -{ - DocHost *This = DOCHOSTUI_THIS(iface); - FIXME("(%p)->(%p %p)\n", This, pDO, ppDORet); - return E_NOTIMPL; -} - -static HRESULT WINAPI DocHostUIHandler_GetOverrideKeyPath(IDocHostUIHandler2 *iface, - LPOLESTR *pchKey, DWORD dw) -{ - DocHost *This = DOCHOSTUI_THIS(iface); - IDocHostUIHandler2 *handler; - HRESULT hres; - - TRACE("(%p)->(%p %d)\n", This, pchKey, dw); - - if(!This->hostui) - return S_OK; - - hres = IDocHostUIHandler_QueryInterface(This->hostui, &IID_IDocHostUIHandler2, - (void**)&handler); - if(SUCCEEDED(hres)) { - hres = IDocHostUIHandler2_GetOverrideKeyPath(handler, pchKey, dw); - IDocHostUIHandler2_Release(handler); - return hres; - } - - return S_OK; -} - -#undef DOCHOSTUI_THIS - -static const IDocHostUIHandler2Vtbl DocHostUIHandler2Vtbl = { - DocHostUIHandler_QueryInterface, - DocHostUIHandler_AddRef, - DocHostUIHandler_Release, - DocHostUIHandler_ShowContextMenu, - DocHostUIHandler_GetHostInfo, - DocHostUIHandler_ShowUI, - DocHostUIHandler_HideUI, - DocHostUIHandler_UpdateUI, - DocHostUIHandler_EnableModeless, - DocHostUIHandler_OnDocWindowActivate, - DocHostUIHandler_OnFrameWindowActivate, - DocHostUIHandler_ResizeBorder, - DocHostUIHandler_TranslateAccelerator, - DocHostUIHandler_GetOptionKeyPath, - DocHostUIHandler_GetDropTarget, - DocHostUIHandler_GetExternal, - DocHostUIHandler_TranslateUrl, - DocHostUIHandler_FilterDataObject, - DocHostUIHandler_GetOverrideKeyPath -}; - -#define PROPNOTIF_THIS(iface) DEFINE_THIS(DocHost, IPropertyNotifySink, iface) - -static HRESULT WINAPI PropertyNotifySink_QueryInterface(IPropertyNotifySink *iface, - REFIID riid, void **ppv) -{ - DocHost *This = PROPNOTIF_THIS(iface); - return IOleClientSite_QueryInterface(CLIENTSITE(This), riid, ppv); -} - -static ULONG WINAPI PropertyNotifySink_AddRef(IPropertyNotifySink *iface) -{ - DocHost *This = PROPNOTIF_THIS(iface); - return IOleClientSite_AddRef(CLIENTSITE(This)); -} - -static ULONG WINAPI PropertyNotifySink_Release(IPropertyNotifySink *iface) -{ - DocHost *This = PROPNOTIF_THIS(iface); - return IOleClientSite_Release(CLIENTSITE(This)); -} - -static HRESULT WINAPI PropertyNotifySink_OnChanged(IPropertyNotifySink *iface, DISPID dispID) -{ - DocHost *This = PROPNOTIF_THIS(iface); - - TRACE("(%p)->(%d)\n", This, dispID); - - switch(dispID) { - case DISPID_READYSTATE: { - READYSTATE ready_state; - HRESULT hres; - - hres = get_doc_ready_state(This, &ready_state); - if(FAILED(hres)) - return hres; - - if(ready_state == READYSTATE_COMPLETE && !This->doc_navigate) - advise_prop_notif(This, FALSE); - - push_ready_state_task(This, ready_state); - break; - } - default: - FIXME("unimplemented dispid %d\n", dispID); - return E_NOTIMPL; - } - - return S_OK; -} - -static HRESULT WINAPI PropertyNotifySink_OnRequestEdit(IPropertyNotifySink *iface, DISPID dispID) -{ - DocHost *This = PROPNOTIF_THIS(iface); - FIXME("(%p)->(%d)\n", This, dispID); - return E_NOTIMPL; -} - -#undef PROPNOTIF_THIS - -static const IPropertyNotifySinkVtbl PropertyNotifySinkVtbl = { - PropertyNotifySink_QueryInterface, - PropertyNotifySink_AddRef, - PropertyNotifySink_Release, - PropertyNotifySink_OnChanged, - PropertyNotifySink_OnRequestEdit -}; - -void DocHost_Init(DocHost *This, IDispatch *disp, const IDocHostContainerVtbl* container) -{ - This->lpDocHostUIHandlerVtbl = &DocHostUIHandler2Vtbl; - This->lpOleCommandTargetVtbl = &OleCommandTargetVtbl; - This->lpIPropertyNotifySinkVtbl = &PropertyNotifySinkVtbl; - - This->disp = disp; - - This->container_vtbl = container; - - This->client_disp = NULL; - - This->document = NULL; - This->hostui = NULL; - This->frame = NULL; - - This->hwnd = NULL; - This->frame_hwnd = NULL; - This->url = NULL; - - This->silent = VARIANT_FALSE; - This->offline = VARIANT_FALSE; - - This->ready_state = READYSTATE_UNINITIALIZED; - This->is_prop_notif = FALSE; - - DocHost_ClientSite_Init(This); - DocHost_Frame_Init(This); - - ConnectionPointContainer_Init(&This->cps, (IUnknown*)disp); -} - -void DocHost_Release(DocHost *This) -{ - release_dochost_client(This); - DocHost_ClientSite_Release(This); - - ConnectionPointContainer_Destroy(&This->cps); - - heap_free(This->url); -} diff --git a/reactos/dll/win32/shdocvw/events.c b/reactos/dll/win32/shdocvw/events.c deleted file mode 100644 index ab79adb7332..00000000000 --- a/reactos/dll/win32/shdocvw/events.c +++ /dev/null @@ -1,316 +0,0 @@ -/* - * Implementation of event-related interfaces for WebBrowser control: - * - * - IConnectionPointContainer - * - IConnectionPoint - * - * Copyright 2001 John R. Sheets (for CodeWeavers) - * Copyright 2006 Jacek Caban for CodeWeavers - * - * 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 -#include -#include "shdocvw.h" - -WINE_DEFAULT_DEBUG_CHANNEL(shdocvw); - -struct ConnectionPoint { - const IConnectionPointVtbl *lpConnectionPointVtbl; - - IConnectionPointContainer *container; - - IDispatch **sinks; - DWORD sinks_size; - - IID iid; -}; - -#define CONPOINT(x) ((IConnectionPoint*) &(x)->lpConnectionPointVtbl) - -/********************************************************************** - * Implement the IConnectionPointContainer interface - */ - -#define CONPTCONT_THIS(iface) DEFINE_THIS(ConnectionPointContainer, ConnectionPointContainer, iface) - -static HRESULT WINAPI ConnectionPointContainer_QueryInterface(IConnectionPointContainer *iface, - REFIID riid, LPVOID *ppv) -{ - ConnectionPointContainer *This = CONPTCONT_THIS(iface); - return IUnknown_QueryInterface(This->impl, riid, ppv); -} - -static ULONG WINAPI ConnectionPointContainer_AddRef(IConnectionPointContainer *iface) -{ - ConnectionPointContainer *This = CONPTCONT_THIS(iface); - return IUnknown_AddRef(This->impl); -} - -static ULONG WINAPI ConnectionPointContainer_Release(IConnectionPointContainer *iface) -{ - ConnectionPointContainer *This = CONPTCONT_THIS(iface); - return IUnknown_Release(This->impl); -} - -static HRESULT WINAPI ConnectionPointContainer_EnumConnectionPoints(IConnectionPointContainer *iface, - LPENUMCONNECTIONPOINTS *ppEnum) -{ - ConnectionPointContainer *This = CONPTCONT_THIS(iface); - FIXME("(%p)->(%p)\n", This, ppEnum); - return E_NOTIMPL; -} - -static HRESULT WINAPI ConnectionPointContainer_FindConnectionPoint(IConnectionPointContainer *iface, - REFIID riid, LPCONNECTIONPOINT *ppCP) -{ - ConnectionPointContainer *This = CONPTCONT_THIS(iface); - - if(!ppCP) { - WARN("ppCP == NULL\n"); - return E_POINTER; - } - - *ppCP = NULL; - - if(IsEqualGUID(&DIID_DWebBrowserEvents2, riid)) { - TRACE("(%p)->(DIID_DWebBrowserEvents2 %p)\n", This, ppCP); - *ppCP = CONPOINT(This->wbe2); - }else if(IsEqualGUID(&DIID_DWebBrowserEvents, riid)) { - TRACE("(%p)->(DIID_DWebBrowserEvents %p)\n", This, ppCP); - *ppCP = CONPOINT(This->wbe); - }else if(IsEqualGUID(&IID_IPropertyNotifySink, riid)) { - TRACE("(%p)->(IID_IPropertyNotifySink %p)\n", This, ppCP); - *ppCP = CONPOINT(This->pns); - } - - if(*ppCP) { - IConnectionPoint_AddRef(*ppCP); - return S_OK; - } - - WARN("Unsupported IID %s\n", debugstr_guid(riid)); - return CONNECT_E_NOCONNECTION; -} - -#undef CONPTCONT_THIS - -static const IConnectionPointContainerVtbl ConnectionPointContainerVtbl = -{ - ConnectionPointContainer_QueryInterface, - ConnectionPointContainer_AddRef, - ConnectionPointContainer_Release, - ConnectionPointContainer_EnumConnectionPoints, - ConnectionPointContainer_FindConnectionPoint -}; - - -/********************************************************************** - * Implement the IConnectionPoint interface - */ - -#define CONPOINT_THIS(iface) DEFINE_THIS(ConnectionPoint, ConnectionPoint, iface) - -static HRESULT WINAPI ConnectionPoint_QueryInterface(IConnectionPoint *iface, - REFIID riid, LPVOID *ppv) -{ - ConnectionPoint *This = CONPOINT_THIS(iface); - - *ppv = NULL; - - if(IsEqualGUID(&IID_IUnknown, riid)) { - TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv); - *ppv = CONPOINT(This); - }else if(IsEqualGUID(&IID_IConnectionPoint, riid)) { - TRACE("(%p)->(IID_IConnectionPoint %p)\n", This, ppv); - *ppv = CONPOINT(This); - } - - if(*ppv) { - IConnectionPointContainer_AddRef(This->container); - return S_OK; - } - - WARN("Unsupported interface %s\n", debugstr_guid(riid)); - return E_NOINTERFACE; -} - -static ULONG WINAPI ConnectionPoint_AddRef(IConnectionPoint *iface) -{ - ConnectionPoint *This = CONPOINT_THIS(iface); - return IConnectionPointContainer_AddRef(This->container); -} - -static ULONG WINAPI ConnectionPoint_Release(IConnectionPoint *iface) -{ - ConnectionPoint *This = CONPOINT_THIS(iface); - return IConnectionPointContainer_Release(This->container); -} - -static HRESULT WINAPI ConnectionPoint_GetConnectionInterface(IConnectionPoint *iface, IID *pIID) -{ - ConnectionPoint *This = CONPOINT_THIS(iface); - - TRACE("(%p)->(%p)\n", This, pIID); - - *pIID = This->iid; - return S_OK; -} - -static HRESULT WINAPI ConnectionPoint_GetConnectionPointContainer(IConnectionPoint *iface, - IConnectionPointContainer **ppCPC) -{ - ConnectionPoint *This = CONPOINT_THIS(iface); - - TRACE("(%p)->(%p)\n", This, ppCPC); - - *ppCPC = This->container; - IConnectionPointContainer_AddRef(This->container); - return S_OK; -} - -static HRESULT WINAPI ConnectionPoint_Advise(IConnectionPoint *iface, IUnknown *pUnkSink, - DWORD *pdwCookie) -{ - ConnectionPoint *This = CONPOINT_THIS(iface); - IDispatch *disp; - DWORD i; - HRESULT hres; - - TRACE("(%p)->(%p %p)\n", This, pUnkSink, pdwCookie); - - hres = IUnknown_QueryInterface(pUnkSink, &This->iid, (void**)&disp); - if(FAILED(hres)) { - hres = IUnknown_QueryInterface(pUnkSink, &IID_IDispatch, (void**)&disp); - if(FAILED(hres)) - return CONNECT_E_CANNOTCONNECT; - } - - if(This->sinks) { - for(i=0; isinks_size; i++) { - if(!This->sinks[i]) - break; - } - - if(i == This->sinks_size) - This->sinks = heap_realloc(This->sinks, - (++This->sinks_size)*sizeof(*This->sinks)); - }else { - This->sinks = heap_alloc(sizeof(*This->sinks)); - This->sinks_size = 1; - i = 0; - } - - This->sinks[i] = disp; - *pdwCookie = i+1; - - return S_OK; -} - -static HRESULT WINAPI ConnectionPoint_Unadvise(IConnectionPoint *iface, DWORD dwCookie) -{ - ConnectionPoint *This = CONPOINT_THIS(iface); - - TRACE("(%p)->(%d)\n", This, dwCookie); - - if(!dwCookie || dwCookie > This->sinks_size || !This->sinks[dwCookie-1]) - return CONNECT_E_NOCONNECTION; - - IDispatch_Release(This->sinks[dwCookie-1]); - This->sinks[dwCookie-1] = NULL; - - return S_OK; -} - -static HRESULT WINAPI ConnectionPoint_EnumConnections(IConnectionPoint *iface, - IEnumConnections **ppEnum) -{ - ConnectionPoint *This = CONPOINT_THIS(iface); - FIXME("(%p)->(%p)\n", This, ppEnum); - return E_NOTIMPL; -} - -#undef CONPOINT_THIS - -static const IConnectionPointVtbl ConnectionPointVtbl = -{ - ConnectionPoint_QueryInterface, - ConnectionPoint_AddRef, - ConnectionPoint_Release, - ConnectionPoint_GetConnectionInterface, - ConnectionPoint_GetConnectionPointContainer, - ConnectionPoint_Advise, - ConnectionPoint_Unadvise, - ConnectionPoint_EnumConnections -}; - -void call_sink(ConnectionPoint *This, DISPID dispid, DISPPARAMS *dispparams) -{ - DWORD i; - - for(i=0; isinks_size; i++) { - if(This->sinks[i]) - IDispatch_Invoke(This->sinks[i], dispid, &IID_NULL, LOCALE_SYSTEM_DEFAULT, - DISPATCH_METHOD, dispparams, NULL, NULL, NULL); - } -} - -static void ConnectionPoint_Create(REFIID riid, ConnectionPoint **cp, - IConnectionPointContainer *container) -{ - ConnectionPoint *ret = heap_alloc(sizeof(ConnectionPoint)); - - ret->lpConnectionPointVtbl = &ConnectionPointVtbl; - - ret->sinks = NULL; - ret->sinks_size = 0; - ret->container = container; - - ret->iid = *riid; - - *cp = ret; -} - -static void ConnectionPoint_Destroy(ConnectionPoint *This) -{ - DWORD i; - - for(i=0; isinks_size; i++) { - if(This->sinks[i]) - IDispatch_Release(This->sinks[i]); - } - - heap_free(This->sinks); - heap_free(This); -} - -void ConnectionPointContainer_Init(ConnectionPointContainer *This, IUnknown *impl) -{ - This->lpConnectionPointContainerVtbl = &ConnectionPointContainerVtbl; - - ConnectionPoint_Create(&DIID_DWebBrowserEvents2, &This->wbe2, CONPTCONT(This)); - ConnectionPoint_Create(&DIID_DWebBrowserEvents, &This->wbe, CONPTCONT(This)); - ConnectionPoint_Create(&IID_IPropertyNotifySink, &This->pns, CONPTCONT(This)); - - This->impl = impl; -} - -void ConnectionPointContainer_Destroy(ConnectionPointContainer *This) -{ - ConnectionPoint_Destroy(This->wbe2); - ConnectionPoint_Destroy(This->wbe); - ConnectionPoint_Destroy(This->pns); -} diff --git a/reactos/dll/win32/shdocvw/factory.c b/reactos/dll/win32/shdocvw/factory.c deleted file mode 100644 index 82b3aaa374b..00000000000 --- a/reactos/dll/win32/shdocvw/factory.c +++ /dev/null @@ -1,339 +0,0 @@ -/* - * Implementation of class factory for IE Web Browser - * - * Copyright 2001 John R. Sheets (for CodeWeavers) - * - * 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 -#include - -#include "shdocvw.h" -//#include "winreg.h" -#include -//#include "isguids.h" - -//#include "winver.h" - -#include - -WINE_DEFAULT_DEBUG_CHANNEL(shdocvw); - -/********************************************************************** - * Implement the WebBrowser class factory - * - * (Based on implementation in ddraw/main.c) - */ - -#define FACTORY(x) ((IClassFactory*) &(x)->lpClassFactoryVtbl) - -typedef struct -{ - /* IUnknown fields */ - const IClassFactoryVtbl *lpClassFactoryVtbl; - HRESULT (*cf)(LPUNKNOWN, REFIID, LPVOID *); - LONG ref; -} IClassFactoryImpl; - - -/********************************************************************** - * WBCF_QueryInterface (IUnknown) - */ -static HRESULT WINAPI WBCF_QueryInterface(LPCLASSFACTORY iface, - REFIID riid, LPVOID *ppobj) -{ - TRACE("(%s %p)\n", debugstr_guid(riid), ppobj); - - if (!ppobj) - return E_POINTER; - - if(IsEqualGUID(&IID_IUnknown, riid) || IsEqualGUID(&IID_IClassFactory, riid)) { - *ppobj = iface; - IClassFactory_AddRef(iface); - return S_OK; - } - - WARN("Not supported interface %s\n", debugstr_guid(riid)); - - *ppobj = NULL; - return E_NOINTERFACE; -} - -/************************************************************************ - * WBCF_AddRef (IUnknown) - */ -static ULONG WINAPI WBCF_AddRef(LPCLASSFACTORY iface) -{ - SHDOCVW_LockModule(); - - return 2; /* non-heap based object */ -} - -/************************************************************************ - * WBCF_Release (IUnknown) - */ -static ULONG WINAPI WBCF_Release(LPCLASSFACTORY iface) -{ - SHDOCVW_UnlockModule(); - - return 1; /* non-heap based object */ -} - -/************************************************************************ - * WBCF_CreateInstance (IClassFactory) - */ -static HRESULT WINAPI WBCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pOuter, - REFIID riid, LPVOID *ppobj) -{ - IClassFactoryImpl *This = (IClassFactoryImpl *) iface; - return This->cf(pOuter, riid, ppobj); -} - -/************************************************************************ - * WBCF_LockServer (IClassFactory) - */ -static HRESULT WINAPI WBCF_LockServer(LPCLASSFACTORY iface, BOOL dolock) -{ - TRACE("(%d)\n", dolock); - - if (dolock) - SHDOCVW_LockModule(); - else - SHDOCVW_UnlockModule(); - - return S_OK; -} - -static const IClassFactoryVtbl WBCF_Vtbl = -{ - WBCF_QueryInterface, - WBCF_AddRef, - WBCF_Release, - WBCF_CreateInstance, - WBCF_LockServer -}; - -/************************************************************************* - * DllGetClassObject (SHDOCVW.@) - */ -HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, void **ppv) -{ - static IClassFactoryImpl WB1ClassFactory = {&WBCF_Vtbl, WebBrowserV1_Create}; - static IClassFactoryImpl WB2ClassFactory = {&WBCF_Vtbl, WebBrowserV2_Create}; - static IClassFactoryImpl CUHClassFactory = {&WBCF_Vtbl, CUrlHistory_Create}; - static IClassFactoryImpl ISCClassFactory = {&WBCF_Vtbl, InternetShortcut_Create}; - static IClassFactoryImpl TBLClassFactory = {&WBCF_Vtbl, TaskbarList_Create}; - - TRACE("\n"); - - if(IsEqualGUID(&CLSID_WebBrowser, rclsid)) - return IClassFactory_QueryInterface(FACTORY(&WB2ClassFactory), riid, ppv); - - if(IsEqualGUID(&CLSID_WebBrowser_V1, rclsid)) - return IClassFactory_QueryInterface(FACTORY(&WB1ClassFactory), riid, ppv); - - if(IsEqualGUID(&CLSID_CUrlHistory, rclsid)) - return IClassFactory_QueryInterface(FACTORY(&CUHClassFactory), riid, ppv); - - if(IsEqualGUID(&CLSID_InternetShortcut, rclsid)) - return IClassFactory_QueryInterface(FACTORY(&ISCClassFactory), riid, ppv); - - if(IsEqualGUID(&CLSID_TaskbarList, rclsid)) - return IClassFactory_QueryInterface(FACTORY(&TBLClassFactory), riid, ppv); - - /* As a last resort, figure if the CLSID belongs to a 'Shell Instance Object' */ - return SHDOCVW_GetShellInstanceObjectClassObject(rclsid, riid, ppv); -} - -HRESULT register_class_object(BOOL do_reg) -{ - HRESULT hres; - - static DWORD cookie; - static IClassFactoryImpl IEClassFactory = {&WBCF_Vtbl, InternetExplorer_Create}; - - if(do_reg) { - hres = CoRegisterClassObject(&CLSID_InternetExplorer, (IUnknown*)FACTORY(&IEClassFactory), - CLSCTX_SERVER, REGCLS_MULTIPLEUSE|REGCLS_SUSPENDED, &cookie); - if (FAILED(hres)) { - ERR("failed to register object %08x\n", hres); - return hres; - } - - hres = CoResumeClassObjects(); - if(SUCCEEDED(hres)) - return hres; - - ERR("failed to resume object %08x\n", hres); - } - - return CoRevokeClassObject(cookie); -} - -static HRESULT reg_install(LPCSTR section, STRTABLEA *strtable) -{ - HRESULT (WINAPI *pRegInstall)(HMODULE hm, LPCSTR pszSection, const STRTABLEA* pstTable); - HMODULE hadvpack; - HRESULT hres; - - static const WCHAR advpackW[] = {'a','d','v','p','a','c','k','.','d','l','l',0}; - - hadvpack = LoadLibraryW(advpackW); - pRegInstall = (void *)GetProcAddress(hadvpack, "RegInstall"); - - hres = pRegInstall(shdocvw_hinstance, section, strtable); - - FreeLibrary(hadvpack); - return hres; -} - -static const GUID CLSID_MicrosoftBrowserArchitecture = - {0xa5e46e3a, 0x8849, 0x11d1, {0x9d, 0x8c, 0x00, 0xc0, 0x4f, 0xc9, 0x9d, 0x61}}; -static const GUID CLSID_MruLongList = - {0x53bd6b4e, 0x3780, 0x4693, {0xaf, 0xc3, 0x71, 0x61, 0xc2, 0xf3, 0xee, 0x9c}}; - -#define INF_SET_CLSID(clsid) \ - do \ - { \ - static CHAR name[] = "CLSID_" #clsid; \ - \ - pse[i].pszName = name; \ - clsids[i++] = &CLSID_ ## clsid; \ - } while (0) - -static HRESULT register_server(BOOL doregister) -{ - STRTABLEA strtable; - STRENTRYA pse[15]; - static CLSID const *clsids[15]; - unsigned int i = 0; - HRESULT hres; - - INF_SET_CLSID(CUrlHistory); - INF_SET_CLSID(Internet); - INF_SET_CLSID(InternetExplorer); - INF_SET_CLSID(InternetShortcut); - INF_SET_CLSID(MicrosoftBrowserArchitecture); - INF_SET_CLSID(MruLongList); - INF_SET_CLSID(SearchAssistantOC); - INF_SET_CLSID(ShellNameSpace); - INF_SET_CLSID(ShellSearchAssistantOC); - INF_SET_CLSID(ShellShellNameSpace); - INF_SET_CLSID(ShellUIHelper); - INF_SET_CLSID(ShellWindows); - INF_SET_CLSID(TaskbarList); - INF_SET_CLSID(WebBrowser); - INF_SET_CLSID(WebBrowser_V1); - - for(i = 0; i < sizeof(pse)/sizeof(pse[0]); i++) { - pse[i].pszValue = HeapAlloc(GetProcessHeap(), 0, 39); - sprintf(pse[i].pszValue, "{%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X}", - clsids[i]->Data1, clsids[i]->Data2, clsids[i]->Data3, clsids[i]->Data4[0], - clsids[i]->Data4[1], clsids[i]->Data4[2], clsids[i]->Data4[3], clsids[i]->Data4[4], - clsids[i]->Data4[5], clsids[i]->Data4[6], clsids[i]->Data4[7]); - } - - strtable.cEntries = sizeof(pse)/sizeof(pse[0]); - strtable.pse = pse; - - hres = reg_install(doregister ? "RegisterDll" : "UnregisterDll", &strtable); - - for(i=0; i < sizeof(pse)/sizeof(pse[0]); i++) - HeapFree(GetProcessHeap(), 0, pse[i].pszValue); - - return hres; -} - -#undef INF_SET_CLSID - -/*********************************************************************** - * DllRegisterServer (shdocvw.@) - */ -HRESULT WINAPI DllRegisterServer(void) -{ - ITypeLib *typelib; - HRESULT hres; - - static const WCHAR shdocvwW[] = {'s','h','d','o','c','v','w','.','d','l','l',0}; - - hres = register_server(TRUE); - if(FAILED(hres)) - return hres; - - hres = LoadTypeLibEx(shdocvwW, REGKIND_REGISTER, &typelib); - if(FAILED(hres)) { - ERR("Could not load typelib: %08x\n", hres); - return hres; - } - - ITypeLib_Release(typelib); - - return hres; -} - -/*********************************************************************** - * DllUnregisterServer (shdocvw.@) - */ -HRESULT WINAPI DllUnregisterServer(void) -{ - HRESULT hres; - - hres = register_server(FALSE); - if(FAILED(hres)) - return hres; - - return UnRegisterTypeLib(&LIBID_SHDocVw, 1, 1, LOCALE_SYSTEM_DEFAULT, SYS_WIN32); -} - -static BOOL check_native_ie(void) -{ - static const WCHAR cszPath[] = {'b','r','o','w','s','e','u','i','.','d','l','l',0}; - DWORD handle,size; - BOOL ret = TRUE; - - size = GetFileVersionInfoSizeW(cszPath,&handle); - if (size) - { - LPVOID buf; - LPWSTR lpFileDescription; - UINT dwBytes; - static const WCHAR cszFD[] = {'\\','S','t','r','i','n','g','F','i','l','e','I','n','f','o','\\','0','4','0','9','0','4','e','4','\\','F','i','l','e','D','e','s','c','r','i','p','t','i','o','n',0}; - static const WCHAR cszWine[] = {'W','i','n','e',0}; - - buf = HeapAlloc(GetProcessHeap(),0,size); - GetFileVersionInfoW(cszPath,0,size,buf); - - if (VerQueryValueW(buf, cszFD, (LPVOID*)&lpFileDescription, &dwBytes) && - strstrW(lpFileDescription,cszWine)) - ret = FALSE; - - HeapFree(GetProcessHeap(), 0, buf); - } - - return ret; -} - -DWORD register_iexplore(BOOL doregister) -{ - HRESULT hres; - if (check_native_ie()) - { - TRACE("Native IE detected, not doing registration\n"); - return S_OK; - } - hres = reg_install(doregister ? "RegisterIE" : "UnregisterIE", NULL); - return FAILED(hres); -} diff --git a/reactos/dll/win32/shdocvw/frame.c b/reactos/dll/win32/shdocvw/frame.c deleted file mode 100644 index ba8d68542a9..00000000000 --- a/reactos/dll/win32/shdocvw/frame.c +++ /dev/null @@ -1,183 +0,0 @@ -/* - * Copyright 2005 Jacek Caban for CodeWeavers - * - * 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 -#include "shdocvw.h" - -WINE_DEFAULT_DEBUG_CHANNEL(shdocvw); - -#define INPLACEFRAME_THIS(iface) DEFINE_THIS(DocHost, OleInPlaceFrame, iface) - -static HRESULT WINAPI InPlaceFrame_QueryInterface(IOleInPlaceFrame *iface, - REFIID riid, void **ppv) -{ - DocHost *This = INPLACEFRAME_THIS(iface); - - *ppv = NULL; - - 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); - }else if(IsEqualGUID(&IID_IOleInPlaceFrame, riid)) { - TRACE("(%p)->(IID_IOleInPlaceFrame %p)\n", This, ppv); - *ppv = INPLACEFRAME(This); - } - - if(*ppv) { - IOleInPlaceFrame_AddRef(INPLACEFRAME(This)); - return S_OK; - } - - WARN("Unsopported interface %s\n", debugstr_guid(riid)); - return E_NOINTERFACE; -} - -static ULONG WINAPI InPlaceFrame_AddRef(IOleInPlaceFrame *iface) -{ - DocHost *This = INPLACEFRAME_THIS(iface); - return IOleClientSite_AddRef(CLIENTSITE(This)); -} - -static ULONG WINAPI InPlaceFrame_Release(IOleInPlaceFrame *iface) -{ - DocHost *This = INPLACEFRAME_THIS(iface); - return IOleClientSite_Release(CLIENTSITE(This)); -} - -static HRESULT WINAPI InPlaceFrame_GetWindow(IOleInPlaceFrame *iface, HWND *phwnd) -{ - DocHost *This = INPLACEFRAME_THIS(iface); - FIXME("(%p)->(%p)\n", This, phwnd); - return E_NOTIMPL; -} - -static HRESULT WINAPI InPlaceFrame_ContextSensitiveHelp(IOleInPlaceFrame *iface, - BOOL fEnterMode) -{ - DocHost *This = INPLACEFRAME_THIS(iface); - FIXME("(%p)->(%x)\n", This, fEnterMode); - return E_NOTIMPL; -} - -static HRESULT WINAPI InPlaceFrame_GetBorder(IOleInPlaceFrame *iface, LPRECT lprectBorder) -{ - DocHost *This = INPLACEFRAME_THIS(iface); - FIXME("(%p)->(%p)\n", This, lprectBorder); - return E_NOTIMPL; -} - -static HRESULT WINAPI InPlaceFrame_RequestBorderSpace(IOleInPlaceFrame *iface, - LPCBORDERWIDTHS pborderwidths) -{ - DocHost *This = INPLACEFRAME_THIS(iface); - FIXME("(%p)->(%p)\n", This, pborderwidths); - return E_NOTIMPL; -} - -static HRESULT WINAPI InPlaceFrame_SetBorderSpace(IOleInPlaceFrame *iface, - LPCBORDERWIDTHS pborderwidths) -{ - DocHost *This = INPLACEFRAME_THIS(iface); - FIXME("(%p)->(%p)\n", This, pborderwidths); - return E_NOTIMPL; -} - -static HRESULT WINAPI InPlaceFrame_SetActiveObject(IOleInPlaceFrame *iface, - IOleInPlaceActiveObject *pActiveObject, LPCOLESTR pszObjName) -{ - DocHost *This = INPLACEFRAME_THIS(iface); - FIXME("(%p)->(%p %s)\n", This, pActiveObject, debugstr_w(pszObjName)); - return E_NOTIMPL; -} - -static HRESULT WINAPI InPlaceFrame_InsertMenus(IOleInPlaceFrame *iface, HMENU hmenuShared, - LPOLEMENUGROUPWIDTHS lpMenuWidths) -{ - DocHost *This = INPLACEFRAME_THIS(iface); - FIXME("(%p)->(%p %p)\n", This, hmenuShared, lpMenuWidths); - return E_NOTIMPL; -} - -static HRESULT WINAPI InPlaceFrame_SetMenu(IOleInPlaceFrame *iface, HMENU hmenuShared, - HOLEMENU holemenu, HWND hwndActiveObject) -{ - DocHost *This = INPLACEFRAME_THIS(iface); - FIXME("(%p)->(%p %p %p)\n", This, hmenuShared, holemenu, hwndActiveObject); - return E_NOTIMPL; -} - -static HRESULT WINAPI InPlaceFrame_RemoveMenus(IOleInPlaceFrame *iface, HMENU hmenuShared) -{ - DocHost *This = INPLACEFRAME_THIS(iface); - FIXME("(%p)->(%p)\n", This, hmenuShared); - return E_NOTIMPL; -} - -static HRESULT WINAPI InPlaceFrame_SetStatusText(IOleInPlaceFrame *iface, - LPCOLESTR pszStatusText) -{ - DocHost *This = INPLACEFRAME_THIS(iface); - TRACE("(%p)->(%s)\n", This, debugstr_w(pszStatusText)); - return This->container_vtbl->SetStatusText(This, pszStatusText); -} - -static HRESULT WINAPI InPlaceFrame_EnableModeless(IOleInPlaceFrame *iface, BOOL fEnable) -{ - DocHost *This = INPLACEFRAME_THIS(iface); - FIXME("(%p)->(%x)\n", This, fEnable); - return E_NOTIMPL; -} - -static HRESULT WINAPI InPlaceFrame_TranslateAccelerator(IOleInPlaceFrame *iface, LPMSG lpmsg, - WORD wID) -{ - DocHost *This = INPLACEFRAME_THIS(iface); - FIXME("(%p)->(%p %d)\n", This, lpmsg, wID); - return E_NOTIMPL; -} - -#undef INPLACEFRAME_THIS - -static const IOleInPlaceFrameVtbl OleInPlaceFrameVtbl = { - InPlaceFrame_QueryInterface, - InPlaceFrame_AddRef, - InPlaceFrame_Release, - InPlaceFrame_GetWindow, - InPlaceFrame_ContextSensitiveHelp, - InPlaceFrame_GetBorder, - InPlaceFrame_RequestBorderSpace, - InPlaceFrame_SetBorderSpace, - InPlaceFrame_SetActiveObject, - InPlaceFrame_InsertMenus, - InPlaceFrame_SetMenu, - InPlaceFrame_RemoveMenus, - InPlaceFrame_SetStatusText, - InPlaceFrame_EnableModeless, - InPlaceFrame_TranslateAccelerator -}; - -void DocHost_Frame_Init(DocHost *This) -{ - This->lpOleInPlaceFrameVtbl = &OleInPlaceFrameVtbl; -} diff --git a/reactos/dll/win32/shdocvw/ie.c b/reactos/dll/win32/shdocvw/ie.c deleted file mode 100644 index 18894c690d4..00000000000 --- a/reactos/dll/win32/shdocvw/ie.c +++ /dev/null @@ -1,686 +0,0 @@ -/* - * Copyright 2006 Jacek Caban for CodeWeavers - * - * 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 -#include "shdocvw.h" - -WINE_DEFAULT_DEBUG_CHANNEL(shdocvw); - -#define WEBBROWSER_THIS(iface) DEFINE_THIS(InternetExplorer, WebBrowser2, iface) - -static HRESULT WINAPI InternetExplorer_QueryInterface(IWebBrowser2 *iface, REFIID riid, LPVOID *ppv) -{ - InternetExplorer *This = WEBBROWSER_THIS(iface); - - *ppv = NULL; - - if(IsEqualGUID(&IID_IUnknown, riid)) { - TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv); - *ppv = WEBBROWSER(This); - }else if(IsEqualGUID(&IID_IDispatch, riid)) { - TRACE("(%p)->(IID_IDispatch %p)\n", This, ppv); - *ppv = WEBBROWSER(This); - }else if(IsEqualGUID(&IID_IWebBrowser, riid)) { - TRACE("(%p)->(IID_IWebBrowser %p)\n", This, ppv); - *ppv = WEBBROWSER(This); - }else if(IsEqualGUID(&IID_IWebBrowserApp, riid)) { - TRACE("(%p)->(IID_IWebBrowserApp %p)\n", This, ppv); - *ppv = WEBBROWSER(This); - }else if(IsEqualGUID(&IID_IWebBrowser2, riid)) { - TRACE("(%p)->(IID_IWebBrowser2 %p)\n", This, ppv); - *ppv = WEBBROWSER(This); - }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) { - IUnknown_AddRef((IUnknown*)*ppv); - return S_OK; - } - - WARN("(%p)->(%s %p) interface not supported\n", This, debugstr_guid(riid), ppv); - return E_NOINTERFACE; -} - -static ULONG WINAPI InternetExplorer_AddRef(IWebBrowser2 *iface) -{ - InternetExplorer *This = WEBBROWSER_THIS(iface); - LONG ref = InterlockedIncrement(&This->ref); - TRACE("(%p) ref=%d\n", This, ref); - return ref; -} - -static ULONG WINAPI InternetExplorer_Release(IWebBrowser2 *iface) -{ - InternetExplorer *This = WEBBROWSER_THIS(iface); - LONG ref = InterlockedDecrement(&This->ref); - - TRACE("(%p) ref=%d\n", This, ref); - - if(!ref) { - DocHost_Release(&This->doc_host); - heap_free(This); - } - - return ref; -} - -static HRESULT WINAPI InternetExplorer_GetTypeInfoCount(IWebBrowser2 *iface, UINT *pctinfo) -{ - InternetExplorer *This = WEBBROWSER_THIS(iface); - FIXME("(%p)->(%p)\n", This, pctinfo); - return E_NOTIMPL; -} - -static HRESULT WINAPI InternetExplorer_GetTypeInfo(IWebBrowser2 *iface, UINT iTInfo, LCID lcid, - LPTYPEINFO *ppTInfo) -{ - InternetExplorer *This = WEBBROWSER_THIS(iface); - FIXME("(%p)->(%d %d %p)\n", This, iTInfo, lcid, ppTInfo); - return E_NOTIMPL; -} - -static HRESULT WINAPI InternetExplorer_GetIDsOfNames(IWebBrowser2 *iface, REFIID riid, - LPOLESTR *rgszNames, UINT cNames, - LCID lcid, DISPID *rgDispId) -{ - InternetExplorer *This = WEBBROWSER_THIS(iface); - FIXME("(%p)->(%s %p %d %d %p)\n", This, debugstr_guid(riid), rgszNames, cNames, - lcid, rgDispId); - return E_NOTIMPL; -} - -static HRESULT WINAPI InternetExplorer_Invoke(IWebBrowser2 *iface, DISPID dispIdMember, - REFIID riid, LCID lcid, WORD wFlags, - DISPPARAMS *pDispParams, VARIANT *pVarResult, - EXCEPINFO *pExepInfo, UINT *puArgErr) -{ - InternetExplorer *This = WEBBROWSER_THIS(iface); - FIXME("(%p)->(%d %s %d %08x %p %p %p %p)\n", This, dispIdMember, debugstr_guid(riid), - lcid, wFlags, pDispParams, pVarResult, pExepInfo, puArgErr); - return E_NOTIMPL; -} - -static HRESULT WINAPI InternetExplorer_GoBack(IWebBrowser2 *iface) -{ - InternetExplorer *This = WEBBROWSER_THIS(iface); - FIXME("(%p)\n", This); - return E_NOTIMPL; -} - -static HRESULT WINAPI InternetExplorer_GoForward(IWebBrowser2 *iface) -{ - InternetExplorer *This = WEBBROWSER_THIS(iface); - FIXME("(%p)\n", This); - return E_NOTIMPL; -} - -static HRESULT WINAPI InternetExplorer_GoHome(IWebBrowser2 *iface) -{ - InternetExplorer *This = WEBBROWSER_THIS(iface); - TRACE("(%p)\n", This); - return go_home(&This->doc_host); -} - -static HRESULT WINAPI InternetExplorer_GoSearch(IWebBrowser2 *iface) -{ - InternetExplorer *This = WEBBROWSER_THIS(iface); - FIXME("(%p)\n", This); - return E_NOTIMPL; -} - -static HRESULT WINAPI InternetExplorer_Navigate(IWebBrowser2 *iface, BSTR szUrl, - VARIANT *Flags, VARIANT *TargetFrameName, - VARIANT *PostData, VARIANT *Headers) -{ - InternetExplorer *This = WEBBROWSER_THIS(iface); - - TRACE("(%p)->(%s %p %p %p %p)\n", This, debugstr_w(szUrl), Flags, TargetFrameName, - PostData, Headers); - - return navigate_url(&This->doc_host, szUrl, Flags, TargetFrameName, PostData, Headers); -} - -static HRESULT WINAPI InternetExplorer_Refresh(IWebBrowser2 *iface) -{ - InternetExplorer *This = WEBBROWSER_THIS(iface); - FIXME("(%p)\n", This); - return E_NOTIMPL; -} - -static HRESULT WINAPI InternetExplorer_Refresh2(IWebBrowser2 *iface, VARIANT *Level) -{ - InternetExplorer *This = WEBBROWSER_THIS(iface); - FIXME("(%p)->(%p)\n", This, Level); - return E_NOTIMPL; -} - -static HRESULT WINAPI InternetExplorer_Stop(IWebBrowser2 *iface) -{ - InternetExplorer *This = WEBBROWSER_THIS(iface); - FIXME("(%p)\n", This); - return E_NOTIMPL; -} - -static HRESULT WINAPI InternetExplorer_get_Application(IWebBrowser2 *iface, IDispatch **ppDisp) -{ - InternetExplorer *This = WEBBROWSER_THIS(iface); - FIXME("(%p)->(%p)\n", This, ppDisp); - return E_NOTIMPL; -} - -static HRESULT WINAPI InternetExplorer_get_Parent(IWebBrowser2 *iface, IDispatch **ppDisp) -{ - InternetExplorer *This = WEBBROWSER_THIS(iface); - FIXME("(%p)->(%p)\n", This, ppDisp); - return E_NOTIMPL; -} - -static HRESULT WINAPI InternetExplorer_get_Container(IWebBrowser2 *iface, IDispatch **ppDisp) -{ - InternetExplorer *This = WEBBROWSER_THIS(iface); - FIXME("(%p)->(%p)\n", This, ppDisp); - return E_NOTIMPL; -} - -static HRESULT WINAPI InternetExplorer_get_Document(IWebBrowser2 *iface, IDispatch **ppDisp) -{ - InternetExplorer *This = WEBBROWSER_THIS(iface); - FIXME("(%p)->(%p)\n", This, ppDisp); - return E_NOTIMPL; -} - -static HRESULT WINAPI InternetExplorer_get_TopLevelContainer(IWebBrowser2 *iface, VARIANT_BOOL *pBool) -{ - InternetExplorer *This = WEBBROWSER_THIS(iface); - FIXME("(%p)->(%p)\n", This, pBool); - return E_NOTIMPL; -} - -static HRESULT WINAPI InternetExplorer_get_Type(IWebBrowser2 *iface, BSTR *Type) -{ - InternetExplorer *This = WEBBROWSER_THIS(iface); - FIXME("(%p)->(%p)\n", This, Type); - return E_NOTIMPL; -} - -static HRESULT WINAPI InternetExplorer_get_Left(IWebBrowser2 *iface, LONG *pl) -{ - InternetExplorer *This = WEBBROWSER_THIS(iface); - FIXME("(%p)->(%p)\n", This, pl); - return E_NOTIMPL; -} - -static HRESULT WINAPI InternetExplorer_put_Left(IWebBrowser2 *iface, LONG Left) -{ - InternetExplorer *This = WEBBROWSER_THIS(iface); - FIXME("(%p)->(%d)\n", This, Left); - return E_NOTIMPL; -} - -static HRESULT WINAPI InternetExplorer_get_Top(IWebBrowser2 *iface, LONG *pl) -{ - InternetExplorer *This = WEBBROWSER_THIS(iface); - FIXME("(%p)->(%p)\n", This, pl); - return E_NOTIMPL; -} - -static HRESULT WINAPI InternetExplorer_put_Top(IWebBrowser2 *iface, LONG Top) -{ - InternetExplorer *This = WEBBROWSER_THIS(iface); - FIXME("(%p)->(%d)\n", This, Top); - return E_NOTIMPL; -} - -static HRESULT WINAPI InternetExplorer_get_Width(IWebBrowser2 *iface, LONG *pl) -{ - InternetExplorer *This = WEBBROWSER_THIS(iface); - FIXME("(%p)->(%p)\n", This, pl); - return E_NOTIMPL; -} - -static HRESULT WINAPI InternetExplorer_put_Width(IWebBrowser2 *iface, LONG Width) -{ - InternetExplorer *This = WEBBROWSER_THIS(iface); - FIXME("(%p)->(%d)\n", This, Width); - return E_NOTIMPL; -} - -static HRESULT WINAPI InternetExplorer_get_Height(IWebBrowser2 *iface, LONG *pl) -{ - InternetExplorer *This = WEBBROWSER_THIS(iface); - FIXME("(%p)->(%p)\n", This, pl); - return E_NOTIMPL; -} - -static HRESULT WINAPI InternetExplorer_put_Height(IWebBrowser2 *iface, LONG Height) -{ - InternetExplorer *This = WEBBROWSER_THIS(iface); - FIXME("(%p)->(%d)\n", This, Height); - return E_NOTIMPL; -} - -static HRESULT WINAPI InternetExplorer_get_LocationName(IWebBrowser2 *iface, BSTR *LocationName) -{ - InternetExplorer *This = WEBBROWSER_THIS(iface); - FIXME("(%p)->(%p)\n", This, LocationName); - return E_NOTIMPL; -} - -static HRESULT WINAPI InternetExplorer_get_LocationURL(IWebBrowser2 *iface, BSTR *LocationURL) -{ - InternetExplorer *This = WEBBROWSER_THIS(iface); - FIXME("(%p)->(%p)\n", This, LocationURL); - return E_NOTIMPL; -} - -static HRESULT WINAPI InternetExplorer_get_Busy(IWebBrowser2 *iface, VARIANT_BOOL *pBool) -{ - InternetExplorer *This = WEBBROWSER_THIS(iface); - FIXME("(%p)->(%p)\n", This, pBool); - return E_NOTIMPL; -} - -static HRESULT WINAPI InternetExplorer_Quit(IWebBrowser2 *iface) -{ - InternetExplorer *This = WEBBROWSER_THIS(iface); - FIXME("(%p)\n", This); - return E_NOTIMPL; -} - -static HRESULT WINAPI InternetExplorer_ClientToWindow(IWebBrowser2 *iface, int *pcx, int *pcy) -{ - InternetExplorer *This = WEBBROWSER_THIS(iface); - FIXME("(%p)->(%p %p)\n", This, pcx, pcy); - return E_NOTIMPL; -} - -static HRESULT WINAPI InternetExplorer_PutProperty(IWebBrowser2 *iface, BSTR szProperty, VARIANT vtValue) -{ - InternetExplorer *This = WEBBROWSER_THIS(iface); - FIXME("(%p)->(%s)\n", This, debugstr_w(szProperty)); - return E_NOTIMPL; -} - -static HRESULT WINAPI InternetExplorer_GetProperty(IWebBrowser2 *iface, BSTR szProperty, VARIANT *pvtValue) -{ - InternetExplorer *This = WEBBROWSER_THIS(iface); - FIXME("(%p)->(%s %p)\n", This, debugstr_w(szProperty), pvtValue); - return E_NOTIMPL; -} - -static HRESULT WINAPI InternetExplorer_get_Name(IWebBrowser2 *iface, BSTR *Name) -{ - InternetExplorer *This = WEBBROWSER_THIS(iface); - FIXME("(%p)->(%p)\n", This, Name); - return E_NOTIMPL; -} - -static HRESULT WINAPI InternetExplorer_get_HWND(IWebBrowser2 *iface, LONG *pHWND) -{ - InternetExplorer *This = WEBBROWSER_THIS(iface); - FIXME("(%p)->(%p)\n", This, pHWND); - return E_NOTIMPL; -} - -static HRESULT WINAPI InternetExplorer_get_FullName(IWebBrowser2 *iface, BSTR *FullName) -{ - InternetExplorer *This = WEBBROWSER_THIS(iface); - FIXME("(%p)->(%p)\n", This, FullName); - return E_NOTIMPL; -} - -static HRESULT WINAPI InternetExplorer_get_Path(IWebBrowser2 *iface, BSTR *Path) -{ - InternetExplorer *This = WEBBROWSER_THIS(iface); - FIXME("(%p)->(%p)\n", This, Path); - return E_NOTIMPL; -} - -static HRESULT WINAPI InternetExplorer_get_Visible(IWebBrowser2 *iface, VARIANT_BOOL *pBool) -{ - InternetExplorer *This = WEBBROWSER_THIS(iface); - FIXME("(%p)->(%p)\n", This, pBool); - return E_NOTIMPL; -} - -static HRESULT WINAPI InternetExplorer_put_Visible(IWebBrowser2 *iface, VARIANT_BOOL Value) -{ - InternetExplorer *This = WEBBROWSER_THIS(iface); - TRACE("(%p)->(%x)\n", This, Value); - - ShowWindow(This->frame_hwnd, Value ? SW_SHOW : SW_HIDE); - - return S_OK; -} - -static HRESULT WINAPI InternetExplorer_get_StatusBar(IWebBrowser2 *iface, VARIANT_BOOL *pBool) -{ - InternetExplorer *This = WEBBROWSER_THIS(iface); - FIXME("(%p)->(%p)\n", This, pBool); - return E_NOTIMPL; -} - -static HRESULT WINAPI InternetExplorer_put_StatusBar(IWebBrowser2 *iface, VARIANT_BOOL Value) -{ - InternetExplorer *This = WEBBROWSER_THIS(iface); - FIXME("(%p)->(%x)\n", This, Value); - return E_NOTIMPL; -} - -static HRESULT WINAPI InternetExplorer_get_StatusText(IWebBrowser2 *iface, BSTR *StatusText) -{ - InternetExplorer *This = WEBBROWSER_THIS(iface); - FIXME("(%p)->(%p)\n", This, StatusText); - return E_NOTIMPL; -} - -static HRESULT WINAPI InternetExplorer_put_StatusText(IWebBrowser2 *iface, BSTR StatusText) -{ - InternetExplorer *This = WEBBROWSER_THIS(iface); - - TRACE("(%p)->(%s)\n", This, debugstr_w(StatusText)); - - return update_ie_statustext(This, StatusText); -} - -static HRESULT WINAPI InternetExplorer_get_ToolBar(IWebBrowser2 *iface, int *Value) -{ - InternetExplorer *This = WEBBROWSER_THIS(iface); - FIXME("(%p)->(%p)\n", This, Value); - return E_NOTIMPL; -} - -static HRESULT WINAPI InternetExplorer_put_ToolBar(IWebBrowser2 *iface, int Value) -{ - InternetExplorer *This = WEBBROWSER_THIS(iface); - FIXME("(%p)->(%d)\n", This, Value); - return E_NOTIMPL; -} - -static HRESULT WINAPI InternetExplorer_get_MenuBar(IWebBrowser2 *iface, VARIANT_BOOL *Value) -{ - InternetExplorer *This = WEBBROWSER_THIS(iface); - FIXME("(%p)->(%p)\n", This, Value); - return E_NOTIMPL; -} - -static HRESULT WINAPI InternetExplorer_put_MenuBar(IWebBrowser2 *iface, VARIANT_BOOL Value) -{ - InternetExplorer *This = WEBBROWSER_THIS(iface); - HMENU menu = NULL; - - TRACE("(%p)->(%x)\n", This, Value); - - if(Value) - menu = This->menu; - - if(!SetMenu(This->frame_hwnd, menu)) - return HRESULT_FROM_WIN32(GetLastError()); - - return S_OK; -} - -static HRESULT WINAPI InternetExplorer_get_FullScreen(IWebBrowser2 *iface, VARIANT_BOOL *pbFullScreen) -{ - InternetExplorer *This = WEBBROWSER_THIS(iface); - FIXME("(%p)->(%p)\n", This, pbFullScreen); - return E_NOTIMPL; -} - -static HRESULT WINAPI InternetExplorer_put_FullScreen(IWebBrowser2 *iface, VARIANT_BOOL bFullScreen) -{ - InternetExplorer *This = WEBBROWSER_THIS(iface); - FIXME("(%p)->(%x)\n", This, bFullScreen); - return E_NOTIMPL; -} - -static HRESULT WINAPI InternetExplorer_Navigate2(IWebBrowser2 *iface, VARIANT *URL, VARIANT *Flags, - VARIANT *TargetFrameName, VARIANT *PostData, VARIANT *Headers) -{ - InternetExplorer *This = WEBBROWSER_THIS(iface); - - TRACE("(%p)->(%p %p %p %p %p)\n", This, URL, Flags, TargetFrameName, PostData, Headers); - - if(!URL) - return S_OK; - - if(V_VT(URL) != VT_BSTR) { - FIXME("Unsupported V_VT(URL) %d\n", V_VT(URL)); - return E_INVALIDARG; - } - - return navigate_url(&This->doc_host, V_BSTR(URL), Flags, TargetFrameName, PostData, Headers); -} - -static HRESULT WINAPI InternetExplorer_QueryStatusWB(IWebBrowser2 *iface, OLECMDID cmdID, OLECMDF *pcmdf) -{ - InternetExplorer *This = WEBBROWSER_THIS(iface); - FIXME("(%p)->(%d %p)\n", This, cmdID, pcmdf); - return E_NOTIMPL; -} - -static HRESULT WINAPI InternetExplorer_ExecWB(IWebBrowser2 *iface, OLECMDID cmdID, - OLECMDEXECOPT cmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut) -{ - InternetExplorer *This = WEBBROWSER_THIS(iface); - FIXME("(%p)->(%d %d %p %p)\n", This, cmdID, cmdexecopt, pvaIn, pvaOut); - return E_NOTIMPL; -} - -static HRESULT WINAPI InternetExplorer_ShowBrowserBar(IWebBrowser2 *iface, VARIANT *pvaClsid, - VARIANT *pvarShow, VARIANT *pvarSize) -{ - InternetExplorer *This = WEBBROWSER_THIS(iface); - FIXME("(%p)->(%p %p %p)\n", This, pvaClsid, pvarShow, pvarSize); - return E_NOTIMPL; -} - -static HRESULT WINAPI InternetExplorer_get_ReadyState(IWebBrowser2 *iface, READYSTATE *lpReadyState) -{ - InternetExplorer *This = WEBBROWSER_THIS(iface); - FIXME("(%p)->(%p)\n", This, lpReadyState); - return E_NOTIMPL; -} - -static HRESULT WINAPI InternetExplorer_get_Offline(IWebBrowser2 *iface, VARIANT_BOOL *pbOffline) -{ - InternetExplorer *This = WEBBROWSER_THIS(iface); - FIXME("(%p)->(%p)\n", This, pbOffline); - return E_NOTIMPL; -} - -static HRESULT WINAPI InternetExplorer_put_Offline(IWebBrowser2 *iface, VARIANT_BOOL bOffline) -{ - InternetExplorer *This = WEBBROWSER_THIS(iface); - FIXME("(%p)->(%x)\n", This, bOffline); - return E_NOTIMPL; -} - -static HRESULT WINAPI InternetExplorer_get_Silent(IWebBrowser2 *iface, VARIANT_BOOL *pbSilent) -{ - InternetExplorer *This = WEBBROWSER_THIS(iface); - FIXME("(%p)->(%p)\n", This, pbSilent); - return E_NOTIMPL; -} - -static HRESULT WINAPI InternetExplorer_put_Silent(IWebBrowser2 *iface, VARIANT_BOOL bSilent) -{ - InternetExplorer *This = WEBBROWSER_THIS(iface); - FIXME("(%p)->(%x)\n", This, bSilent); - return E_NOTIMPL; -} - -static HRESULT WINAPI InternetExplorer_get_RegisterAsBrowser(IWebBrowser2 *iface, - VARIANT_BOOL *pbRegister) -{ - InternetExplorer *This = WEBBROWSER_THIS(iface); - FIXME("(%p)->(%p)\n", This, pbRegister); - return E_NOTIMPL; -} - -static HRESULT WINAPI InternetExplorer_put_RegisterAsBrowser(IWebBrowser2 *iface, - VARIANT_BOOL bRegister) -{ - InternetExplorer *This = WEBBROWSER_THIS(iface); - FIXME("(%p)->(%x)\n", This, bRegister); - return E_NOTIMPL; -} - -static HRESULT WINAPI InternetExplorer_get_RegisterAsDropTarget(IWebBrowser2 *iface, - VARIANT_BOOL *pbRegister) -{ - InternetExplorer *This = WEBBROWSER_THIS(iface); - FIXME("(%p)->(%p)\n", This, pbRegister); - return E_NOTIMPL; -} - -static HRESULT WINAPI InternetExplorer_put_RegisterAsDropTarget(IWebBrowser2 *iface, - VARIANT_BOOL bRegister) -{ - InternetExplorer *This = WEBBROWSER_THIS(iface); - FIXME("(%p)->(%x)\n", This, bRegister); - return E_NOTIMPL; -} - -static HRESULT WINAPI InternetExplorer_get_TheaterMode(IWebBrowser2 *iface, VARIANT_BOOL *pbRegister) -{ - InternetExplorer *This = WEBBROWSER_THIS(iface); - FIXME("(%p)->(%p)\n", This, pbRegister); - return E_NOTIMPL; -} - -static HRESULT WINAPI InternetExplorer_put_TheaterMode(IWebBrowser2 *iface, VARIANT_BOOL bRegister) -{ - InternetExplorer *This = WEBBROWSER_THIS(iface); - FIXME("(%p)->(%x)\n", This, bRegister); - return E_NOTIMPL; -} - -static HRESULT WINAPI InternetExplorer_get_AddressBar(IWebBrowser2 *iface, VARIANT_BOOL *Value) -{ - InternetExplorer *This = WEBBROWSER_THIS(iface); - FIXME("(%p)->(%p)\n", This, Value); - return E_NOTIMPL; -} - -static HRESULT WINAPI InternetExplorer_put_AddressBar(IWebBrowser2 *iface, VARIANT_BOOL Value) -{ - InternetExplorer *This = WEBBROWSER_THIS(iface); - FIXME("(%p)->(%x)\n", This, Value); - return E_NOTIMPL; -} - -static HRESULT WINAPI InternetExplorer_get_Resizable(IWebBrowser2 *iface, VARIANT_BOOL *Value) -{ - InternetExplorer *This = WEBBROWSER_THIS(iface); - FIXME("(%p)->(%p)\n", This, Value); - return E_NOTIMPL; -} - -static HRESULT WINAPI InternetExplorer_put_Resizable(IWebBrowser2 *iface, VARIANT_BOOL Value) -{ - InternetExplorer *This = WEBBROWSER_THIS(iface); - FIXME("(%p)->(%x)\n", This, Value); - return E_NOTIMPL; -} - -#undef WEBBROWSER_THIS - -static const IWebBrowser2Vtbl InternetExplorerVtbl = -{ - InternetExplorer_QueryInterface, - InternetExplorer_AddRef, - InternetExplorer_Release, - InternetExplorer_GetTypeInfoCount, - InternetExplorer_GetTypeInfo, - InternetExplorer_GetIDsOfNames, - InternetExplorer_Invoke, - InternetExplorer_GoBack, - InternetExplorer_GoForward, - InternetExplorer_GoHome, - InternetExplorer_GoSearch, - InternetExplorer_Navigate, - InternetExplorer_Refresh, - InternetExplorer_Refresh2, - InternetExplorer_Stop, - InternetExplorer_get_Application, - InternetExplorer_get_Parent, - InternetExplorer_get_Container, - InternetExplorer_get_Document, - InternetExplorer_get_TopLevelContainer, - InternetExplorer_get_Type, - InternetExplorer_get_Left, - InternetExplorer_put_Left, - InternetExplorer_get_Top, - InternetExplorer_put_Top, - InternetExplorer_get_Width, - InternetExplorer_put_Width, - InternetExplorer_get_Height, - InternetExplorer_put_Height, - InternetExplorer_get_LocationName, - InternetExplorer_get_LocationURL, - InternetExplorer_get_Busy, - InternetExplorer_Quit, - InternetExplorer_ClientToWindow, - InternetExplorer_PutProperty, - InternetExplorer_GetProperty, - InternetExplorer_get_Name, - InternetExplorer_get_HWND, - InternetExplorer_get_FullName, - InternetExplorer_get_Path, - InternetExplorer_get_Visible, - InternetExplorer_put_Visible, - InternetExplorer_get_StatusBar, - InternetExplorer_put_StatusBar, - InternetExplorer_get_StatusText, - InternetExplorer_put_StatusText, - InternetExplorer_get_ToolBar, - InternetExplorer_put_ToolBar, - InternetExplorer_get_MenuBar, - InternetExplorer_put_MenuBar, - InternetExplorer_get_FullScreen, - InternetExplorer_put_FullScreen, - InternetExplorer_Navigate2, - InternetExplorer_QueryStatusWB, - InternetExplorer_ExecWB, - InternetExplorer_ShowBrowserBar, - InternetExplorer_get_ReadyState, - InternetExplorer_get_Offline, - InternetExplorer_put_Offline, - InternetExplorer_get_Silent, - InternetExplorer_put_Silent, - InternetExplorer_get_RegisterAsBrowser, - InternetExplorer_put_RegisterAsBrowser, - InternetExplorer_get_RegisterAsDropTarget, - InternetExplorer_put_RegisterAsDropTarget, - InternetExplorer_get_TheaterMode, - InternetExplorer_put_TheaterMode, - InternetExplorer_get_AddressBar, - InternetExplorer_put_AddressBar, - InternetExplorer_get_Resizable, - InternetExplorer_put_Resizable -}; - -void InternetExplorer_WebBrowser_Init(InternetExplorer *This) -{ - This->lpWebBrowser2Vtbl = &InternetExplorerVtbl; -} diff --git a/reactos/dll/win32/shdocvw/ietoolbar.bmp b/reactos/dll/win32/shdocvw/ietoolbar.bmp deleted file mode 100644 index d4123627329ac55b8632a0d6606523af95be1122..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24698 zcmeHv1z48X|Ng6B&UQ}c+;p2u-AoWcXX|uRF|cN!BLox!2?NC<#EIQaNhk^!l$3-h zh$!76Ar}3D!RLQ}o|jjN7g49b>;Jv3oy*&&&pFR|?oXccGIHV?b&*ik;Qu8+0MG+y zg#YER6{(9v9X^qO4<&^}BFR5Kq()U|dGj{=)o%Z9x8V_Jj9Z!kt$=pGr@&`G=c;W- zY}*1YfhIupPk_V!slxBt6ySIH5a7DF&V~x#$K%@p;PL&C;5xZ(ZsWhw@CdNlX#;#N z60JKa5}8BOybCski$q_1kLOuNm_z?o9{73YkUYTh#j@DE8u*yc^L4)OecIzX@V=t& zfS-Y1KM=Ssu9NGQ#lIF+*Lb}80Q~@k4-Br8>*hANAKd1DrS1qYZ(0Lg0gRQwu{Ldv zRg4*vN5B96h{lb3M59MPq*0^tY54F5G;G)d8ang=DJ$pF;K8{xXiyF*C}dOT&X=Bx zMC)%rg$+bK-vBHJ%-6Rq+z;jo%MSO4Z4TQQsmFn9F%V*D- zQ;z+&2H!7WHn#k{EXJYVPgdH~!ebBpV#?wjGTPHEP>dGj8IhK4Wi z+_^)EiHY>&=~Mb=&(0dyv3D0qaWCs0#mC3L6)s=COa=x9p=k9hfaOtI_W5eH*eDQ8#gID;s%9`|bOY-;rxAMTxbGuw0x7$kIP`OmzXh=?z znZ4LYWWC1UlzoH`)V8Hn`}QZqlP2X;_wIMW=W9SP@IEq-N}qpz6*6E288G7*OjhA{ zY&NuKmriyX17B=X{dq2qdjQ`7tlydUgOtDPFwJ^KZ&&cV%z63n60c3up9k((K-c$a zQp7$D3g4|x*Q{re@21Ig-f%>Pou)#?Vf6ui!+z{A7|-_r*!N()A(a7c_f=6-Qz-w^&dIW`n*CAnH6dV#tLDxbkFgTd}1B2*lKp^?~ z`;(8~Rr2=rqbuG%f?Pn>UTSG+F{j?9ux@4UF}HZ!*sts;>e-=N)0N5|zwT8RZ%A>a zriMdaiaNGnJKagRE|GKQBy*PST^)Ucb8jkqKR?IMb3L#8UwK0n@pNyCmn}_(mB`KQ z`xmaUZeu^8cH8Vn@O#$y&NzNUvEJ69!wK=!sgI~fk63U%6bJ#{PX^@Wz3JzlQ{g`a zy?_j)ibUI3uh%X-#w`YY{aI&ln;dnN%XCM6JrU=A0{RU2y6sq-*?rs`bq1IDTKx6w z)+rOZZD&G}$MosO0ZqETcOkexkHU7%rSP492?(>9L)W%VBM+ld&mady%f|FnLtS42 z96#__^4M^@uZo$OS!3q^J?P-r*jUPY@PIa3nb*MsYBT+Et|dr2_PQ@>nOM3X^mf z+H&7R!v8kSdg8wB0FN{48Xjxbc`P@~v(WJ90&tK zNnSpbKKtw@_TOv=TD0(|cJ0_t;&?#f3rS=kg}(eUeFS!x<7v~#JLi`?SDUuJ!?TR_G>BfurBod-xRTT5nbQ2kgo4u zK;gS!2ZZf>3b*--LjRdfq1$It$aXdI-S`LDYbul&jP5xO?eMrr^?z-h)QEX}|Nec! zr_agFrA?MwX|p9{pbC?B?4>3LoM@G$rNIAG_$S6jMr5ZsunufB6@+V9Sy_UQ1pX&f zf9Y!b0{_|H`q=zWNKASg{!6*fI-hj~j~Vm%E4j%(OmAWQTfq!(%NNVj9O#>96WWsF zDdGPoO@GBbth2rcz5$r8%tf}jT+iFcfRy|Ejii1s*Tei~f8ZzZzkEZc8>uGlC6fe4 z>R~m#Tux8XS=6d&uc~|a-s-U**HuT~;as({&HCGK9m|(5e~P?L8n_w_zDH5><`E<( z7fvQ71$6M>b5c}Hs8j@1#Ab)&TAQvlk=h6Vk#OMCb^?(3$Cle`X79Jn9F`u^Zz=zJ}T*sqDLHbouPr&}jh zQuIj!ia4l4AvW-V{+SERp|G8EDeRwF6komlFmM8Y7OifKw>oh1iA@HB$?T^j>wDgR( z;XmtX=4y5B_h>x7uVIIEqsz3z5746cqxAXp<@D*zWwa%`ivKN|DB&6QReu3EX6p%b z2c$BIOh5UUs&M(z4O#HY84HQF{ic3&eZ47-{L0A2j3Qb z-+l=0`vH*3ANxgYL%2@%<5;$973-rv{^(l1c5M-IoaxlRe_R#r(!hat$;_;fe0|F( zKfjoE?|w$Tda++r(+;#~5lrUhC5ZLPVDF1*|9&xb>B4@~YZ++V_zHdZT>^dcO*GD1 z6xHg4X!rP@%^b88EA#ILP;Rsr#a}!?**7mzy8kJPb>2ibkLc0OLpl_7d>P$wTu(8M z8z|6bQKg&7@5S~yN@ZsjE0XIHC34jpL@v66DjgONBDa;ppZjl~EXaV<5|xr8^ZU<5 zyE4W=(i`S~F7!V8HCf>8M)NH-VS!_S(djNDEg0v1z;5MAmRzJxYsxl^+> z!=A|-DAOCUN}0bo+Z6VzWEFYD)9d7y4zhth-z~RTVV|7#zyorc0}jh+3^*#csQ(GM zh5b&UjTh_F&(Y^MR#JyhJ^Crkn2Zt}Xt>L&7xJrAp2|slUA7fH0BOu8l|31Lka^|C zjm0!!LOKl?5GP>Zz&LO}4%{!IkdRU;!nY|YDWQS_F?9Sh`t{e>cA#a;Q0TT&_{`;0 zTwIKM3Meb9fOhOCr;Z(2PF~AEqehoeZw}6xSJoZ?XSH5U1^&kcQJUXz%D&-2slG=k z`SLzWzO;{$JaNgT zi>RHSCbbWQ3|!NpO&J$xOZo-coOYfzr?}Ck#Iv+9-i0>abtbdhXJ|u|1FgSdC&&is z=DZX0UzQG%XZcY$sY8mVb!m|O5*p;FPfAY9NXc~t4L-Y)l+PQ`kc&pNG4niq9=?p) z2kTHfe=X|br$buNM`(_(b!7|VVP%bH|GFG)^Z=wWxs?Ah?7n%WrDdtWcjml;Lc9P) z#dunD!%3oArCSV&Ep z@LYj(en1irC@RY4{~@gbO*sC27=MjYybn=|*Fj3Yasb#*8G&|m|N40fKWh8}dcEw} zqJdkN5AVV6$K%Ohy}~w|?Q7GJ&EvPk+O3YykH2;@J=kHVi~f)jccalSI1a$|dJFSE zFE5Wc2jt=DNox_mGS+R}Ai#8!8Li*EQNR^1FUWZonHU>W&_NRlJ#I#!C(Hyn@ZYn7 zd|(e)Hn={H6V|L*^QfMN1^$c6%gNc*l}bv>=+^Dqv~%|!DlHTLYjAxhPM#F_Ur+eij;7*_UE_#=aHHcdcSxX>DEhiu26-L4#gn?%X^&dX#0Ln3(@!u^2orCu{3xq^BoF zY*#LvXZuiCSV+Oa#iXmt+~>K1+H+)AP@)^(Z1cu)(`N4HcTTQyf0%I1FhAkij40bp^Bor}Jx84S()sVfY}cz5 z`vLOu&Uf_mu4^#=^O5)DoQ*wvkpqVg)eFZnXM|Y65;nrb#H0=|=S$Xzn;#&r!+sL- z|Ak$$nKYF9T52c{P}Ys|DTutkg{`fDK0({IjDTd&jSIukfWSjASX|_ z&iAlx&$`dZrh8fU(Qif;WupHXnG&R=Wg!0_fxPH7e7o|7_|M&vlUt&w+QMX5@eKDZ zm73S~P$%bk0-syC{Y9-k<_j{wc7Wxetq*`Lb5P*^`FZq->l|u%W+pYaoleb;tJ3-i z=Ko;ke?1(OjE02&w$$vz6l!iaomx80qEF7EO?OF~ZN1PI_|Eo+QA6g=&!taXX44qo z4YWM;Fm>BHSuDR|u)C=DXB-2tZmdV{%q#!-r|cEym6YO%F?jH6%$t`-hYmdh?@I)( zvm6u^iIFR*5RTdJVcj1XSVD^y6@mLaS0Hu{P8&UTCeeP11Xo&6=&@wLI{8PYnYOxan{p@U~>_wFgk zDY(>#g_kT@Qdn78N$-M}xc}wLm+uT+D5p1!UL$!U71NHUW6QLBchW2$OX^}bkG^nT zNZrn9P-i#j+4BnoJ~G$Y7BE_01Rxi!nEPkJeehPQ`P)l%{?Fq{Ox5IMAc1D0y<}Org*G`RoIk$uiLXQy7Psp!QjuZXeuRB_i z<#XY*d8Lg_Sq;uBD<@!0j|3_z3B;H;FJH**6crT|$`A=L+hd zCstO@do%x&!YS3KO8<49CccWCl)8wEtxY$-(vCr!flf8#Pxk+xYeM3mbB~box`g=i26&q%@RqsG`5=}DDfqZHq#Uol zmC6a*l6C8DP^V58>4zU4()ZtIAfN1d|5XRD1O9Kg85#Nf#fuljcEHZgj!wd7`4BjE z>=?03vuzFt2zaKar^mjr%z}BaRWn^R| zh783}&z?8HqflzqD!9rAs%Zy!y__ul?~M6Z=I7(22*C&9I3ORfFz16fC(4NT-2W2( zKh`@8;GEhU%j4wm8a%hv=sy%W(8skOV*amLQ%dva7gO)vPq5x23^`ywN>0uaWPoD< z=6iMhF4gVTw^I3#Zdn%6(lSX+EdcrCAjsDfa6cL26J3Y@n0s!ze8q|^ZiD%6Wo1PU z4i1RDPSNSpr|ZDh)|O;}<)%8gj;&j_3f#w9ipnKRmfq!gzS?6TJ(e>Xvak1!xn=ue zJjf*c1WmrOiBzv_rYSyKX{w(&P4l;;sewR{6-|L}J}KCOM*44{f!>Dn)5WFq^?7aT zepZ9Nb=9IDTozMrCmrhLw3uveyAkv-)&ab^F#mVOT%dj~OKHHlWu)kCKuVX4NZD&O z4e?n+Dt>FIulFkId3gza>aH&MM(pzl_6D|sZAP=>Q>f|TNdh{am`Q7{pQMo|m%Wr* zrJOChb@R$yyTpRNXYMoShYpqCx8D*-iV-7{1%Lngb%~$P`b3Hc4+?4h`U?8vj||Ab zZTM2rm@9}vOc9BE(oN)xB9J!?$6Rn2V(P~-`EO<>YRvq1UN%DPylf=E+bZY}7dr#4 z24lnym?Hy^W1Mw+aoqdX<V^uMS^dU*x5I$b!rA z!N3957p(bei)!i4C^xda9jkvs)hIkm0lG_Rz;Hpo3T=Zz??eiS}z7_xX-t{1*b1O*M4Y?k7Bl_*)Y8rlJ zEsgXsrBS}?X_Vgv8g+F8jr3bjie5(a{RLg>?7V>5*&|jsHJw@X(z%4-r1`fOlIk3yv%2j z(;RH4t&nT4rC8b!9JCZ__#OPbRR6OKtX*4*e0d3Ew*Wl7kF`sl(7mxj{L1Tm*cLG7 zA7QSR!G1+`NMqf=z(maTxnmwM3EY1K?#Btd|MuHRmWN8j+lYbdFW{^Yhet+63Tr2L zD+|27j!}KxUG+72+&4?iRZD%q`dh4d1#2w-Y`<=Fv3Zz%<)OGsq#3x27F_*@7WnU= z1pzx~Uf>Rz6S!TF1vRz_SIudX?`9hBwSh)oTuZ|*7}JpRt7s5-+~0L6?S@W={(n}p zmAXf){}04oq~9(W(Fk`F8s)KCsBi3LQ~KS@jK=$H6y$8Y??(FF*Nnz`Ll(SDA#-bJ zsD}}$AV11&j`dte7LiUg(bfq5ze<#7l`^lzsHaHy&pMxVy_EA3-Y3$?kty&E%HcZ} z3g7(kDxtr@}P1~bfX}~UZG1g_D z5}Ea?Z@#T+{LL%(>=D=C{)iFG`$YWCB?bO#IqdJ#S9YIuil=80;^A^qRecD*zZ|jQ z!&lccGxK3@#rU0!LgXFchzm^IjK-IygZByUJLrysDaF{W#hRft!hCU7_<6F^QWV#%#IZ+{ zCN9YnCZs-R?i(0L_`h^%3EsaD9DXeL?=xoxV_ih5ur?wAYmnI%NNpd-xGWd@_C;aM zw$D$ zM<)_|=vcfL9f`X_2cggR-SJ@kUs3Zd>mITG=jWDQJ4nky4$(^Fa10=KEPF;_$0P_p zPKM#fXu6LDP4R*}AVy*Nm~e3e8RMG8^)u9M^TcxYx_Bj-o4^idjB=|6KT?< zGU&6XuXGCAcQ>~Jnm%0&ZY0AmN`%k<06qifLLUhFhjma&N-oWu`5Zn~5@Lbd@F${Q z@n2WBKqmj~{vN2p{6DR!aN^v`(ZM$k=x?~PVd@bF?ZK;M^;*_B`^8E-+}BKo44kIB zSTk|!81y!-XLS*ovJEcifrdL_t}m*D-15Vt(V z8dk(HeZAm^BqH8V5Y|5PIw9sgZw-yZsdE=EA;+ZD9P-HJ3ktVzSunl!7R<++^%T>eLp zxB2kLI6tfAZB8>G3)azR$=L7E%QkCA7RVbasWjBq>+2SkTecL@!iCuapCx)f5&Aoc z#*fd&`Eq>YTp|DG?*4?POex2;RPbM7BUlE;kAH-i*KQuapBPW%chZXNYZMeds83 z^m6EDwgaxP3vEnBJ{Q4Oyb)%@dG70t1#2zTAt%Q5!a!vWuDx`I&C!G}Hvj5&Ay3OT zM*rf@=gp0WrHG7&eD%gg>Rhxm>e}^`*up|015*Bv8Iwd~$0kAl-N$d{Dv)oJ=>4%{ zQ;4sze6S2K|2b9|H!h#Fw8V%B3b2l@2>GN~NzYPTpYYt|5@7A zQu3ijZub8GyE26%A zIWEqk_Mdu^&7Mfao$>T@A20a(oa1>4-Jb*ACjp6q476|WQv&XL!oIvyJR{}5G`}X@ zO4gQy)sX>bXJ;WU;Oo`#A^Fea4epKnbp5!(T{q5E+QZjb5ptN=FKV+I{Qtiw$aygT z&!vTuUeJCrgimxj!I!4ltr5fD@fR5ncq{u_x2qOrUAvwvv$QP6H_sNhE#?2XaV!Jb zG<9kTc%2HKC)MCT%M0_Lm_vwv#ecQ|lP0CX?|+2#aK}o)eZ9KvOU^)l zKTf%7N1morOJE0Xz$S?8wH0_Rbj)du{y#~d<2;eQM*jhhx=M%bb(KoIE#{TQdF;Ww z*%69$*+MZ6>+ld-2dyZVwyEe zVh8&7F96RU(WjmLs8u^RQbyK6EX)C<;Jab76rgLc_(Ep?A*zJhbZox72;h} zig&XjwgqwSyM*%@f%dHb-$73uYYm_MTL1o0V&=Y@S`lf7c+0ru{)P5yKk9XE@wDY{lhhEVcMn3@ls36BGS~% z5qQpgua4^6XWcLLf0+NALzVEK*G|L>++VTc3Alffx!+(s&hxqsy2{1r!7h|{=PKph z_N9z#F8D3LL5ewNL$MzFC>8c0C+aeOBj7FkJ|HXH4Zgh-WkSDa1ldz2@}0a^G{x^E z*3A7`;;>lh*&SDF;=B;_|2yg_e|b4MCx@@T3Vf=nT7Z04kr3BRm{5q=rr;I#fA}F2 z+|K~_Q?MrX{Nu)rUG@LXH(~yB?vitwp`oEN!Lfjwn;X`rht#>w`6$LmqfowA-}td^l!IzK{hfJ*OiR5PA>T(k^Q)LeOFocga0piT@~~9-+ab52^|0}Cc z|G%6Q{{Bycb6Ovwx0cIT2F%TiFlU=9_&MzBNc|mY%v)XWOS!*pT@m6!C+5E8`}V{^ zYrv2*ddiue>(xqP&f35aa-}@@JnZ*Ke4k60m+_$S|ec{{JF1^#n#%8ZI zeqaIa3hQ^?cguC`+_`g~wBG-=?>Yij`W-tSEZexT0CSt=0(h=W3Z6ISwR1K${JY39 z+P19>>&S{RUwVeQzvo?Bt9?J5%0}>6MneuxpV1qViTQytC;bs(Y{iI)OPrPrxpPKm z@KMAKs=Ows_VcxmVFwn~KKJg&&Mn~Mcz*Fk$kT7WNx@nkmn@OU_J?<`=f5ZZH%7pG z0oE(SZ+Mr#e`~e-Afcc>R#a{o{=QoeQ F{{yG6)#3mE diff --git a/reactos/dll/win32/shdocvw/ietoolbar.svg b/reactos/dll/win32/shdocvw/ietoolbar.svg deleted file mode 100644 index 24866a919c6..00000000000 --- a/reactos/dll/win32/shdocvw/ietoolbar.svg +++ /dev/null @@ -1,285 +0,0 @@ - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/reactos/dll/win32/shdocvw/iexplore.c b/reactos/dll/win32/shdocvw/iexplore.c deleted file mode 100644 index 523d191d219..00000000000 --- a/reactos/dll/win32/shdocvw/iexplore.c +++ /dev/null @@ -1,830 +0,0 @@ -/* - * SHDOCVW - Internet Explorer main frame window - * - * Copyright 2006 Mike McCormack (for CodeWeavers) - * Copyright 2006 Jacek Caban (for CodeWeavers) - * - * 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 - */ - -#define COBJMACROS - -//#include -//#include "windef.h" -//#include "winbase.h" -//#include "winuser.h" -//#include "wingdi.h" -//#include "winnls.h" -//#include "ole2.h" -//#include "exdisp.h" -//#include "oleidl.h" - -#include "shdocvw.h" -#include -//#include "shellapi.h" -//#include "winreg.h" -#include -#include - -#include - -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; - - switch(msg) - { - case WM_INITDIALOG: - This = (InternetExplorer*)lparam; - EnableWindow(GetDlgItem(hwnd, IDOK), FALSE); - return TRUE; - - case WM_COMMAND: - switch(LOWORD(wparam)) - { - case IDC_BROWSE_OPEN_URL: - { - HWND hwndurl = GetDlgItem(hwnd, IDC_BROWSE_OPEN_URL); - int len = GetWindowTextLengthW(hwndurl); - - EnableWindow(GetDlgItem(hwnd, IDOK), len ? TRUE : FALSE); - break; - } - case IDOK: - { - HWND hwndurl = GetDlgItem(hwnd, IDC_BROWSE_OPEN_URL); - int len = GetWindowTextLengthW(hwndurl); - - if(len) - { - VARIANT url; - - V_VT(&url) = VT_BSTR; - V_BSTR(&url) = SysAllocStringLen(NULL, len); - - GetWindowTextW(hwndurl, V_BSTR(&url), len + 1); - IWebBrowser2_Navigate2(WEBBROWSER2(This), &url, NULL, NULL, NULL, NULL); - - SysFreeString(V_BSTR(&url)); - } - } - /* fall through */ - case IDCANCEL: - EndDialog(hwnd, wparam); - return TRUE; - } - } - return FALSE; -} - -static void ie_dialog_about(HWND hwnd) -{ - HICON icon = LoadImageW(GetModuleHandleW(0), MAKEINTRESOURCEW(IDI_APPICON), IMAGE_ICON, 48, 48, LR_SHARED); - - ShellAboutW(hwnd, wszWineInternetExplorer, NULL, icon); - - 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, 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 iewnd_OnCommand(InternetExplorer *This, HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) -{ - switch(LOWORD(wparam)) - { - case ID_BROWSE_OPEN: - DialogBoxParamW(shdocvw_hinstance, MAKEINTRESOURCEW(IDD_BROWSE_OPEN), hwnd, ie_dialog_open_proc, (LPARAM)This); - break; - - case ID_BROWSE_PRINT: - if(This->doc_host.document) - { - IOleCommandTarget* target; - - if(FAILED(IUnknown_QueryInterface(This->doc_host.document, &IID_IOleCommandTarget, (LPVOID*)&target))) - break; - - IOleCommandTarget_Exec(target, &CGID_MSHTML, IDM_PRINT, OLECMDEXECOPT_DODEFAULT, NULL, NULL); - - IOleCommandTarget_Release(target); - } - 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) -{ - InternetExplorer *This = (InternetExplorer*) GetWindowLongPtrW(hwnd, 0); - - switch (msg) - { - case WM_CREATE: - return iewnd_OnCreate(hwnd, (LPCREATESTRUCTW)lparam); - case WM_DESTROY: - return iewnd_OnDestroy(This); - case WM_SIZE: - 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); -} - -void register_iewindow_class(void) -{ - WNDCLASSEXW wc; - - memset(&wc, 0, sizeof wc); - wc.cbSize = sizeof(wc); - wc.style = 0; - wc.lpfnWndProc = ie_window_proc; - wc.cbClsExtra = 0; - wc.cbWndExtra = sizeof(InternetExplorer*); - wc.hInstance = shdocvw_hinstance; - wc.hIcon = LoadIconW(GetModuleHandleW(0), MAKEINTRESOURCEW(IDI_APPICON)); - wc.hIconSm = LoadImageW(GetModuleHandleW(0), MAKEINTRESOURCEW(IDI_APPICON), IMAGE_ICON, - GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), LR_SHARED); - wc.hCursor = LoadCursorW(0, MAKEINTRESOURCEW(IDC_ARROW)); - wc.hbrBackground = 0; - wc.lpszClassName = szIEWinFrame; - wc.lpszMenuName = NULL; - - RegisterClassExW(&wc); -} - -void unregister_iewindow_class(void) -{ - UnregisterClassW(szIEWinFrame, shdocvw_hinstance); -} - -static void create_frame_hwnd(InternetExplorer *This) -{ - This->frame_hwnd = CreateWindowExW( - WS_EX_WINDOWEDGE, - szIEWinFrame, wszWineInternetExplorer, - WS_CLIPCHILDREN | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME - | WS_MINIMIZEBOX | WS_MAXIMIZEBOX, - CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, - NULL, NULL /* FIXME */, shdocvw_hinstance, This); -} - -static IWebBrowser2 *create_ie_window(LPCSTR cmdline) -{ - IWebBrowser2 *wb = NULL; - - InternetExplorer_Create(NULL, &IID_IWebBrowser2, (void**)&wb); - if(!wb) - return NULL; - - IWebBrowser2_put_Visible(wb, VARIANT_TRUE); - IWebBrowser2_put_MenuBar(wb, VARIANT_TRUE); - - if(!*cmdline) { - IWebBrowser2_GoHome(wb); - }else { - VARIANT var_url; - DWORD len; - int cmdlen; - - if(!strncasecmp(cmdline, "-nohome", 7)) - cmdline += 7; - while(*cmdline == ' ' || *cmdline == '\t') - cmdline++; - cmdlen = lstrlenA(cmdline); - if(cmdlen > 2 && cmdline[0] == '"' && cmdline[cmdlen-1] == '"') { - cmdline++; - cmdlen -= 2; - } - - V_VT(&var_url) = VT_BSTR; - - len = MultiByteToWideChar(CP_ACP, 0, cmdline, cmdlen, NULL, 0); - V_BSTR(&var_url) = SysAllocStringLen(NULL, len); - MultiByteToWideChar(CP_ACP, 0, cmdline, cmdlen, V_BSTR(&var_url), len); - - /* navigate to the first page */ - IWebBrowser2_Navigate2(wb, &var_url, NULL, NULL, NULL, NULL); - - SysFreeString(V_BSTR(&var_url)); - } - - 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; - HRESULT hres; - - TRACE("(%p %s %p)\n", pOuter, debugstr_guid(riid), ppv); - - ret = heap_alloc_zero(sizeof(InternetExplorer)); - ret->ref = 0; - - ret->doc_host.disp = (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; - - hres = IWebBrowser2_QueryInterface(WEBBROWSER2(ret), riid, ppv); - if(FAILED(hres)) { - heap_free(ret); - return hres; - } - - return hres; -} - -/****************************************************************** - * IEWinMain (SHDOCVW.101) - * - * Only returns on error. - */ -DWORD WINAPI IEWinMain(LPSTR szCommandLine, int nShowWindow) -{ - IWebBrowser2 *wb = NULL; - MSG msg; - HRESULT hres; - - TRACE("%s %d\n", debugstr_a(szCommandLine), nShowWindow); - - if(*szCommandLine == '-' || *szCommandLine == '/') { - if(!strcasecmp(szCommandLine+1, "regserver")) - return register_iexplore(TRUE); - if(!strcasecmp(szCommandLine+1, "unregserver")) - return register_iexplore(FALSE); - } - - CoInitialize(NULL); - - hres = register_class_object(TRUE); - if(FAILED(hres)) { - CoUninitialize(); - ExitProcess(1); - } - - if(strcasecmp(szCommandLine, "-embedding")) - wb = create_ie_window(szCommandLine); - - /* run the message loop for this thread */ - while (GetMessageW(&msg, 0, 0, 0)) - { - TranslateMessage(&msg); - DispatchMessageW(&msg); - } - - if(wb) - IWebBrowser2_Release(wb); - - register_class_object(FALSE); - - CoUninitialize(); - - ExitProcess(0); - return 0; -} diff --git a/reactos/dll/win32/shdocvw/intshcut.c b/reactos/dll/win32/shdocvw/intshcut.c deleted file mode 100644 index 75502621a54..00000000000 --- a/reactos/dll/win32/shdocvw/intshcut.c +++ /dev/null @@ -1,648 +0,0 @@ -/* - * Copyright 2008 Damjan Jovanovic - * - * ShellLink's barely documented cousin that handles URLs. - * - * 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 - */ - -/* - * TODO: - * Implement the IShellLinkA/W interfaces - * Handle the SetURL flags - * Implement any other interfaces? Does any software actually use them? - * - * The installer for the Zuma Deluxe Popcap game is good for testing. - */ - -//#include -//#include - -#include -#include "shdocvw.h" -//#include "objidl.h" -//#include "shobjidl.h" -#include -//#include "shellapi.h" -//#include "winreg.h" -//#include "shlwapi.h" - -WINE_DEFAULT_DEBUG_CHANNEL(shdocvw); - -typedef struct -{ - IUniformResourceLocatorA uniformResourceLocatorA; - IUniformResourceLocatorW uniformResourceLocatorW; - IPersistFile persistFile; - - LONG refCount; - - WCHAR *url; - BOOLEAN isDirty; - LPOLESTR currentFile; -} InternetShortcut; - -/* utility functions */ - -static inline InternetShortcut* impl_from_IUniformResourceLocatorA(IUniformResourceLocatorA *iface) -{ - return (InternetShortcut*)((char*)iface - FIELD_OFFSET(InternetShortcut, uniformResourceLocatorA)); -} - -static inline InternetShortcut* impl_from_IUniformResourceLocatorW(IUniformResourceLocatorW *iface) -{ - return (InternetShortcut*)((char*)iface - FIELD_OFFSET(InternetShortcut, uniformResourceLocatorW)); -} - -static inline InternetShortcut* impl_from_IPersistFile(IPersistFile *iface) -{ - return (InternetShortcut*)((char*)iface - FIELD_OFFSET(InternetShortcut, persistFile)); -} - -static BOOL run_winemenubuilder( const WCHAR *args ) -{ - static const WCHAR menubuilder[] = {'\\','w','i','n','e','m','e','n','u','b','u','i','l','d','e','r','.','e','x','e',0}; - LONG len; - LPWSTR buffer; - STARTUPINFOW si; - PROCESS_INFORMATION pi; - BOOL ret; - WCHAR app[MAX_PATH]; - void *redir; - - GetSystemDirectoryW( app, MAX_PATH - sizeof(menubuilder)/sizeof(WCHAR) ); - strcatW( app, menubuilder ); - - len = (strlenW( app ) + strlenW( args ) + 1) * sizeof(WCHAR); - buffer = heap_alloc( len ); - if( !buffer ) - return FALSE; - - strcpyW( buffer, app ); - strcatW( buffer, args ); - - TRACE("starting %s\n",debugstr_w(buffer)); - - memset(&si, 0, sizeof(si)); - si.cb = sizeof(si); - - Wow64DisableWow64FsRedirection( &redir ); - ret = CreateProcessW( app, buffer, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi ); - Wow64RevertWow64FsRedirection( redir ); - - heap_free( buffer ); - - if (ret) - { - CloseHandle( pi.hProcess ); - CloseHandle( pi.hThread ); - } - - return ret; -} - -static BOOL StartLinkProcessor( LPCOLESTR szLink ) -{ - static const WCHAR szFormat[] = { ' ','-','w',' ','-','u',' ','"','%','s','"',0 }; - LONG len; - LPWSTR buffer; - BOOL ret; - - len = sizeof(szFormat) + lstrlenW( szLink ) * sizeof(WCHAR); - buffer = heap_alloc( len ); - if( !buffer ) - return FALSE; - - wsprintfW( buffer, szFormat, szLink ); - ret = run_winemenubuilder( buffer ); - heap_free( buffer ); - return ret; -} - -/* interface functions */ - -static HRESULT Unknown_QueryInterface(InternetShortcut *This, REFIID riid, PVOID *ppvObject) -{ - TRACE("(%p, %s, %p)\n", This, debugstr_guid(riid), ppvObject); - *ppvObject = NULL; - if (IsEqualGUID(&IID_IUnknown, riid)) - *ppvObject = &This->uniformResourceLocatorA; - else if (IsEqualGUID(&IID_IUniformResourceLocatorA, riid)) - *ppvObject = &This->uniformResourceLocatorA; - else if (IsEqualGUID(&IID_IUniformResourceLocatorW, riid)) - *ppvObject = &This->uniformResourceLocatorW; - else if (IsEqualGUID(&IID_IPersistFile, riid)) - *ppvObject = &This->persistFile; - else if (IsEqualGUID(&IID_IShellLinkA, riid)) - { - FIXME("The IShellLinkA interface is not yet supported by InternetShortcut\n"); - return E_NOINTERFACE; - } - else if (IsEqualGUID(&IID_IShellLinkW, riid)) - { - FIXME("The IShellLinkW interface is not yet supported by InternetShortcut\n"); - return E_NOINTERFACE; - } - else - { - FIXME("Interface with GUID %s not yet implemented by InternetShortcut\n", debugstr_guid(riid)); - return E_NOINTERFACE; - } - IUnknown_AddRef((IUnknown*)*ppvObject); - return S_OK; -} - -static ULONG Unknown_AddRef(InternetShortcut *This) -{ - TRACE("(%p)\n", This); - return InterlockedIncrement(&This->refCount); -} - -static ULONG Unknown_Release(InternetShortcut *This) -{ - ULONG count; - TRACE("(%p)\n", This); - count = InterlockedDecrement(&This->refCount); - if (count == 0) - { - CoTaskMemFree(This->url); - CoTaskMemFree(This->currentFile); - heap_free(This); - SHDOCVW_UnlockModule(); - } - return count; -} - -static HRESULT WINAPI UniformResourceLocatorW_QueryInterface(IUniformResourceLocatorW *url, REFIID riid, PVOID *ppvObject) -{ - InternetShortcut *This = impl_from_IUniformResourceLocatorW(url); - TRACE("(%p, %s, %p)\n", url, debugstr_guid(riid), ppvObject); - return Unknown_QueryInterface(This, riid, ppvObject); -} - -static ULONG WINAPI UniformResourceLocatorW_AddRef(IUniformResourceLocatorW *url) -{ - InternetShortcut *This = impl_from_IUniformResourceLocatorW(url); - TRACE("(%p)\n", url); - return Unknown_AddRef(This); -} - -static ULONG WINAPI UniformResourceLocatorW_Release(IUniformResourceLocatorW *url) -{ - InternetShortcut *This = impl_from_IUniformResourceLocatorW(url); - TRACE("(%p)\n", url); - return Unknown_Release(This); -} - -static HRESULT WINAPI UniformResourceLocatorW_SetUrl(IUniformResourceLocatorW *url, LPCWSTR pcszURL, DWORD dwInFlags) -{ - WCHAR *newURL = NULL; - InternetShortcut *This = impl_from_IUniformResourceLocatorW(url); - TRACE("(%p, %s, 0x%x)\n", url, debugstr_w(pcszURL), dwInFlags); - if (dwInFlags != 0) - FIXME("ignoring unsupported flags 0x%x\n", dwInFlags); - if (pcszURL != NULL) - { - newURL = co_strdupW(pcszURL); - if (newURL == NULL) - return E_OUTOFMEMORY; - } - CoTaskMemFree(This->url); - This->url = newURL; - This->isDirty = TRUE; - return S_OK; -} - -static HRESULT WINAPI UniformResourceLocatorW_GetUrl(IUniformResourceLocatorW *url, LPWSTR *ppszURL) -{ - HRESULT hr = S_OK; - InternetShortcut *This = impl_from_IUniformResourceLocatorW(url); - TRACE("(%p, %p)\n", url, ppszURL); - if (This->url == NULL) - *ppszURL = NULL; - else - { - *ppszURL = co_strdupW(This->url); - if (*ppszURL == NULL) - hr = E_OUTOFMEMORY; - } - return hr; -} - -static HRESULT WINAPI UniformResourceLocatorW_InvokeCommand(IUniformResourceLocatorW *url, PURLINVOKECOMMANDINFOW pCommandInfo) -{ - 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) -{ - InternetShortcut *This = impl_from_IUniformResourceLocatorA(url); - TRACE("(%p, %s, %p)\n", url, debugstr_guid(riid), ppvObject); - return Unknown_QueryInterface(This, riid, ppvObject); -} - -static ULONG WINAPI UniformResourceLocatorA_AddRef(IUniformResourceLocatorA *url) -{ - InternetShortcut *This = impl_from_IUniformResourceLocatorA(url); - TRACE("(%p)\n", url); - return Unknown_AddRef(This); -} - -static ULONG WINAPI UniformResourceLocatorA_Release(IUniformResourceLocatorA *url) -{ - InternetShortcut *This = impl_from_IUniformResourceLocatorA(url); - TRACE("(%p)\n", url); - return Unknown_Release(This); -} - -static HRESULT WINAPI UniformResourceLocatorA_SetUrl(IUniformResourceLocatorA *url, LPCSTR pcszURL, DWORD dwInFlags) -{ - WCHAR *newURL = NULL; - InternetShortcut *This = impl_from_IUniformResourceLocatorA(url); - TRACE("(%p, %s, 0x%x)\n", url, debugstr_a(pcszURL), dwInFlags); - if (dwInFlags != 0) - FIXME("ignoring unsupported flags 0x%x\n", dwInFlags); - if (pcszURL != NULL) - { - newURL = co_strdupAtoW(pcszURL); - if (newURL == NULL) - return E_OUTOFMEMORY; - } - CoTaskMemFree(This->url); - This->url = newURL; - This->isDirty = TRUE; - return S_OK; -} - -static HRESULT WINAPI UniformResourceLocatorA_GetUrl(IUniformResourceLocatorA *url, LPSTR *ppszURL) -{ - HRESULT hr = S_OK; - InternetShortcut *This = impl_from_IUniformResourceLocatorA(url); - TRACE("(%p, %p)\n", url, ppszURL); - if (This->url == NULL) - *ppszURL = NULL; - else - { - *ppszURL = co_strdupWtoA(This->url); - if (*ppszURL == NULL) - hr = E_OUTOFMEMORY; - } - return hr; -} - -static HRESULT WINAPI UniformResourceLocatorA_InvokeCommand(IUniformResourceLocatorA *url, PURLINVOKECOMMANDINFOA pCommandInfo) -{ - 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) -{ - InternetShortcut *This = impl_from_IPersistFile(pFile); - TRACE("(%p, %s, %p)\n", pFile, debugstr_guid(riid), ppvObject); - return Unknown_QueryInterface(This, riid, ppvObject); -} - -static ULONG WINAPI PersistFile_AddRef(IPersistFile *pFile) -{ - InternetShortcut *This = impl_from_IPersistFile(pFile); - TRACE("(%p)\n", pFile); - return Unknown_AddRef(This); -} - -static ULONG WINAPI PersistFile_Release(IPersistFile *pFile) -{ - InternetShortcut *This = impl_from_IPersistFile(pFile); - TRACE("(%p)\n", pFile); - return Unknown_Release(This); -} - -static HRESULT WINAPI PersistFile_GetClassID(IPersistFile *pFile, CLSID *pClassID) -{ - TRACE("(%p, %p)\n", pFile, pClassID); - *pClassID = CLSID_InternetShortcut; - return S_OK; -} - -static HRESULT WINAPI PersistFile_IsDirty(IPersistFile *pFile) -{ - InternetShortcut *This = impl_from_IPersistFile(pFile); - TRACE("(%p)\n", pFile); - return This->isDirty ? S_OK : S_FALSE; -} - -static HRESULT WINAPI PersistFile_Load(IPersistFile *pFile, LPCOLESTR pszFileName, DWORD dwMode) -{ - WCHAR str_header[] = {'I','n','t','e','r','n','e','t','S','h','o','r','t','c','u','t',0}; - WCHAR str_URL[] = {'U','R','L',0}; - WCHAR *filename = NULL; - HRESULT hr; - InternetShortcut *This = impl_from_IPersistFile(pFile); - TRACE("(%p, %s, 0x%x)\n", pFile, debugstr_w(pszFileName), dwMode); - if (dwMode != 0) - FIXME("ignoring unimplemented mode 0x%x\n", dwMode); - filename = co_strdupW(pszFileName); - if (filename != NULL) - { - DWORD len = 128; - DWORD r; - WCHAR *url = CoTaskMemAlloc(len*sizeof(WCHAR)); - if (url != NULL) - { - r = GetPrivateProfileStringW(str_header, str_URL, NULL, url, len, pszFileName); - while (r == len-1) - { - CoTaskMemFree(url); - len *= 2; - url = CoTaskMemAlloc(len*sizeof(WCHAR)); - if (url == NULL) - break; - r = GetPrivateProfileStringW(str_header, str_URL, NULL, url, len, pszFileName); - } - if (r == 0) - hr = E_FAIL; - else if (url != NULL) - { - CoTaskMemFree(This->currentFile); - This->currentFile = filename; - CoTaskMemFree(This->url); - This->url = url; - This->isDirty = FALSE; - return S_OK; - } - else - hr = E_OUTOFMEMORY; - CoTaskMemFree(url); - } - else - hr = E_OUTOFMEMORY; - CoTaskMemFree(filename); - } - else - hr = E_OUTOFMEMORY; - return hr; -} - -static HRESULT WINAPI PersistFile_Save(IPersistFile *pFile, LPCOLESTR pszFileName, BOOL fRemember) -{ - HRESULT hr = S_OK; - INT len; - CHAR *url; - InternetShortcut *This = impl_from_IPersistFile(pFile); - - TRACE("(%p, %s, %d)\n", pFile, debugstr_w(pszFileName), fRemember); - - if (pszFileName != NULL && fRemember) - { - LPOLESTR oldFile = This->currentFile; - This->currentFile = co_strdupW(pszFileName); - if (This->currentFile == NULL) - { - This->currentFile = oldFile; - return E_OUTOFMEMORY; - } - CoTaskMemFree(oldFile); - } - if (This->url == NULL) - return E_FAIL; - - /* Windows seems to always write: - * ASCII "[InternetShortcut]" headers - * ASCII names in "name=value" pairs - * An ASCII (probably UTF8?) value in "URL=..." - */ - len = WideCharToMultiByte(CP_UTF8, 0, This->url, -1, NULL, 0, 0, 0); - url = heap_alloc(len); - if (url != NULL) - { - HANDLE file; - WideCharToMultiByte(CP_UTF8, 0, This->url, -1, url, len, 0, 0); - file = CreateFileW(pszFileName, GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); - if (file != INVALID_HANDLE_VALUE) - { - DWORD bytesWritten; - char str_header[] = "[InternetShortcut]"; - char str_URL[] = "URL="; - char str_eol[] = "\r\n"; - - WriteFile(file, str_header, lstrlenA(str_header), &bytesWritten, NULL); - WriteFile(file, str_eol, lstrlenA(str_eol), &bytesWritten, NULL); - WriteFile(file, str_URL, lstrlenA(str_URL), &bytesWritten, NULL); - WriteFile(file, url, lstrlenA(url), &bytesWritten, NULL); - WriteFile(file, str_eol, lstrlenA(str_eol), &bytesWritten, NULL); - CloseHandle(file); - if (pszFileName == NULL || fRemember) - This->isDirty = FALSE; - StartLinkProcessor(pszFileName); - } - else - hr = E_FAIL; - heap_free(url); - } - else - hr = E_OUTOFMEMORY; - - return hr; -} - -static HRESULT WINAPI PersistFile_SaveCompleted(IPersistFile *pFile, LPCOLESTR pszFileName) -{ - FIXME("(%p, %p): stub\n", pFile, pszFileName); - return E_NOTIMPL; -} - -static HRESULT WINAPI PersistFile_GetCurFile(IPersistFile *pFile, LPOLESTR *ppszFileName) -{ - HRESULT hr = S_OK; - InternetShortcut *This = impl_from_IPersistFile(pFile); - TRACE("(%p, %p)\n", pFile, ppszFileName); - if (This->currentFile == NULL) - *ppszFileName = NULL; - else - { - *ppszFileName = co_strdupW(This->currentFile); - if (*ppszFileName == NULL) - hr = E_OUTOFMEMORY; - } - return hr; -} - - - -static const IUniformResourceLocatorWVtbl uniformResourceLocatorWVtbl = { - UniformResourceLocatorW_QueryInterface, - UniformResourceLocatorW_AddRef, - UniformResourceLocatorW_Release, - UniformResourceLocatorW_SetUrl, - UniformResourceLocatorW_GetUrl, - UniformResourceLocatorW_InvokeCommand -}; - -static const IUniformResourceLocatorAVtbl uniformResourceLocatorAVtbl = { - UniformResourceLocatorA_QueryInterface, - UniformResourceLocatorA_AddRef, - UniformResourceLocatorA_Release, - UniformResourceLocatorA_SetUrl, - UniformResourceLocatorA_GetUrl, - UniformResourceLocatorA_InvokeCommand -}; - -static const IPersistFileVtbl persistFileVtbl = { - PersistFile_QueryInterface, - PersistFile_AddRef, - PersistFile_Release, - PersistFile_GetClassID, - PersistFile_IsDirty, - PersistFile_Load, - PersistFile_Save, - PersistFile_SaveCompleted, - 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; - HRESULT hr; - - TRACE("(%p, %s, %p)\n", pOuter, debugstr_guid(riid), ppv); - - *ppv = NULL; - - if(pOuter) - return CLASS_E_NOAGGREGATION; - - This = create_shortcut(); - if (This) - { - hr = Unknown_QueryInterface(This, riid, ppv); - if (SUCCEEDED(hr)) - SHDOCVW_LockModule(); - else - heap_free(This); - return hr; - } - else - return E_OUTOFMEMORY; -} - - -/********************************************************************** - * OpenURL (SHDOCVW.@) - */ -void WINAPI OpenURL(HWND hWnd, HINSTANCE hInst, LPCSTR lpcstrUrl, int nShowCmd) -{ - InternetShortcut *shortcut; - WCHAR* urlfilepath = NULL; - shortcut = create_shortcut(); - - if (shortcut) - { - int len; - - len = MultiByteToWideChar(CP_ACP, 0, lpcstrUrl, -1, NULL, 0); - urlfilepath = heap_alloc(len * sizeof(WCHAR)); - MultiByteToWideChar(CP_ACP, 0, lpcstrUrl, -1, urlfilepath, len); - - if(SUCCEEDED(IPersistFile_Load(&shortcut->persistFile, urlfilepath, 0))) - { - URLINVOKECOMMANDINFOW ici; - - memset( &ici, 0, sizeof ici ); - ici.dwcbSize = sizeof ici; - ici.dwFlags = IURL_INVOKECOMMAND_FL_USE_DEFAULT_VERB; - ici.hwndParent = hWnd; - - if FAILED(UniformResourceLocatorW_InvokeCommand(&shortcut->uniformResourceLocatorW, (PURLINVOKECOMMANDINFOW) &ici)) - TRACE("failed to open URL: %s\n.",debugstr_a(lpcstrUrl)); - } - - heap_free(shortcut); - heap_free(urlfilepath); - } -} diff --git a/reactos/dll/win32/shdocvw/navigate.c b/reactos/dll/win32/shdocvw/navigate.c deleted file mode 100644 index 5d33130cd84..00000000000 --- a/reactos/dll/win32/shdocvw/navigate.c +++ /dev/null @@ -1,1132 +0,0 @@ -/* - * Copyright 2006-2007 Jacek Caban for CodeWeavers - * - * 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 - */ - -#define NONAMELESSUNION -#define NONAMELESSSTRUCT - -#include - -#include "shdocvw.h" -#include -//#include "shellapi.h" -//#include "winreg.h" -#include -#include -#include - -WINE_DEFAULT_DEBUG_CHANNEL(shdocvw); - -static const WCHAR emptyW[] = {0}; - -typedef struct { - const IBindStatusCallbackVtbl *lpBindStatusCallbackVtbl; - const IHttpNegotiateVtbl *lpHttpNegotiateVtbl; - - LONG ref; - - DocHost *doc_host; - - LPWSTR url; - HGLOBAL post_data; - BSTR headers; - ULONG post_data_len; -} BindStatusCallback; - -#define BINDSC(x) ((IBindStatusCallback*) &(x)->lpBindStatusCallbackVtbl) -#define HTTPNEG(x) ((IHttpNegotiate*) &(x)->lpHttpNegotiateVtbl) - -static void dump_BINDINFO(BINDINFO *bi) -{ - static const char * const BINDINFOF_str[] = { - "#0", - "BINDINFOF_URLENCODESTGMEDDATA", - "BINDINFOF_URLENCODEDEXTRAINFO" - }; - - static const char * const BINDVERB_str[] = { - "BINDVERB_GET", - "BINDVERB_POST", - "BINDVERB_PUT", - "BINDVERB_CUSTOM" - }; - - TRACE("\n" - "BINDINFO = {\n" - " %d, %s,\n" - " {%d, %p, %p},\n" - " %s,\n" - " %s,\n" - " %s,\n" - " %d, %08x, %d, %d\n" - " {%d %p %x},\n" - " %s\n" - " %p, %d\n" - "}\n", - - bi->cbSize, debugstr_w(bi->szExtraInfo), - bi->stgmedData.tymed, bi->stgmedData.u.hGlobal, bi->stgmedData.pUnkForRelease, - bi->grfBindInfoF > BINDINFOF_URLENCODEDEXTRAINFO - ? "unknown" : BINDINFOF_str[bi->grfBindInfoF], - bi->dwBindVerb > BINDVERB_CUSTOM - ? "unknown" : BINDVERB_str[bi->dwBindVerb], - debugstr_w(bi->szCustomVerb), - bi->cbstgmedData, bi->dwOptions, bi->dwOptionsFlags, bi->dwCodePage, - bi->securityAttributes.nLength, - bi->securityAttributes.lpSecurityDescriptor, - bi->securityAttributes.bInheritHandle, - debugstr_guid(&bi->iid), - bi->pUnk, bi->dwReserved - ); -} - -static void set_status_text(BindStatusCallback *This, LPCWSTR str) -{ - VARIANTARG arg; - DISPPARAMS dispparams = {&arg, NULL, 1, 0}; - - if(!This->doc_host) - return; - - V_VT(&arg) = VT_BSTR; - V_BSTR(&arg) = str ? SysAllocString(str) : NULL; - call_sink(This->doc_host->cps.wbe2, DISPID_STATUSTEXTCHANGE, &dispparams); - VariantClear(&arg); - - if(This->doc_host->frame) - IOleInPlaceFrame_SetStatusText(This->doc_host->frame, str); -} - -static HRESULT set_dochost_url(DocHost *This, const WCHAR *url) -{ - WCHAR *new_url; - - if(url) { - new_url = heap_strdupW(url); - if(!new_url) - return E_OUTOFMEMORY; - }else { - new_url = NULL; - } - - heap_free(This->url); - This->url = new_url; - - This->container_vtbl->SetURL(This, This->url); - return S_OK; -} - -#define BINDSC_THIS(iface) DEFINE_THIS(BindStatusCallback, BindStatusCallback, iface) - -static HRESULT WINAPI BindStatusCallback_QueryInterface(IBindStatusCallback *iface, - REFIID riid, void **ppv) -{ - BindStatusCallback *This = BINDSC_THIS(iface); - - *ppv = NULL; - - if(IsEqualGUID(&IID_IUnknown, riid)) { - TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv); - *ppv = BINDSC(This); - }else if(IsEqualGUID(&IID_IBindStatusCallback, riid)) { - TRACE("(%p)->(IID_IBindStatusCallback %p)\n", This, ppv); - *ppv = BINDSC(This); - }else if(IsEqualGUID(&IID_IHttpNegotiate, riid)) { - TRACE("(%p)->(IID_IHttpNegotiate %p)\n", This, ppv); - *ppv = HTTPNEG(This); - } - - if(*ppv) { - IBindStatusCallback_AddRef(BINDSC(This)); - return S_OK; - } - - WARN("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv); - return E_NOINTERFACE; -} - -static ULONG WINAPI BindStatusCallback_AddRef(IBindStatusCallback *iface) -{ - BindStatusCallback *This = BINDSC_THIS(iface); - LONG ref = InterlockedIncrement(&This->ref); - - TRACE("(%p) ref=%d\n", This, ref); - - return ref; -} - -static ULONG WINAPI BindStatusCallback_Release(IBindStatusCallback *iface) -{ - BindStatusCallback *This = BINDSC_THIS(iface); - LONG ref = InterlockedDecrement(&This->ref); - - TRACE("(%p) ref=%d\n", This, ref); - - if(!ref) { - if(This->doc_host) - IOleClientSite_Release(CLIENTSITE(This->doc_host)); - if(This->post_data) - GlobalFree(This->post_data); - SysFreeString(This->headers); - heap_free(This->url); - heap_free(This); - } - - return ref; -} - -static HRESULT WINAPI BindStatusCallback_OnStartBinding(IBindStatusCallback *iface, - DWORD dwReserved, IBinding *pbind) -{ - BindStatusCallback *This = BINDSC_THIS(iface); - - TRACE("(%p)->(%d %p)\n", This, dwReserved, pbind); - - return S_OK; -} - -static HRESULT WINAPI BindStatusCallback_GetPriority(IBindStatusCallback *iface, - LONG *pnPriority) -{ - BindStatusCallback *This = BINDSC_THIS(iface); - FIXME("(%p)->(%p)\n", This, pnPriority); - return E_NOTIMPL; -} - -static HRESULT WINAPI BindStatusCallback_OnLowResource(IBindStatusCallback *iface, - DWORD reserved) -{ - BindStatusCallback *This = BINDSC_THIS(iface); - FIXME("(%p)->(%d)\n", This, reserved); - return E_NOTIMPL; -} - -static HRESULT WINAPI BindStatusCallback_OnProgress(IBindStatusCallback *iface, - ULONG ulProgress, ULONG ulProgressMax, ULONG ulStatusCode, LPCWSTR szStatusText) -{ - BindStatusCallback *This = BINDSC_THIS(iface); - - TRACE("(%p)->(%d %d %d %s)\n", This, ulProgress, ulProgressMax, ulStatusCode, - debugstr_w(szStatusText)); - - switch(ulStatusCode) { - case BINDSTATUS_REDIRECTING: - return set_dochost_url(This->doc_host, szStatusText); - case BINDSTATUS_BEGINDOWNLOADDATA: - set_status_text(This, szStatusText); /* FIXME: "Start downloading from site: %s" */ - return S_OK; - case BINDSTATUS_ENDDOWNLOADDATA: - set_status_text(This, szStatusText); /* FIXME: "Downloading from site: %s" */ - return S_OK; - case BINDSTATUS_CLASSIDAVAILABLE: - case BINDSTATUS_MIMETYPEAVAILABLE: - case BINDSTATUS_BEGINSYNCOPERATION: - case BINDSTATUS_ENDSYNCOPERATION: - return S_OK; - default: - FIXME("status code %u\n", ulStatusCode); - } - - return S_OK; -} - -static HRESULT WINAPI BindStatusCallback_OnStopBinding(IBindStatusCallback *iface, - HRESULT hresult, LPCWSTR szError) -{ - BindStatusCallback *This = BINDSC_THIS(iface); - - TRACE("(%p)->(%08x %s)\n", This, hresult, debugstr_w(szError)); - - set_status_text(This, emptyW); - - if(This->doc_host) { - IOleClientSite_Release(CLIENTSITE(This->doc_host)); - This->doc_host = NULL; - } - - return S_OK; -} - -static HRESULT WINAPI BindStatusCallback_GetBindInfo(IBindStatusCallback *iface, - DWORD *grfBINDF, BINDINFO *pbindinfo) -{ - BindStatusCallback *This = BINDSC_THIS(iface); - - TRACE("(%p)->(%p %p)\n", This, grfBINDF, pbindinfo); - - *grfBINDF = BINDF_ASYNCHRONOUS; - - if(This->post_data) { - pbindinfo->dwBindVerb = BINDVERB_POST; - - pbindinfo->stgmedData.tymed = TYMED_HGLOBAL; - pbindinfo->stgmedData.u.hGlobal = This->post_data; - pbindinfo->cbstgmedData = This->post_data_len; - pbindinfo->stgmedData.pUnkForRelease = (IUnknown*)BINDSC(This); - IBindStatusCallback_AddRef(BINDSC(This)); - } - - return S_OK; -} - -static HRESULT WINAPI BindStatusCallback_OnDataAvailable(IBindStatusCallback *iface, - DWORD grfBSCF, DWORD dwSize, FORMATETC *pformatetc, STGMEDIUM *pstgmed) -{ - BindStatusCallback *This = BINDSC_THIS(iface); - FIXME("(%p)->(%08x %d %p %p)\n", This, grfBSCF, dwSize, pformatetc, pstgmed); - return E_NOTIMPL; -} - -static HRESULT WINAPI BindStatusCallback_OnObjectAvailable(IBindStatusCallback *iface, - REFIID riid, IUnknown *punk) -{ - BindStatusCallback *This = BINDSC_THIS(iface); - - TRACE("(%p)->(%s %p)\n", This, debugstr_guid(riid), punk); - - return dochost_object_available(This->doc_host, punk); -} - -#undef BSC_THIS - -static const IBindStatusCallbackVtbl BindStatusCallbackVtbl = { - BindStatusCallback_QueryInterface, - BindStatusCallback_AddRef, - BindStatusCallback_Release, - BindStatusCallback_OnStartBinding, - BindStatusCallback_GetPriority, - BindStatusCallback_OnLowResource, - BindStatusCallback_OnProgress, - BindStatusCallback_OnStopBinding, - BindStatusCallback_GetBindInfo, - BindStatusCallback_OnDataAvailable, - BindStatusCallback_OnObjectAvailable -}; - -#define HTTPNEG_THIS(iface) DEFINE_THIS(BindStatusCallback, HttpNegotiate, iface) - -static HRESULT WINAPI HttpNegotiate_QueryInterface(IHttpNegotiate *iface, - REFIID riid, void **ppv) -{ - BindStatusCallback *This = HTTPNEG_THIS(iface); - return IBindStatusCallback_QueryInterface(BINDSC(This), riid, ppv); -} - -static ULONG WINAPI HttpNegotiate_AddRef(IHttpNegotiate *iface) -{ - BindStatusCallback *This = HTTPNEG_THIS(iface); - return IBindStatusCallback_AddRef(BINDSC(This)); -} - -static ULONG WINAPI HttpNegotiate_Release(IHttpNegotiate *iface) -{ - BindStatusCallback *This = HTTPNEG_THIS(iface); - return IBindStatusCallback_Release(BINDSC(This)); -} - -static HRESULT WINAPI HttpNegotiate_BeginningTransaction(IHttpNegotiate *iface, - LPCWSTR szURL, LPCWSTR szHeaders, DWORD dwReserved, LPWSTR *pszAdditionalHeaders) -{ - BindStatusCallback *This = HTTPNEG_THIS(iface); - - TRACE("(%p)->(%s %s %d %p)\n", This, debugstr_w(szURL), debugstr_w(szHeaders), - dwReserved, pszAdditionalHeaders); - - if(This->headers) { - int size = (strlenW(This->headers)+1)*sizeof(WCHAR); - *pszAdditionalHeaders = CoTaskMemAlloc(size); - memcpy(*pszAdditionalHeaders, This->headers, size); - } - - return S_OK; -} - -static HRESULT WINAPI HttpNegotiate_OnResponse(IHttpNegotiate *iface, - DWORD dwResponseCode, LPCWSTR szResponseHeaders, LPCWSTR szRequestHeaders, - LPWSTR *pszAdditionalRequestHeaders) -{ - BindStatusCallback *This = HTTPNEG_THIS(iface); - TRACE("(%p)->(%d %s %s %p)\n", This, dwResponseCode, debugstr_w(szResponseHeaders), - debugstr_w(szRequestHeaders), pszAdditionalRequestHeaders); - return S_OK; -} - -#undef HTTPNEG_THIS - -static const IHttpNegotiateVtbl HttpNegotiateVtbl = { - HttpNegotiate_QueryInterface, - HttpNegotiate_AddRef, - HttpNegotiate_Release, - HttpNegotiate_BeginningTransaction, - HttpNegotiate_OnResponse -}; - -static BindStatusCallback *create_callback(DocHost *doc_host, LPCWSTR url, PBYTE post_data, - ULONG post_data_len, LPCWSTR headers) -{ - BindStatusCallback *ret = heap_alloc(sizeof(BindStatusCallback)); - - ret->lpBindStatusCallbackVtbl = &BindStatusCallbackVtbl; - ret->lpHttpNegotiateVtbl = &HttpNegotiateVtbl; - - ret->ref = 1; - ret->url = heap_strdupW(url); - ret->post_data = NULL; - ret->post_data_len = post_data_len; - ret->headers = headers ? SysAllocString(headers) : NULL; - - ret->doc_host = doc_host; - IOleClientSite_AddRef(CLIENTSITE(doc_host)); - - if(post_data) { - ret->post_data = GlobalAlloc(0, post_data_len); - memcpy(ret->post_data, post_data, post_data_len); - } - - return ret; -} - -static void on_before_navigate2(DocHost *This, LPCWSTR url, SAFEARRAY *post_data, LPWSTR headers, VARIANT_BOOL *cancel) -{ - VARIANT var_url, var_flags, var_frame_name, var_post_data, var_post_data2, var_headers; - DISPPARAMS dispparams; - VARIANTARG params[7]; - - dispparams.cArgs = 7; - dispparams.cNamedArgs = 0; - dispparams.rgdispidNamedArgs = NULL; - dispparams.rgvarg = params; - - This->busy = VARIANT_TRUE; - - V_VT(params) = VT_BOOL|VT_BYREF; - V_BOOLREF(params) = cancel; - - V_VT(params+1) = (VT_BYREF|VT_VARIANT); - V_VARIANTREF(params+1) = &var_headers; - V_VT(&var_headers) = VT_BSTR; - V_BSTR(&var_headers) = headers; - - V_VT(params+2) = (VT_BYREF|VT_VARIANT); - V_VARIANTREF(params+2) = &var_post_data2; - V_VT(&var_post_data2) = (VT_BYREF|VT_VARIANT); - V_VARIANTREF(&var_post_data2) = &var_post_data; - - if(post_data) { - V_VT(&var_post_data) = VT_UI1|VT_ARRAY; - V_ARRAY(&var_post_data) = post_data; - }else { - V_VT(&var_post_data) = VT_EMPTY; - } - - V_VT(params+3) = (VT_BYREF|VT_VARIANT); - V_VARIANTREF(params+3) = &var_frame_name; - V_VT(&var_frame_name) = VT_BSTR; - V_BSTR(&var_frame_name) = NULL; - - V_VT(params+4) = (VT_BYREF|VT_VARIANT); - V_VARIANTREF(params+4) = &var_flags; - V_VT(&var_flags) = VT_I4; - V_I4(&var_flags) = 0; - - V_VT(params+5) = (VT_BYREF|VT_VARIANT); - V_VARIANTREF(params+5) = &var_url; - V_VT(&var_url) = VT_BSTR; - V_BSTR(&var_url) = SysAllocString(url); - - V_VT(params+6) = (VT_DISPATCH); - V_DISPATCH(params+6) = This->disp; - - call_sink(This->cps.wbe2, DISPID_BEFORENAVIGATE2, &dispparams); - - SysFreeString(V_BSTR(&var_url)); -} - -/* FIXME: urlmon should handle it */ -static BOOL try_application_url(LPCWSTR url) -{ - SHELLEXECUTEINFOW exec_info; - WCHAR app[64]; - HKEY hkey; - DWORD res, type; - HRESULT hres; - - static const WCHAR wszURLProtocol[] = {'U','R','L',' ','P','r','o','t','o','c','o','l',0}; - - hres = CoInternetParseUrl(url, PARSE_SCHEMA, 0, app, sizeof(app)/sizeof(WCHAR), NULL, 0); - if(FAILED(hres)) - return FALSE; - - res = RegOpenKeyW(HKEY_CLASSES_ROOT, app, &hkey); - if(res != ERROR_SUCCESS) - return FALSE; - - res = RegQueryValueExW(hkey, wszURLProtocol, NULL, &type, NULL, NULL); - RegCloseKey(hkey); - if(res != ERROR_SUCCESS || type != REG_SZ) - return FALSE; - - TRACE("openning application %s\n", debugstr_w(app)); - - memset(&exec_info, 0, sizeof(exec_info)); - exec_info.cbSize = sizeof(exec_info); - exec_info.lpFile = url; - exec_info.nShow = SW_SHOW; - - return ShellExecuteExW(&exec_info); -} - -static HRESULT create_moniker(LPCWSTR url, IMoniker **mon) -{ - WCHAR new_url[INTERNET_MAX_URL_LENGTH]; - DWORD size; - HRESULT hres; - - if(PathIsURLW(url)) - return CreateURLMoniker(NULL, url, mon); - - if(url[1] == ':') { - size = sizeof(new_url); - hres = UrlCreateFromPathW(url, new_url, &size, 0); - if(FAILED(hres)) { - WARN("UrlCreateFromPathW failed: %08x\n", hres); - return hres; - } - }else { - size = sizeof(new_url)/sizeof(WCHAR); - hres = UrlApplySchemeW(url, new_url, &size, URL_APPLY_GUESSSCHEME); - TRACE("got %s\n", debugstr_w(new_url)); - if(FAILED(hres)) { - WARN("UrlApplyScheme failed: %08x\n", hres); - return hres; - } - } - - return CreateURLMoniker(NULL, new_url, mon); -} - -static HRESULT bind_to_object(DocHost *This, IMoniker *mon, LPCWSTR url, IBindCtx *bindctx, - IBindStatusCallback *callback) -{ - IUnknown *unk = NULL; - WCHAR *display_name; - HRESULT hres; - - if(mon) { - IMoniker_AddRef(mon); - }else { - hres = create_moniker(url, &mon); - if(FAILED(hres)) - return hres; - } - - hres = IMoniker_GetDisplayName(mon, 0, NULL, &display_name); - if(FAILED(hres)) { - FIXME("GetDisplayName failed: %08x\n", hres); - return hres; - } - - hres = set_dochost_url(This, display_name); - CoTaskMemFree(display_name); - if(FAILED(hres)) - return hres; - - IBindCtx_RegisterObjectParam(bindctx, (LPOLESTR)SZ_HTML_CLIENTSITE_OBJECTPARAM, - (IUnknown*)CLIENTSITE(This)); - - hres = IMoniker_BindToObject(mon, bindctx, NULL, &IID_IUnknown, (void**)&unk); - if(SUCCEEDED(hres)) { - hres = S_OK; - if(unk) - IUnknown_Release(unk); - }else if(try_application_url(url)) { - hres = S_OK; - }else { - FIXME("BindToObject failed: %08x\n", hres); - } - - IMoniker_Release(mon); - return S_OK; -} - -static void html_window_navigate(DocHost *This, IHTMLPrivateWindow *window, BSTR url, BSTR headers, SAFEARRAY *post_data) -{ - VARIANT headers_var, post_data_var; - BSTR empty_str; - HRESULT hres; - - hres = set_dochost_url(This, url); - if(FAILED(hres)) - return; - - empty_str = SysAllocStringLen(NULL, 0); - - if(headers) { - V_VT(&headers_var) = VT_BSTR; - V_BSTR(&headers_var) = headers; - }else { - V_VT(&headers_var) = VT_EMPTY; - } - - if(post_data) { - V_VT(&post_data_var) = VT_UI1|VT_ARRAY; - V_ARRAY(&post_data_var) = post_data; - }else { - V_VT(&post_data_var) = VT_EMPTY; - } - - set_doc_state(This, READYSTATE_LOADING); - hres = IHTMLPrivateWindow_SuperNavigate(window, url, empty_str, NULL, NULL, &post_data_var, &headers_var, 0); - SysFreeString(empty_str); - if(FAILED(hres)) - WARN("SuprtNavigate failed: %08x\n", hres); -} - -typedef struct { - task_header_t header; - BSTR url; - BSTR headers; - SAFEARRAY *post_data; - BOOL async_notif; -} task_doc_navigate_t; - -static HRESULT free_doc_navigate_task(task_doc_navigate_t *task, BOOL free_task) -{ - SysFreeString(task->url); - SysFreeString(task->headers); - if(task->post_data) - SafeArrayDestroy(task->post_data); - if(free_task) - heap_free(task); - return E_OUTOFMEMORY; -} - -static void doc_navigate_proc(DocHost *This, task_header_t *t) -{ - task_doc_navigate_t *task = (task_doc_navigate_t*)t; - IHTMLPrivateWindow *priv_window; - HRESULT hres; - - if(!This->doc_navigate) - return; - - if(task->async_notif) { - VARIANT_BOOL cancel = VARIANT_FALSE; - on_before_navigate2(This, task->url, task->post_data, task->headers, &cancel); - if(cancel) { - TRACE("Navigation calnceled\n"); - free_doc_navigate_task(task, FALSE); - return; - } - } - - hres = IUnknown_QueryInterface(This->doc_navigate, &IID_IHTMLPrivateWindow, (void**)&priv_window); - if(SUCCEEDED(hres)) { - html_window_navigate(This, priv_window, task->url, task->headers, task->post_data); - IHTMLPrivateWindow_Release(priv_window); - }else { - WARN("Could not get IHTMLPrivateWindow iface: %08x\n", hres); - } - - free_doc_navigate_task(task, FALSE); -} - -static HRESULT async_doc_navigate(DocHost *This, LPCWSTR url, LPCWSTR headers, PBYTE post_data, ULONG post_data_size, - BOOL async_notif) -{ - task_doc_navigate_t *task; - - task = heap_alloc_zero(sizeof(*task)); - if(!task) - return E_OUTOFMEMORY; - - task->url = SysAllocString(url); - if(!task->url) - return free_doc_navigate_task(task, TRUE); - - if(headers) { - task->headers = SysAllocString(headers); - if(!task->headers) - return free_doc_navigate_task(task, TRUE); - } - - if(post_data) { - task->post_data = SafeArrayCreateVector(VT_UI1, 0, post_data_size); - if(!task->post_data) - return free_doc_navigate_task(task, TRUE); - memcpy(task->post_data->pvData, post_data, post_data_size); - } - - if(!async_notif) { - VARIANT_BOOL cancel = VARIANT_FALSE; - - on_before_navigate2(This, task->url, task->post_data, task->headers, &cancel); - if(cancel) { - TRACE("Navigation calnceled\n"); - free_doc_navigate_task(task, TRUE); - return S_OK; - } - } - - task->async_notif = async_notif; - push_dochost_task(This, &task->header, doc_navigate_proc, FALSE); - return S_OK; -} - -static HRESULT navigate_bsc(DocHost *This, BindStatusCallback *bsc, IMoniker *mon) -{ - VARIANT_BOOL cancel = VARIANT_FALSE; - SAFEARRAY *post_data = NULL; - IBindCtx *bindctx; - HRESULT hres; - - set_doc_state(This, READYSTATE_LOADING); - - if(bsc->post_data) { - post_data = SafeArrayCreateVector(VT_UI1, 0, bsc->post_data_len); - memcpy(post_data->pvData, post_data, bsc->post_data_len); - } - - on_before_navigate2(This, bsc->url, post_data, bsc->headers, &cancel); - if(post_data) - SafeArrayDestroy(post_data); - if(cancel) { - FIXME("Navigation canceled\n"); - return S_OK; - } - - if(This->document) - deactivate_document(This); - - CreateAsyncBindCtx(0, BINDSC(bsc), 0, &bindctx); - - if(This->frame) - IOleInPlaceFrame_EnableModeless(This->frame, FALSE); - - hres = bind_to_object(This, mon, bsc->url, bindctx, BINDSC(bsc)); - - if(This->frame) - IOleInPlaceFrame_EnableModeless(This->frame, TRUE); - - IBindCtx_Release(bindctx); - - return hres; -} - -typedef struct { - task_header_t header; - BindStatusCallback *bsc; -} task_navigate_bsc_t; - -static void navigate_bsc_proc(DocHost *This, task_header_t *t) -{ - task_navigate_bsc_t *task = (task_navigate_bsc_t*)t; - - if(!This->hwnd) - create_doc_view_hwnd(This); - - navigate_bsc(This, task->bsc, NULL); - - IBindStatusCallback_Release(BINDSC(task->bsc)); -} - - -HRESULT navigate_url(DocHost *This, LPCWSTR url, const VARIANT *Flags, - const VARIANT *TargetFrameName, VARIANT *PostData, VARIANT *Headers) -{ - PBYTE post_data = NULL; - ULONG post_data_len = 0; - LPWSTR headers = NULL; - HRESULT hres = S_OK; - - TRACE("navigating to %s\n", debugstr_w(url)); - - if((Flags && V_VT(Flags) != VT_EMPTY) - || (TargetFrameName && V_VT(TargetFrameName) != VT_EMPTY)) - FIXME("Unsupported args (Flags %p:%d; TargetFrameName %p:%d)\n", - Flags, Flags ? V_VT(Flags) : -1, TargetFrameName, - TargetFrameName ? V_VT(TargetFrameName) : -1); - - 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; - } - - if(Headers && V_VT(Headers) == VT_BSTR) { - headers = V_BSTR(Headers); - TRACE("Headers: %s\n", debugstr_w(headers)); - } - - set_doc_state(This, READYSTATE_LOADING); - This->ready_state = READYSTATE_LOADING; - - if(This->doc_navigate) { - WCHAR new_url[INTERNET_MAX_URL_LENGTH]; - - if(PathIsURLW(url)) { - new_url[0] = 0; - }else { - DWORD size; - - size = sizeof(new_url)/sizeof(WCHAR); - 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; - } - } - - hres = async_doc_navigate(This, *new_url ? new_url : url, headers, post_data, - post_data_len, TRUE); - }else { - task_navigate_bsc_t *task; - - task = heap_alloc(sizeof(*task)); - task->bsc = create_callback(This, url, post_data, post_data_len, headers); - push_dochost_task(This, &task->header, navigate_bsc_proc, This->url == NULL); - } - - if(post_data) - SafeArrayUnaccessData(V_ARRAY(PostData)); - - return hres; -} - -static HRESULT navigate_hlink(DocHost *This, IMoniker *mon, IBindCtx *bindctx, - IBindStatusCallback *callback) -{ - IHttpNegotiate *http_negotiate; - BindStatusCallback *bsc; - PBYTE post_data = NULL; - ULONG post_data_len = 0; - LPWSTR headers = NULL, url; - BINDINFO bindinfo; - DWORD bindf = 0; - HRESULT hres; - - hres = IMoniker_GetDisplayName(mon, 0, NULL, &url); - if(FAILED(hres)) - FIXME("GetDisplayName failed: %08x\n", hres); - - hres = IBindStatusCallback_QueryInterface(callback, &IID_IHttpNegotiate, - (void**)&http_negotiate); - if(SUCCEEDED(hres)) { - static const WCHAR null_string[] = {0}; - - IHttpNegotiate_BeginningTransaction(http_negotiate, null_string, null_string, 0, - &headers); - IHttpNegotiate_Release(http_negotiate); - } - - memset(&bindinfo, 0, sizeof(bindinfo)); - bindinfo.cbSize = sizeof(bindinfo); - - hres = IBindStatusCallback_GetBindInfo(callback, &bindf, &bindinfo); - dump_BINDINFO(&bindinfo); - if(bindinfo.dwBindVerb == BINDVERB_POST) { - post_data_len = bindinfo.cbstgmedData; - if(post_data_len) - post_data = bindinfo.stgmedData.u.hGlobal; - } - - if(This->doc_navigate) { - hres = async_doc_navigate(This, url, headers, post_data, post_data_len, FALSE); - }else { - bsc = create_callback(This, url, post_data, post_data_len, headers); - hres = navigate_bsc(This, bsc, mon); - IBindStatusCallback_Release(BINDSC(bsc)); - } - - CoTaskMemFree(url); - CoTaskMemFree(headers); - ReleaseBindInfo(&bindinfo); - - return hres; -} - -HRESULT go_home(DocHost *This) -{ - HKEY hkey; - DWORD res, type, size; - WCHAR wszPageName[MAX_PATH]; - static const WCHAR wszAboutBlank[] = {'a','b','o','u','t',':','b','l','a','n','k',0}; - static const WCHAR wszStartPage[] = {'S','t','a','r','t',' ','P','a','g','e',0}; - static const WCHAR wszSubKey[] = {'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','\\', - 'M','a','i','n',0}; - - res = RegOpenKeyW(HKEY_CURRENT_USER, wszSubKey, &hkey); - if (res != ERROR_SUCCESS) - return navigate_url(This, wszAboutBlank, NULL, NULL, NULL, NULL); - - size = sizeof(wszPageName); - res = RegQueryValueExW(hkey, wszStartPage, NULL, &type, (LPBYTE)wszPageName, &size); - RegCloseKey(hkey); - if (res != ERROR_SUCCESS || type != REG_SZ) - return navigate_url(This, wszAboutBlank, NULL, NULL, NULL, NULL); - - return navigate_url(This, wszPageName, NULL, NULL, NULL, NULL); -} - -#define HLINKFRAME_THIS(iface) DEFINE_THIS(HlinkFrame, IHlinkFrame, iface) - -static HRESULT WINAPI HlinkFrame_QueryInterface(IHlinkFrame *iface, REFIID riid, void **ppv) -{ - HlinkFrame *This = HLINKFRAME_THIS(iface); - return IUnknown_QueryInterface(This->outer, riid, ppv); -} - -static ULONG WINAPI HlinkFrame_AddRef(IHlinkFrame *iface) -{ - HlinkFrame *This = HLINKFRAME_THIS(iface); - return IUnknown_AddRef(This->outer); -} - -static ULONG WINAPI HlinkFrame_Release(IHlinkFrame *iface) -{ - HlinkFrame *This = HLINKFRAME_THIS(iface); - return IUnknown_Release(This->outer); -} - -static HRESULT WINAPI HlinkFrame_SetBrowseContext(IHlinkFrame *iface, - IHlinkBrowseContext *pihlbc) -{ - HlinkFrame *This = HLINKFRAME_THIS(iface); - FIXME("(%p)->(%p)\n", This, pihlbc); - return E_NOTIMPL; -} - -static HRESULT WINAPI HlinkFrame_GetBrowseContext(IHlinkFrame *iface, - IHlinkBrowseContext **ppihlbc) -{ - HlinkFrame *This = HLINKFRAME_THIS(iface); - FIXME("(%p)->(%p)\n", This, ppihlbc); - return E_NOTIMPL; -} - -static HRESULT WINAPI HlinkFrame_Navigate(IHlinkFrame *iface, DWORD grfHLNF, LPBC pbc, - IBindStatusCallback *pibsc, IHlink *pihlNavigate) -{ - HlinkFrame *This = HLINKFRAME_THIS(iface); - IMoniker *mon; - LPWSTR location = NULL; - - TRACE("(%p)->(%08x %p %p %p)\n", This, grfHLNF, pbc, pibsc, pihlNavigate); - - if(grfHLNF) - FIXME("unsupported grfHLNF=%08x\n", grfHLNF); - - /* Windows calls GetTargetFrameName here. */ - - IHlink_GetMonikerReference(pihlNavigate, 1, &mon, &location); - - if(location) { - FIXME("location = %s\n", debugstr_w(location)); - CoTaskMemFree(location); - } - - /* Windows calls GetHlinkSite here */ - - if(grfHLNF & HLNF_OPENINNEWWINDOW) { - FIXME("Not supported HLNF_OPENINNEWWINDOW\n"); - return E_NOTIMPL; - } - - 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) -{ - 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; -} - -static HRESULT WINAPI HlinkFrame_UpdateHlink(IHlinkFrame *iface, ULONG uHLID, - IMoniker *pimkTarget, LPCWSTR pwzLocation, LPCWSTR pwzFriendlyName) -{ - HlinkFrame *This = HLINKFRAME_THIS(iface); - FIXME("(%p)->(%u %p %s %s)\n", This, uHLID, pimkTarget, debugstr_w(pwzLocation), - debugstr_w(pwzFriendlyName)); - return E_NOTIMPL; -} - -#undef HLINKFRAME_THIS - -static const IHlinkFrameVtbl HlinkFrameVtbl = { - HlinkFrame_QueryInterface, - HlinkFrame_AddRef, - HlinkFrame_Release, - HlinkFrame_SetBrowseContext, - HlinkFrame_GetBrowseContext, - HlinkFrame_Navigate, - HlinkFrame_OnNavigate, - HlinkFrame_UpdateHlink -}; - -#define TARGETFRAME2_THIS(iface) DEFINE_THIS(HlinkFrame, ITargetFrame2, iface) - -static HRESULT WINAPI TargetFrame2_QueryInterface(ITargetFrame2 *iface, REFIID riid, void **ppv) -{ - HlinkFrame *This = TARGETFRAME2_THIS(iface); - return IUnknown_QueryInterface(This->outer, riid, ppv); -} - -static ULONG WINAPI TargetFrame2_AddRef(ITargetFrame2 *iface) -{ - HlinkFrame *This = TARGETFRAME2_THIS(iface); - return IUnknown_AddRef(This->outer); -} - -static ULONG WINAPI TargetFrame2_Release(ITargetFrame2 *iface) -{ - HlinkFrame *This = TARGETFRAME2_THIS(iface); - return IUnknown_Release(This->outer); -} - -static HRESULT WINAPI TargetFrame2_SetFrameName(ITargetFrame2 *iface, LPCWSTR pszFrameName) -{ - 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) -{ - HlinkFrame *This = TARGETFRAME2_THIS(iface); - FIXME("(%p)->(%p)\n", This, ppszFrameName); - return E_NOTIMPL; -} - -static HRESULT WINAPI TargetFrame2_GetParentFrame(ITargetFrame2 *iface, IUnknown **ppunkParent) -{ - HlinkFrame *This = TARGETFRAME2_THIS(iface); - FIXME("(%p)->(%p)\n", This, ppunkParent); - return E_NOTIMPL; -} - -static HRESULT WINAPI TargetFrame2_SetFrameSrc(ITargetFrame2 *iface, LPCWSTR pszFrameSrc) -{ - 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) -{ - HlinkFrame *This = TARGETFRAME2_THIS(iface); - FIXME("(%p)->()\n", This); - return E_NOTIMPL; -} - -static HRESULT WINAPI TargetFrame2_GetFramesContainer(ITargetFrame2 *iface, IOleContainer **ppContainer) -{ - HlinkFrame *This = TARGETFRAME2_THIS(iface); - FIXME("(%p)->(%p)\n", This, ppContainer); - return E_NOTIMPL; -} - -static HRESULT WINAPI TargetFrame2_SetFrameOptions(ITargetFrame2 *iface, DWORD dwFlags) -{ - HlinkFrame *This = TARGETFRAME2_THIS(iface); - FIXME("(%p)->(%x)\n", This, dwFlags); - return E_NOTIMPL; -} - -static HRESULT WINAPI TargetFrame2_GetFrameOptions(ITargetFrame2 *iface, DWORD *pdwFlags) -{ - 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) -{ - 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) -{ - 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) -{ - 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) -{ - HlinkFrame *This = TARGETFRAME2_THIS(iface); - FIXME("(%p)->(%s %p)\n", This, debugstr_w(pszTargetName), ppszTargetAlias); - return E_NOTIMPL; -} - -#undef TARGETFRAME2_THIS - -static const ITargetFrame2Vtbl TargetFrame2Vtbl = { - TargetFrame2_QueryInterface, - TargetFrame2_AddRef, - TargetFrame2_Release, - TargetFrame2_SetFrameName, - TargetFrame2_GetFrameName, - TargetFrame2_GetParentFrame, - TargetFrame2_SetFrameSrc, - TargetFrame2_GetFrameSrc, - TargetFrame2_GetFramesContainer, - TargetFrame2_SetFrameOptions, - TargetFrame2_GetFrameOptions, - TargetFrame2_SetFrameMargins, - TargetFrame2_GetFrameMargins, - TargetFrame2_FindFrame, - TargetFrame2_GetTargetAlias -}; - -BOOL HlinkFrame_QI(HlinkFrame *This, REFIID riid, void **ppv) -{ - if(IsEqualGUID(&IID_IHlinkFrame, riid)) { - TRACE("(%p)->(IID_IHlinkFrame %p)\n", This, ppv); - *ppv = HLINKFRAME(This); - }else if(IsEqualGUID(&IID_ITargetFrame2, riid)) { - TRACE("(%p)->(IID_ITargetFrame2 %p)\n", This, ppv); - *ppv = TARGETFRAME2(This); - }else { - return FALSE; - } - - IUnknown_AddRef((IUnknown*)*ppv); - return TRUE; -} - -void HlinkFrame_Init(HlinkFrame *This, IUnknown *outer, DocHost *doc_host) -{ - This->lpIHlinkFrameVtbl = &HlinkFrameVtbl; - This->lpITargetFrame2Vtbl = &TargetFrame2Vtbl; - - This->outer = outer; - This->doc_host = doc_host; -} diff --git a/reactos/dll/win32/shdocvw/oleobject.c b/reactos/dll/win32/shdocvw/oleobject.c deleted file mode 100644 index 906b62e426b..00000000000 --- a/reactos/dll/win32/shdocvw/oleobject.c +++ /dev/null @@ -1,972 +0,0 @@ -/* - * Implementation of IOleObject interfaces for WebBrowser control - * - * - IOleObject - * - IOleInPlaceObject - * - IOleControl - * - * Copyright 2001 John R. Sheets (for CodeWeavers) - * Copyright 2005 Jacek Caban - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA - */ - -//#include -#include -#include "shdocvw.h" -//#include "htiframe.h" -#include -#include - -WINE_DEFAULT_DEBUG_CHANNEL(shdocvw); - -/* shlwapi.dll */ -HWND WINAPI SHSetParentHwnd(HWND hWnd, HWND hWndParent); - -static ATOM shell_embedding_atom = 0; - -static LRESULT resize_window(WebBrowser *This, LONG width, LONG height) -{ - if(This->doc_host.hwnd) - SetWindowPos(This->doc_host.hwnd, NULL, 0, 0, width, height, - SWP_NOZORDER | SWP_NOACTIVATE); - - return 0; -} - -static LRESULT WINAPI shell_embedding_proc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) -{ - WebBrowser *This; - - static const WCHAR wszTHIS[] = {'T','H','I','S',0}; - - if(msg == WM_CREATE) { - This = *(WebBrowser**)lParam; - SetPropW(hwnd, wszTHIS, This); - }else { - This = GetPropW(hwnd, wszTHIS); - } - - switch(msg) { - case WM_SIZE: - return resize_window(This, LOWORD(lParam), HIWORD(lParam)); - case WM_DOCHOSTTASK: - return process_dochost_task(&This->doc_host, lParam); - } - - return DefWindowProcW(hwnd, msg, wParam, lParam); -} - -static void create_shell_embedding_hwnd(WebBrowser *This) -{ - IOleInPlaceSite *inplace; - HWND parent = NULL; - HRESULT hres; - - static const WCHAR wszShellEmbedding[] = - {'S','h','e','l','l',' ','E','m','b','e','d','d','i','n','g',0}; - - if(!shell_embedding_atom) { - static WNDCLASSEXW wndclass = { - sizeof(wndclass), - CS_DBLCLKS, - shell_embedding_proc, - 0, 0 /* native uses 8 */, NULL, NULL, NULL, - (HBRUSH)(COLOR_WINDOW + 1), NULL, - wszShellEmbedding, - NULL - }; - wndclass.hInstance = shdocvw_hinstance; - - RegisterClassExW(&wndclass); - } - - hres = IOleClientSite_QueryInterface(This->client, &IID_IOleInPlaceSite, (void**)&inplace); - if(SUCCEEDED(hres)) { - IOleInPlaceSite_GetWindow(inplace, &parent); - IOleInPlaceSite_Release(inplace); - } - - This->doc_host.frame_hwnd = This->shell_embedding_hwnd = CreateWindowExW( - WS_EX_WINDOWEDGE, - wszShellEmbedding, wszShellEmbedding, - WS_CLIPSIBLINGS | WS_CLIPCHILDREN - | (parent ? WS_CHILD | WS_TABSTOP : WS_POPUP | WS_MAXIMIZEBOX), - 0, 0, 0, 0, parent, - NULL, shdocvw_hinstance, This); - - TRACE("parent=%p hwnd=%p\n", parent, This->shell_embedding_hwnd); -} - -static HRESULT activate_inplace(WebBrowser *This, IOleClientSite *active_site) -{ - HWND parent_hwnd; - HRESULT hres; - - if(This->inplace) - return S_OK; - - if(!active_site) - return E_INVALIDARG; - - hres = IOleClientSite_QueryInterface(active_site, &IID_IOleInPlaceSite, - (void**)&This->inplace); - if(FAILED(hres)) { - WARN("Could not get IOleInPlaceSite\n"); - return hres; - } - - hres = IOleInPlaceSite_CanInPlaceActivate(This->inplace); - if(hres != S_OK) { - WARN("CanInPlaceActivate returned: %08x\n", hres); - IOleInPlaceSite_Release(This->inplace); - return E_FAIL; - } - - hres = IOleInPlaceSite_GetWindow(This->inplace, &parent_hwnd); - if(SUCCEEDED(hres)) - SHSetParentHwnd(This->shell_embedding_hwnd, parent_hwnd); - - IOleInPlaceSite_OnInPlaceActivate(This->inplace); - - This->frameinfo.cb = sizeof(OLEINPLACEFRAMEINFO); - IOleInPlaceSite_GetWindowContext(This->inplace, &This->doc_host.frame, &This->uiwindow, - &This->pos_rect, &This->clip_rect, - &This->frameinfo); - - SetWindowPos(This->shell_embedding_hwnd, NULL, - This->pos_rect.left, This->pos_rect.top, - This->pos_rect.right-This->pos_rect.left, - This->pos_rect.bottom-This->pos_rect.top, - SWP_NOZORDER | SWP_SHOWWINDOW); - - if(This->client) { - IOleContainer *container; - - IOleClientSite_ShowObject(This->client); - - hres = IOleClientSite_GetContainer(This->client, &container); - if(SUCCEEDED(hres)) { - if(This->container) - IOleContainer_Release(This->container); - This->container = container; - } - } - - if(This->doc_host.frame) - IOleInPlaceFrame_GetWindow(This->doc_host.frame, &This->frame_hwnd); - - return S_OK; -} - -static HRESULT activate_ui(WebBrowser *This, IOleClientSite *active_site) -{ - HRESULT hres; - - static const WCHAR wszitem[] = {'i','t','e','m',0}; - - if(This->inplace) - { - if(This->shell_embedding_hwnd) - ShowWindow(This->shell_embedding_hwnd, SW_SHOW); - return S_OK; - } - - hres = activate_inplace(This, active_site); - if(FAILED(hres)) - return hres; - - IOleInPlaceSite_OnUIActivate(This->inplace); - - if(This->doc_host.frame) - IOleInPlaceFrame_SetActiveObject(This->doc_host.frame, ACTIVEOBJ(This), wszitem); - if(This->uiwindow) - IOleInPlaceUIWindow_SetActiveObject(This->uiwindow, ACTIVEOBJ(This), wszitem); - - if(This->doc_host.frame) - IOleInPlaceFrame_SetMenu(This->doc_host.frame, NULL, NULL, This->shell_embedding_hwnd); - - SetFocus(This->shell_embedding_hwnd); - - return S_OK; -} - -static HRESULT get_client_disp_property(IOleClientSite *client, DISPID dispid, VARIANT *res) -{ - IDispatch *disp = NULL; - DISPPARAMS dispparams = {NULL, 0}; - HRESULT hres; - - VariantInit(res); - - if(!client) - return S_OK; - - hres = IOleClientSite_QueryInterface(client, &IID_IDispatch, (void**)&disp); - if(FAILED(hres)) { - TRACE("Could not get IDispatch\n"); - return hres; - } - - hres = IDispatch_Invoke(disp, dispid, &IID_NULL, LOCALE_SYSTEM_DEFAULT, - DISPATCH_PROPERTYGET, &dispparams, res, NULL, NULL); - - IDispatch_Release(disp); - - return hres; -} - -static HRESULT on_offlineconnected_change(WebBrowser *This) -{ - VARIANT offline; - - get_client_disp_property(This->client, DISPID_AMBIENT_OFFLINEIFNOTCONNECTED, &offline); - - if(V_VT(&offline) == VT_BOOL) - IWebBrowser2_put_Offline(WEBBROWSER2(This), V_BOOL(&offline)); - else if(V_VT(&offline) != VT_EMPTY) - WARN("wrong V_VT(silent) %d\n", V_VT(&offline)); - - return S_OK; -} - -static HRESULT on_silent_change(WebBrowser *This) -{ - VARIANT silent; - - get_client_disp_property(This->client, DISPID_AMBIENT_SILENT, &silent); - - if(V_VT(&silent) == VT_BOOL) - IWebBrowser2_put_Silent(WEBBROWSER2(This), V_BOOL(&silent)); - else if(V_VT(&silent) != VT_EMPTY) - WARN("wrong V_VT(silent) %d\n", V_VT(&silent)); - - return S_OK; -} - -static void release_client_site(WebBrowser *This) -{ - release_dochost_client(&This->doc_host); - - if(This->shell_embedding_hwnd) { - DestroyWindow(This->shell_embedding_hwnd); - This->shell_embedding_hwnd = NULL; - } - - if(This->inplace) { - IOleInPlaceSite_Release(This->inplace); - This->inplace = NULL; - } - - if(This->container) { - IOleContainer_Release(This->container); - This->container = NULL; - } - - if(This->uiwindow) { - IOleInPlaceUIWindow_Release(This->uiwindow); - This->uiwindow = NULL; - } - - if(This->client) { - IOleClientSite_Release(This->client); - This->client = NULL; - } -} - -/********************************************************************** - * Implement the IOleObject interface for the WebBrowser control - */ - -#define OLEOBJ_THIS(iface) DEFINE_THIS(WebBrowser, OleObject, iface) - -static HRESULT WINAPI OleObject_QueryInterface(IOleObject *iface, REFIID riid, void **ppv) -{ - WebBrowser *This = OLEOBJ_THIS(iface); - return IWebBrowser_QueryInterface(WEBBROWSER(This), riid, ppv); -} - -static ULONG WINAPI OleObject_AddRef(IOleObject *iface) -{ - WebBrowser *This = OLEOBJ_THIS(iface); - return IWebBrowser_AddRef(WEBBROWSER(This)); -} - -static ULONG WINAPI OleObject_Release(IOleObject *iface) -{ - WebBrowser *This = OLEOBJ_THIS(iface); - return IWebBrowser_Release(WEBBROWSER(This)); -} - -static HRESULT WINAPI OleObject_SetClientSite(IOleObject *iface, LPOLECLIENTSITE pClientSite) -{ - WebBrowser *This = OLEOBJ_THIS(iface); - IDocHostUIHandler *hostui; - IOleContainer *container; - IDispatch *disp; - HRESULT hres; - - TRACE("(%p)->(%p)\n", This, pClientSite); - - if(This->client == pClientSite) - return S_OK; - - release_client_site(This); - - if(!pClientSite) { - if(This->doc_host.document) - deactivate_document(&This->doc_host); - return S_OK; - } - - IOleClientSite_AddRef(pClientSite); - This->client = pClientSite; - - hres = IOleClientSite_QueryInterface(This->client, &IID_IDispatch, - (void**)&disp); - if(SUCCEEDED(hres)) - This->doc_host.client_disp = disp; - - hres = IOleClientSite_QueryInterface(This->client, &IID_IDocHostUIHandler, - (void**)&hostui); - if(SUCCEEDED(hres)) - This->doc_host.hostui = hostui; - - hres = IOleClientSite_GetContainer(This->client, &container); - if(SUCCEEDED(hres)) { - ITargetContainer *target_container; - - hres = IOleContainer_QueryInterface(container, &IID_ITargetContainer, - (void**)&target_container); - if(SUCCEEDED(hres)) { - FIXME("Unsupported ITargetContainer\n"); - ITargetContainer_Release(target_container); - } - - IOleContainer_Release(container); - } - - create_shell_embedding_hwnd(This); - - on_offlineconnected_change(This); - on_silent_change(This); - - return S_OK; -} - -static HRESULT WINAPI OleObject_GetClientSite(IOleObject *iface, LPOLECLIENTSITE *ppClientSite) -{ - WebBrowser *This = OLEOBJ_THIS(iface); - - TRACE("(%p)->(%p)\n", This, ppClientSite); - - if(!ppClientSite) - return E_INVALIDARG; - - if(This->client) - IOleClientSite_AddRef(This->client); - *ppClientSite = This->client; - - return S_OK; -} - -static HRESULT WINAPI OleObject_SetHostNames(IOleObject *iface, LPCOLESTR szContainerApp, - LPCOLESTR szContainerObj) -{ - WebBrowser *This = OLEOBJ_THIS(iface); - - TRACE("(%p)->(%s, %s)\n", This, debugstr_w(szContainerApp), debugstr_w(szContainerObj)); - - /* We have nothing to do here. */ - return S_OK; -} - -static HRESULT WINAPI OleObject_Close(IOleObject *iface, DWORD dwSaveOption) -{ - WebBrowser *This = OLEOBJ_THIS(iface); - FIXME("(%p)->(%d)\n", This, dwSaveOption); - return E_NOTIMPL; -} - -static HRESULT WINAPI OleObject_SetMoniker(IOleObject *iface, DWORD dwWhichMoniker, IMoniker* pmk) -{ - WebBrowser *This = OLEOBJ_THIS(iface); - FIXME("(%p)->(%d, %p)\n", This, dwWhichMoniker, pmk); - return E_NOTIMPL; -} - -static HRESULT WINAPI OleObject_GetMoniker(IOleObject *iface, DWORD dwAssign, - DWORD dwWhichMoniker, LPMONIKER *ppmk) -{ - WebBrowser *This = OLEOBJ_THIS(iface); - FIXME("(%p)->(%d, %d, %p)\n", This, dwAssign, dwWhichMoniker, ppmk); - return E_NOTIMPL; -} - -static HRESULT WINAPI OleObject_InitFromData(IOleObject *iface, LPDATAOBJECT pDataObject, - BOOL fCreation, DWORD dwReserved) -{ - WebBrowser *This = OLEOBJ_THIS(iface); - FIXME("(%p)->(%p, %d, %d)\n", This, pDataObject, fCreation, dwReserved); - return E_NOTIMPL; -} - -static HRESULT WINAPI OleObject_GetClipboardData(IOleObject *iface, DWORD dwReserved, - LPDATAOBJECT *ppDataObject) -{ - WebBrowser *This = OLEOBJ_THIS(iface); - FIXME("(%p)->(%d, %p)\n", This, dwReserved, ppDataObject); - return E_NOTIMPL; -} - -static HRESULT WINAPI OleObject_DoVerb(IOleObject *iface, LONG iVerb, struct tagMSG* lpmsg, - LPOLECLIENTSITE pActiveSite, LONG lindex, HWND hwndParent, LPCRECT lprcPosRect) -{ - WebBrowser *This = OLEOBJ_THIS(iface); - - TRACE("(%p)->(%d %p %p %d %p %p)\n", This, iVerb, lpmsg, pActiveSite, lindex, hwndParent, - lprcPosRect); - - switch (iVerb) - { - case OLEIVERB_SHOW: - TRACE("OLEIVERB_SHOW\n"); - return activate_ui(This, pActiveSite); - case OLEIVERB_UIACTIVATE: - TRACE("OLEIVERB_UIACTIVATE\n"); - return activate_ui(This, pActiveSite); - case OLEIVERB_INPLACEACTIVATE: - TRACE("OLEIVERB_INPLACEACTIVATE\n"); - return activate_inplace(This, pActiveSite); - case OLEIVERB_HIDE: - TRACE("OLEIVERB_HIDE\n"); - if(This->shell_embedding_hwnd) - ShowWindow(This->shell_embedding_hwnd, SW_HIDE); - return S_OK; - default: - FIXME("stub for %d\n", iVerb); - break; - } - - return E_NOTIMPL; -} - -static HRESULT WINAPI OleObject_EnumVerbs(IOleObject *iface, IEnumOLEVERB **ppEnumOleVerb) -{ - WebBrowser *This = OLEOBJ_THIS(iface); - TRACE("(%p)->(%p)\n", This, ppEnumOleVerb); - return OleRegEnumVerbs(&CLSID_WebBrowser, ppEnumOleVerb); -} - -static HRESULT WINAPI OleObject_Update(IOleObject *iface) -{ - WebBrowser *This = OLEOBJ_THIS(iface); - FIXME("(%p)\n", This); - return E_NOTIMPL; -} - -static HRESULT WINAPI OleObject_IsUpToDate(IOleObject *iface) -{ - WebBrowser *This = OLEOBJ_THIS(iface); - FIXME("(%p)\n", This); - return E_NOTIMPL; -} - -static HRESULT WINAPI OleObject_GetUserClassID(IOleObject *iface, CLSID* pClsid) -{ - WebBrowser *This = OLEOBJ_THIS(iface); - FIXME("(%p)->(%p)\n", This, pClsid); - return E_NOTIMPL; -} - -static HRESULT WINAPI OleObject_GetUserType(IOleObject *iface, DWORD dwFormOfType, - LPOLESTR* pszUserType) -{ - WebBrowser *This = OLEOBJ_THIS(iface); - TRACE("(%p, %d, %p)\n", This, dwFormOfType, pszUserType); - return OleRegGetUserType(&CLSID_WebBrowser, dwFormOfType, pszUserType); -} - -static HRESULT WINAPI OleObject_SetExtent(IOleObject *iface, DWORD dwDrawAspect, SIZEL *psizel) -{ - WebBrowser *This = OLEOBJ_THIS(iface); - - TRACE("(%p)->(%x %p)\n", This, dwDrawAspect, psizel); - - /* Tests show that dwDrawAspect is ignored */ - This->extent = *psizel; - return S_OK; -} - -static HRESULT WINAPI OleObject_GetExtent(IOleObject *iface, DWORD dwDrawAspect, SIZEL *psizel) -{ - WebBrowser *This = OLEOBJ_THIS(iface); - - TRACE("(%p)->(%x, %p)\n", This, dwDrawAspect, psizel); - - /* Tests show that dwDrawAspect is ignored */ - *psizel = This->extent; - return S_OK; -} - -static HRESULT WINAPI OleObject_Advise(IOleObject *iface, IAdviseSink *pAdvSink, - DWORD* pdwConnection) -{ - WebBrowser *This = OLEOBJ_THIS(iface); - FIXME("(%p)->(%p, %p)\n", This, pAdvSink, pdwConnection); - return E_NOTIMPL; -} - -static HRESULT WINAPI OleObject_Unadvise(IOleObject *iface, DWORD dwConnection) -{ - WebBrowser *This = OLEOBJ_THIS(iface); - FIXME("(%p)->(%d)\n", This, dwConnection); - return E_NOTIMPL; -} - -static HRESULT WINAPI OleObject_EnumAdvise(IOleObject *iface, IEnumSTATDATA **ppenumAdvise) -{ - WebBrowser *This = OLEOBJ_THIS(iface); - FIXME("(%p)->(%p)\n", This, ppenumAdvise); - return S_OK; -} - -static HRESULT WINAPI OleObject_GetMiscStatus(IOleObject *iface, DWORD dwAspect, DWORD *pdwStatus) -{ - WebBrowser *This = OLEOBJ_THIS(iface); - - TRACE("(%p)->(%x, %p)\n", This, dwAspect, pdwStatus); - - *pdwStatus = OLEMISC_SETCLIENTSITEFIRST|OLEMISC_ACTIVATEWHENVISIBLE|OLEMISC_INSIDEOUT - |OLEMISC_CANTLINKINSIDE|OLEMISC_RECOMPOSEONRESIZE; - - return S_OK; -} - -static HRESULT WINAPI OleObject_SetColorScheme(IOleObject *iface, LOGPALETTE* pLogpal) -{ - WebBrowser *This = OLEOBJ_THIS(iface); - FIXME("(%p)->(%p)\n", This, pLogpal); - return E_NOTIMPL; -} - -#undef OLEOBJ_THIS - -static const IOleObjectVtbl OleObjectVtbl = -{ - OleObject_QueryInterface, - OleObject_AddRef, - OleObject_Release, - OleObject_SetClientSite, - OleObject_GetClientSite, - OleObject_SetHostNames, - OleObject_Close, - OleObject_SetMoniker, - OleObject_GetMoniker, - OleObject_InitFromData, - OleObject_GetClipboardData, - OleObject_DoVerb, - OleObject_EnumVerbs, - OleObject_Update, - OleObject_IsUpToDate, - OleObject_GetUserClassID, - OleObject_GetUserType, - OleObject_SetExtent, - OleObject_GetExtent, - OleObject_Advise, - OleObject_Unadvise, - OleObject_EnumAdvise, - OleObject_GetMiscStatus, - OleObject_SetColorScheme -}; - -/********************************************************************** - * Implement the IOleInPlaceObject interface - */ - -#define INPLACEOBJ_THIS(iface) DEFINE_THIS(WebBrowser, OleInPlaceObject, iface) - -static HRESULT WINAPI OleInPlaceObject_QueryInterface(IOleInPlaceObject *iface, - REFIID riid, LPVOID *ppobj) -{ - WebBrowser *This = INPLACEOBJ_THIS(iface); - return IWebBrowser_QueryInterface(WEBBROWSER(This), riid, ppobj); -} - -static ULONG WINAPI OleInPlaceObject_AddRef(IOleInPlaceObject *iface) -{ - WebBrowser *This = INPLACEOBJ_THIS(iface); - return IWebBrowser_AddRef(WEBBROWSER(This)); -} - -static ULONG WINAPI OleInPlaceObject_Release(IOleInPlaceObject *iface) -{ - WebBrowser *This = INPLACEOBJ_THIS(iface); - return IWebBrowser_Release(WEBBROWSER(This)); -} - -static HRESULT WINAPI OleInPlaceObject_GetWindow(IOleInPlaceObject *iface, HWND* phwnd) -{ - WebBrowser *This = INPLACEOBJ_THIS(iface); - - TRACE("(%p)->(%p)\n", This, phwnd); - - *phwnd = This->shell_embedding_hwnd; - return S_OK; -} - -static HRESULT WINAPI OleInPlaceObject_ContextSensitiveHelp(IOleInPlaceObject *iface, - BOOL fEnterMode) -{ - WebBrowser *This = INPLACEOBJ_THIS(iface); - FIXME("(%p)->(%x)\n", This, fEnterMode); - return E_NOTIMPL; -} - -static HRESULT WINAPI OleInPlaceObject_InPlaceDeactivate(IOleInPlaceObject *iface) -{ - WebBrowser *This = INPLACEOBJ_THIS(iface); - FIXME("(%p)\n", This); - - if(This->inplace) { - IOleInPlaceSite_Release(This->inplace); - This->inplace = NULL; - } - - return S_OK; -} - -static HRESULT WINAPI OleInPlaceObject_UIDeactivate(IOleInPlaceObject *iface) -{ - WebBrowser *This = INPLACEOBJ_THIS(iface); - FIXME("(%p)\n", This); - return E_NOTIMPL; -} - -static HRESULT WINAPI OleInPlaceObject_SetObjectRects(IOleInPlaceObject *iface, - LPCRECT lprcPosRect, LPCRECT lprcClipRect) -{ - WebBrowser *This = INPLACEOBJ_THIS(iface); - - TRACE("(%p)->(%p %p)\n", This, lprcPosRect, lprcClipRect); - - This->pos_rect = *lprcPosRect; - - if(lprcClipRect) - This->clip_rect = *lprcClipRect; - - if(This->shell_embedding_hwnd) { - SetWindowPos(This->shell_embedding_hwnd, NULL, - lprcPosRect->left, lprcPosRect->top, - lprcPosRect->right-lprcPosRect->left, - lprcPosRect->bottom-lprcPosRect->top, - SWP_NOZORDER | SWP_NOACTIVATE); - } - - return S_OK; -} - -static HRESULT WINAPI OleInPlaceObject_ReactivateAndUndo(IOleInPlaceObject *iface) -{ - WebBrowser *This = INPLACEOBJ_THIS(iface); - FIXME("(%p)\n", This); - return E_NOTIMPL; -} - -#undef INPLACEOBJ_THIS - -static const IOleInPlaceObjectVtbl OleInPlaceObjectVtbl = -{ - OleInPlaceObject_QueryInterface, - OleInPlaceObject_AddRef, - OleInPlaceObject_Release, - OleInPlaceObject_GetWindow, - OleInPlaceObject_ContextSensitiveHelp, - OleInPlaceObject_InPlaceDeactivate, - OleInPlaceObject_UIDeactivate, - OleInPlaceObject_SetObjectRects, - OleInPlaceObject_ReactivateAndUndo -}; - -/********************************************************************** - * Implement the IOleControl interface - */ - -#define CONTROL_THIS(iface) DEFINE_THIS(WebBrowser, OleControl, iface) - -static HRESULT WINAPI OleControl_QueryInterface(IOleControl *iface, - REFIID riid, LPVOID *ppobj) -{ - WebBrowser *This = CONTROL_THIS(iface); - return IWebBrowser_QueryInterface(WEBBROWSER(This), riid, ppobj); -} - -static ULONG WINAPI OleControl_AddRef(IOleControl *iface) -{ - WebBrowser *This = CONTROL_THIS(iface); - return IWebBrowser_AddRef(WEBBROWSER(This)); -} - -static ULONG WINAPI OleControl_Release(IOleControl *iface) -{ - WebBrowser *This = CONTROL_THIS(iface); - return IWebBrowser_Release(WEBBROWSER(This)); -} - -static HRESULT WINAPI OleControl_GetControlInfo(IOleControl *iface, LPCONTROLINFO pCI) -{ - WebBrowser *This = CONTROL_THIS(iface); - - TRACE("(%p)->(%p)\n", This, pCI); - - /* Tests show that this function should be not implemented */ - return E_NOTIMPL; -} - -static HRESULT WINAPI OleControl_OnMnemonic(IOleControl *iface, struct tagMSG *pMsg) -{ - WebBrowser *This = CONTROL_THIS(iface); - FIXME("(%p)->(%p)\n", This, pMsg); - return E_NOTIMPL; -} - -static HRESULT WINAPI OleControl_OnAmbientPropertyChange(IOleControl *iface, DISPID dispID) -{ - WebBrowser *This = CONTROL_THIS(iface); - - TRACE("(%p)->(%d)\n", This, dispID); - - switch(dispID) { - case DISPID_UNKNOWN: - /* Unknown means multiple properties changed, so check them all. - * BUT the Webbrowser OleControl object doesn't appear to do this. - */ - return S_OK; - case DISPID_AMBIENT_DLCONTROL: - return S_OK; - case DISPID_AMBIENT_OFFLINEIFNOTCONNECTED: - return on_offlineconnected_change(This); - case DISPID_AMBIENT_SILENT: - return on_silent_change(This); - } - - FIXME("Unknown dispID %d\n", dispID); - return E_NOTIMPL; -} - -static HRESULT WINAPI OleControl_FreezeEvents(IOleControl *iface, BOOL bFreeze) -{ - WebBrowser *This = CONTROL_THIS(iface); - FIXME("(%p)->(%x)\n", This, bFreeze); - return E_NOTIMPL; -} - -#undef CONTROL_THIS - -static const IOleControlVtbl OleControlVtbl = -{ - OleControl_QueryInterface, - OleControl_AddRef, - OleControl_Release, - OleControl_GetControlInfo, - OleControl_OnMnemonic, - OleControl_OnAmbientPropertyChange, - OleControl_FreezeEvents -}; - -#define ACTIVEOBJ_THIS(iface) DEFINE_THIS(WebBrowser, OleInPlaceActiveObject, iface) - -static HRESULT WINAPI InPlaceActiveObject_QueryInterface(IOleInPlaceActiveObject *iface, - REFIID riid, void **ppv) -{ - WebBrowser *This = ACTIVEOBJ_THIS(iface); - return IWebBrowser2_QueryInterface(WEBBROWSER2(This), riid, ppv); -} - -static ULONG WINAPI InPlaceActiveObject_AddRef(IOleInPlaceActiveObject *iface) -{ - WebBrowser *This = ACTIVEOBJ_THIS(iface); - return IWebBrowser2_AddRef(WEBBROWSER2(This)); -} - -static ULONG WINAPI InPlaceActiveObject_Release(IOleInPlaceActiveObject *iface) -{ - WebBrowser *This = ACTIVEOBJ_THIS(iface); - return IWebBrowser2_Release(WEBBROWSER2(This)); -} - -static HRESULT WINAPI InPlaceActiveObject_GetWindow(IOleInPlaceActiveObject *iface, - HWND *phwnd) -{ - WebBrowser *This = ACTIVEOBJ_THIS(iface); - return IOleInPlaceObject_GetWindow(INPLACEOBJ(This), phwnd); -} - -static HRESULT WINAPI InPlaceActiveObject_ContextSensitiveHelp(IOleInPlaceActiveObject *iface, - BOOL fEnterMode) -{ - WebBrowser *This = ACTIVEOBJ_THIS(iface); - return IOleInPlaceObject_ContextSensitiveHelp(INPLACEOBJ(This), fEnterMode); -} - -static HRESULT WINAPI InPlaceActiveObject_TranslateAccelerator(IOleInPlaceActiveObject *iface, - LPMSG lpmsg) -{ - WebBrowser *This = ACTIVEOBJ_THIS(iface); - FIXME("(%p)->(%p)\n", This, lpmsg); - return E_NOTIMPL; -} - -static HRESULT WINAPI InPlaceActiveObject_OnFrameWindowActivate(IOleInPlaceActiveObject *iface, - BOOL fActivate) -{ - WebBrowser *This = ACTIVEOBJ_THIS(iface); - FIXME("(%p)->(%x)\n", This, fActivate); - return E_NOTIMPL; -} - -static HRESULT WINAPI InPlaceActiveObject_OnDocWindowActivate(IOleInPlaceActiveObject *iface, - BOOL fActivate) -{ - WebBrowser *This = ACTIVEOBJ_THIS(iface); - FIXME("(%p)->(%x)\n", This, fActivate); - return E_NOTIMPL; -} - -static HRESULT WINAPI InPlaceActiveObject_ResizeBorder(IOleInPlaceActiveObject *iface, - LPCRECT lprcBorder, IOleInPlaceUIWindow *pUIWindow, BOOL fFrameWindow) -{ - WebBrowser *This = ACTIVEOBJ_THIS(iface); - FIXME("(%p)->(%p %p %x)\n", This, lprcBorder, pUIWindow, fFrameWindow); - return E_NOTIMPL; -} - -static HRESULT WINAPI InPlaceActiveObject_EnableModeless(IOleInPlaceActiveObject *iface, - BOOL fEnable) -{ - WebBrowser *This = ACTIVEOBJ_THIS(iface); - FIXME("(%p)->(%x)\n", This, fEnable); - return E_NOTIMPL; -} - -#undef ACTIVEOBJ_THIS - -static const IOleInPlaceActiveObjectVtbl OleInPlaceActiveObjectVtbl = { - InPlaceActiveObject_QueryInterface, - InPlaceActiveObject_AddRef, - InPlaceActiveObject_Release, - InPlaceActiveObject_GetWindow, - InPlaceActiveObject_ContextSensitiveHelp, - InPlaceActiveObject_TranslateAccelerator, - InPlaceActiveObject_OnFrameWindowActivate, - InPlaceActiveObject_OnDocWindowActivate, - InPlaceActiveObject_ResizeBorder, - InPlaceActiveObject_EnableModeless -}; - -#define OLECMD_THIS(iface) DEFINE_THIS(WebBrowser, OleCommandTarget, iface) - -static HRESULT WINAPI WBOleCommandTarget_QueryInterface(IOleCommandTarget *iface, - REFIID riid, void **ppv) -{ - WebBrowser *This = OLECMD_THIS(iface); - return IWebBrowser2_QueryInterface(WEBBROWSER(This), riid, ppv); -} - -static ULONG WINAPI WBOleCommandTarget_AddRef(IOleCommandTarget *iface) -{ - WebBrowser *This = OLECMD_THIS(iface); - return IWebBrowser2_AddRef(WEBBROWSER(This)); -} - -static ULONG WINAPI WBOleCommandTarget_Release(IOleCommandTarget *iface) -{ - WebBrowser *This = OLECMD_THIS(iface); - return IWebBrowser2_Release(WEBBROWSER(This)); -} - -static HRESULT WINAPI WBOleCommandTarget_QueryStatus(IOleCommandTarget *iface, - const GUID *pguidCmdGroup, ULONG cCmds, OLECMD prgCmds[], OLECMDTEXT *pCmdText) -{ - WebBrowser *This = OLECMD_THIS(iface); - IOleCommandTarget *cmdtrg; - HRESULT hres; - - TRACE("(%p)->(%s %u %p %p)\n", This, debugstr_guid(pguidCmdGroup), cCmds, prgCmds, - pCmdText); - - if(!This->doc_host.document) - return 0x80040104; - - /* NOTE: There are probably some commands that we should handle here - * instead of forwarding to document object. */ - - hres = IUnknown_QueryInterface(This->doc_host.document, &IID_IOleCommandTarget, (void**)&cmdtrg); - if(FAILED(hres)) - return hres; - - hres = IOleCommandTarget_QueryStatus(cmdtrg, pguidCmdGroup, cCmds, prgCmds, pCmdText); - IOleCommandTarget_Release(cmdtrg); - - return hres; -} - -static HRESULT WINAPI WBOleCommandTarget_Exec(IOleCommandTarget *iface, - const GUID *pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt, VARIANT *pvaIn, - VARIANT *pvaOut) -{ - WebBrowser *This = OLECMD_THIS(iface); - FIXME("(%p)->(%s %d %d %p %p)\n", This, debugstr_guid(pguidCmdGroup), nCmdID, - nCmdexecopt, pvaIn, pvaOut); - return E_NOTIMPL; -} - -#undef OLECMD_THIS - -static const IOleCommandTargetVtbl OleCommandTargetVtbl = { - WBOleCommandTarget_QueryInterface, - WBOleCommandTarget_AddRef, - WBOleCommandTarget_Release, - WBOleCommandTarget_QueryStatus, - WBOleCommandTarget_Exec -}; - -void WebBrowser_OleObject_Init(WebBrowser *This) -{ - DWORD dpi_x; - DWORD dpi_y; - HDC hdc; - - /* default aspect ratio is 96dpi / 96dpi */ - hdc = GetDC(0); - dpi_x = GetDeviceCaps(hdc, LOGPIXELSX); - dpi_y = GetDeviceCaps(hdc, LOGPIXELSY); - ReleaseDC(0, hdc); - - This->lpOleObjectVtbl = &OleObjectVtbl; - This->lpOleInPlaceObjectVtbl = &OleInPlaceObjectVtbl; - This->lpOleControlVtbl = &OleControlVtbl; - This->lpOleInPlaceActiveObjectVtbl = &OleInPlaceActiveObjectVtbl; - This->lpOleCommandTargetVtbl = &OleCommandTargetVtbl; - - /* Default size is 50x20 pixels, in himetric units */ - This->extent.cx = MulDiv( 50, 2540, dpi_x ); - This->extent.cy = MulDiv( 20, 2540, dpi_y ); -} - -void WebBrowser_OleObject_Destroy(WebBrowser *This) -{ - release_client_site(This); -} diff --git a/reactos/dll/win32/shdocvw/persist.c b/reactos/dll/win32/shdocvw/persist.c deleted file mode 100644 index 0bab6c45f1a..00000000000 --- a/reactos/dll/win32/shdocvw/persist.c +++ /dev/null @@ -1,276 +0,0 @@ -/* - * Implementation of IPersist interfaces for WebBrowser control - * - * Copyright 2001 John R. Sheets (for CodeWeavers) - * Copyright 2005 Jacek Caban - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA - */ - -#include -#include "shdocvw.h" - -WINE_DEFAULT_DEBUG_CHANNEL(shdocvw); - -/********************************************************************** - * Implement the IPersistStorage interface - */ - -#define PERSTORAGE_THIS(ifce) DEFINE_THIS(WebBrowser, PersistStorage, iface) - -static HRESULT WINAPI PersistStorage_QueryInterface(IPersistStorage *iface, - REFIID riid, LPVOID *ppobj) -{ - WebBrowser *This = PERSTORAGE_THIS(iface); - return IWebBrowser_QueryInterface(WEBBROWSER(This), riid, ppobj); -} - -static ULONG WINAPI PersistStorage_AddRef(IPersistStorage *iface) -{ - WebBrowser *This = PERSTORAGE_THIS(iface); - return IWebBrowser_AddRef(WEBBROWSER(This)); -} - -static ULONG WINAPI PersistStorage_Release(IPersistStorage *iface) -{ - WebBrowser *This = PERSTORAGE_THIS(iface); - return IWebBrowser_Release(WEBBROWSER(This)); -} - -static HRESULT WINAPI PersistStorage_GetClassID(IPersistStorage *iface, CLSID *pClassID) -{ - WebBrowser *This = PERSTORAGE_THIS(iface); - FIXME("(%p)->(%p)\n", This, pClassID); - return E_NOTIMPL; -} - -static HRESULT WINAPI PersistStorage_IsDirty(IPersistStorage *iface) -{ - WebBrowser *This = PERSTORAGE_THIS(iface); - FIXME("(%p)\n", This); - return E_NOTIMPL; -} - -static HRESULT WINAPI PersistStorage_InitNew(IPersistStorage *iface, LPSTORAGE pStg) -{ - WebBrowser *This = PERSTORAGE_THIS(iface); - FIXME("(%p)->(%p)\n", This, pStg); - return S_OK; -} - -static HRESULT WINAPI PersistStorage_Load(IPersistStorage *iface, LPSTORAGE pStg) -{ - WebBrowser *This = PERSTORAGE_THIS(iface); - FIXME("(%p)->(%p)\n", This, pStg); - return E_NOTIMPL; -} - -static HRESULT WINAPI PersistStorage_Save(IPersistStorage *iface, LPSTORAGE pStg, - BOOL fSameAsLoad) -{ - WebBrowser *This = PERSTORAGE_THIS(iface); - FIXME("(%p)->(%p %x)\n", This, pStg, fSameAsLoad); - return E_NOTIMPL; -} - -static HRESULT WINAPI PersistStorage_SaveCompleted(IPersistStorage *iface, LPSTORAGE pStgNew) -{ - WebBrowser *This = PERSTORAGE_THIS(iface); - FIXME("(%p)->(%p)\n", This, pStgNew); - return E_NOTIMPL; -} - -static const IPersistStorageVtbl PersistStorageVtbl = -{ - PersistStorage_QueryInterface, - PersistStorage_AddRef, - PersistStorage_Release, - PersistStorage_GetClassID, - PersistStorage_IsDirty, - PersistStorage_InitNew, - PersistStorage_Load, - PersistStorage_Save, - PersistStorage_SaveCompleted -}; - -/********************************************************************** - * Implement the IPersistMemory interface - */ - -#define PERMEMORY_THIS(ifce) DEFINE_THIS(WebBrowser, PersistMemory, iface) - -static HRESULT WINAPI PersistMemory_QueryInterface(IPersistMemory *iface, - REFIID riid, LPVOID *ppobj) -{ - WebBrowser *This = PERMEMORY_THIS(iface); - return IWebBrowser_QueryInterface(WEBBROWSER(This), riid, ppobj); -} - -static ULONG WINAPI PersistMemory_AddRef(IPersistMemory *iface) -{ - WebBrowser *This = PERMEMORY_THIS(iface); - return IWebBrowser_AddRef(WEBBROWSER(This)); -} - -static ULONG WINAPI PersistMemory_Release(IPersistMemory *iface) -{ - WebBrowser *This = PERMEMORY_THIS(iface); - return IWebBrowser_Release(WEBBROWSER(This)); -} - -static HRESULT WINAPI PersistMemory_GetClassID(IPersistMemory *iface, CLSID *pClassID) -{ - WebBrowser *This = PERMEMORY_THIS(iface); - FIXME("(%p)->(%p)\n", This, pClassID); - return E_NOTIMPL; -} - -static HRESULT WINAPI PersistMemory_IsDirty(IPersistMemory *iface) -{ - WebBrowser *This = PERMEMORY_THIS(iface); - FIXME("(%p)\n", This); - return E_NOTIMPL; -} - -static HRESULT WINAPI PersistMemory_InitNew(IPersistMemory *iface) -{ - WebBrowser *This = PERMEMORY_THIS(iface); - FIXME("(%p)\n", This); - return S_OK; -} - -static HRESULT WINAPI PersistMemory_Load(IPersistMemory *iface, LPVOID pMem, ULONG cbSize) -{ - WebBrowser *This = PERMEMORY_THIS(iface); - FIXME("(%p)->(%p %x)\n", This, pMem, cbSize); - return S_OK; -} - -static HRESULT WINAPI PersistMemory_Save(IPersistMemory *iface, LPVOID pMem, - BOOL fClearDirty, ULONG cbSize) -{ - WebBrowser *This = PERMEMORY_THIS(iface); - FIXME("(%p)->(%p %x %x)\n", This, pMem, fClearDirty, cbSize); - return E_NOTIMPL; -} - -static HRESULT WINAPI PersistMemory_GetSizeMax(IPersistMemory *iface, ULONG *pCbSize) -{ - WebBrowser *This = PERMEMORY_THIS(iface); - FIXME("(%p)->(%p)\n", This, pCbSize); - return E_NOTIMPL; -} - -static const IPersistMemoryVtbl PersistMemoryVtbl = -{ - PersistMemory_QueryInterface, - PersistMemory_AddRef, - PersistMemory_Release, - PersistMemory_GetClassID, - PersistMemory_IsDirty, - PersistMemory_Load, - PersistMemory_Save, - PersistMemory_GetSizeMax, - PersistMemory_InitNew -}; - -/********************************************************************** - * Implement the IPersistStreamInit interface - */ - -#define PERSTRINIT_THIS(iface) DEFINE_THIS(WebBrowser, PersistStreamInit, iface) - -static HRESULT WINAPI PersistStreamInit_QueryInterface(IPersistStreamInit *iface, - REFIID riid, LPVOID *ppobj) -{ - WebBrowser *This = PERSTRINIT_THIS(iface); - return IWebBrowser_QueryInterface(WEBBROWSER(This), riid, ppobj); -} - -static ULONG WINAPI PersistStreamInit_AddRef(IPersistStreamInit *iface) -{ - WebBrowser *This = PERSTRINIT_THIS(iface); - return IWebBrowser_AddRef(WEBBROWSER(This)); -} - -static ULONG WINAPI PersistStreamInit_Release(IPersistStreamInit *iface) -{ - WebBrowser *This = PERSTRINIT_THIS(iface); - return IWebBrowser_Release(WEBBROWSER(This)); -} - -static HRESULT WINAPI PersistStreamInit_GetClassID(IPersistStreamInit *iface, CLSID *pClassID) -{ - WebBrowser *This = PERSTRINIT_THIS(iface); - return IPersistStorage_GetClassID(PERSTORAGE(This), pClassID); -} - -static HRESULT WINAPI PersistStreamInit_IsDirty(IPersistStreamInit *iface) -{ - WebBrowser *This = PERSTRINIT_THIS(iface); - return IPersistStorage_IsDirty(PERSTORAGE(This)); -} - -static HRESULT WINAPI PersistStreamInit_Load(IPersistStreamInit *iface, LPSTREAM pStg) -{ - WebBrowser *This = PERSTRINIT_THIS(iface); - FIXME("(%p)->(%p)\n", This, pStg); - return S_OK; -} - -static HRESULT WINAPI PersistStreamInit_Save(IPersistStreamInit *iface, LPSTREAM pStg, - BOOL fSameAsLoad) -{ - WebBrowser *This = PERSTRINIT_THIS(iface); - FIXME("(%p)->(%p %x)\n", This, pStg, fSameAsLoad); - return E_NOTIMPL; -} - -static HRESULT WINAPI PersistStreamInit_GetSizeMax(IPersistStreamInit *iface, - ULARGE_INTEGER *pcbSize) -{ - WebBrowser *This = PERSTRINIT_THIS(iface); - FIXME("(%p)->(%p)\n", This, pcbSize); - return E_NOTIMPL; -} - -static HRESULT WINAPI PersistStreamInit_InitNew(IPersistStreamInit *iface) -{ - WebBrowser *This = PERSTRINIT_THIS(iface); - FIXME("(%p)\n", This); - return S_OK; -} - -#undef PERSTRINIT_THIS - -static const IPersistStreamInitVtbl PersistStreamInitVtbl = -{ - PersistStreamInit_QueryInterface, - PersistStreamInit_AddRef, - PersistStreamInit_Release, - PersistStreamInit_GetClassID, - PersistStreamInit_IsDirty, - PersistStreamInit_Load, - PersistStreamInit_Save, - PersistStreamInit_GetSizeMax, - PersistStreamInit_InitNew -}; - -void WebBrowser_Persist_Init(WebBrowser *This) -{ - This->lpPersistStorageVtbl = &PersistStorageVtbl; - This->lpPersistMemoryVtbl = &PersistMemoryVtbl; - This->lpPersistStreamInitVtbl = &PersistStreamInitVtbl; -} diff --git a/reactos/dll/win32/shdocvw/resource.h b/reactos/dll/win32/shdocvw/resource.h deleted file mode 100644 index 575f0ef71c3..00000000000 --- a/reactos/dll/win32/shdocvw/resource.h +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Resource identifiers for shdocvw.dll - * - * Copyright 2010 Alexander N. Sørnes - * - * 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 -#include - -#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 -#define ID_BROWSE_SAVE 257 -#define ID_BROWSE_SAVE_AS 258 -#define ID_BROWSE_PRINT_FORMAT 259 -#define ID_BROWSE_PRINT 260 -#define ID_BROWSE_PRINT_PREVIEW 277 -#define ID_BROWSE_PROPERTIES 262 -#define ID_BROWSE_QUIT 278 -#define ID_BROWSE_ABOUT 336 - -#define ID_BROWSE_ADDFAV 1200 -#define ID_BROWSE_HOME 1201 - -#define ID_BROWSE_BAR_STD 1300 -#define ID_BROWSE_BAR_ADDR 1301 - -#define ID_BROWSE_GOTOFAV_FIRST 2000 -#define ID_BROWSE_GOTOFAV_MAX 65000 - -#define IDS_TB_BACK 1100 -#define IDS_TB_FORWARD 1101 -#define IDS_TB_STOP 1102 -#define IDS_TB_REFRESH 1103 -#define IDS_TB_HOME 1104 -#define IDS_TB_PRINT 1105 - -#define IDS_ADDRESS 1106 diff --git a/reactos/dll/win32/shdocvw/shdocvw.h b/reactos/dll/win32/shdocvw/shdocvw.h index e471f3256e4..da9c17ba1b8 100644 --- a/reactos/dll/win32/shdocvw/shdocvw.h +++ b/reactos/dll/win32/shdocvw/shdocvw.h @@ -32,273 +32,28 @@ #include #include -#include //#include "winuser.h" -#include -#include #include -#include -#include #include //#include "exdisp.h" -#include -#include -#include #include -#include "resource.h" - - -#define WM_UPDATEADDRBAR (WM_APP+1) +//#include "wine/list.h" /********************************************************************** * Shell Instance Objects */ extern HRESULT SHDOCVW_GetShellInstanceObjectClassObject(REFCLSID rclsid, - REFIID riid, LPVOID *ppvClassObj); - -/********************************************************************** - * WebBrowser declaration for SHDOCVW.DLL - */ - -typedef struct ConnectionPoint ConnectionPoint; -typedef struct DocHost DocHost; - -typedef struct { - const IConnectionPointContainerVtbl *lpConnectionPointContainerVtbl; - - ConnectionPoint *wbe2; - ConnectionPoint *wbe; - ConnectionPoint *pns; - - IUnknown *impl; -} ConnectionPointContainer; - -typedef struct { - const IHlinkFrameVtbl *lpIHlinkFrameVtbl; - const ITargetFrame2Vtbl *lpITargetFrame2Vtbl; - - IUnknown *outer; - DocHost *doc_host; -} HlinkFrame; - -struct _task_header_t; - -typedef void (*task_proc_t)(DocHost*, struct _task_header_t*); - -typedef struct _task_header_t { - task_proc_t proc; -} task_header_t; - -typedef struct _IDocHostContainerVtbl -{ - void (WINAPI* GetDocObjRect)(DocHost*,RECT*); - HRESULT (WINAPI* SetStatusText)(DocHost*,LPCWSTR); - void (WINAPI* SetURL)(DocHost*,LPCWSTR); - HRESULT (*exec)(DocHost*,const GUID*,DWORD,DWORD,VARIANT*,VARIANT*); -} IDocHostContainerVtbl; - -struct DocHost { - const IOleClientSiteVtbl *lpOleClientSiteVtbl; - const IOleInPlaceSiteVtbl *lpOleInPlaceSiteVtbl; - const IDocHostUIHandler2Vtbl *lpDocHostUIHandlerVtbl; - const IOleDocumentSiteVtbl *lpOleDocumentSiteVtbl; - const IOleCommandTargetVtbl *lpOleCommandTargetVtbl; - const IDispatchVtbl *lpDispatchVtbl; - const IPropertyNotifySinkVtbl *lpIPropertyNotifySinkVtbl; - const IServiceProviderVtbl *lpServiceProviderVtbl; - - /* Interfaces of InPlaceFrame object */ - const IOleInPlaceFrameVtbl *lpOleInPlaceFrameVtbl; - - IDispatch *disp; - - IDispatch *client_disp; - IDocHostUIHandler *hostui; - IOleInPlaceFrame *frame; - - IUnknown *document; - IOleDocumentView *view; - IUnknown *doc_navigate; - - const IDocHostContainerVtbl *container_vtbl; - - HWND hwnd; - HWND frame_hwnd; - - LPOLESTR url; - - VARIANT_BOOL silent; - VARIANT_BOOL offline; - VARIANT_BOOL busy; - - READYSTATE ready_state; - READYSTATE doc_state; - DWORD prop_notif_cookie; - BOOL is_prop_notif; - - ConnectionPointContainer cps; -}; - -struct WebBrowser { - /* Interfaces available via WebBrowser object */ - - const IWebBrowser2Vtbl *lpWebBrowser2Vtbl; - const IOleObjectVtbl *lpOleObjectVtbl; - const IOleInPlaceObjectVtbl *lpOleInPlaceObjectVtbl; - const IOleControlVtbl *lpOleControlVtbl; - const IPersistStorageVtbl *lpPersistStorageVtbl; - const IPersistMemoryVtbl *lpPersistMemoryVtbl; - const IPersistStreamInitVtbl *lpPersistStreamInitVtbl; - const IProvideClassInfo2Vtbl *lpProvideClassInfoVtbl; - const IViewObject2Vtbl *lpViewObjectVtbl; - const IOleInPlaceActiveObjectVtbl *lpOleInPlaceActiveObjectVtbl; - const IOleCommandTargetVtbl *lpOleCommandTargetVtbl; - const IServiceProviderVtbl *lpServiceProviderVtbl; - const IDataObjectVtbl *lpDataObjectVtbl; - HlinkFrame hlink_frame; - - LONG ref; - - INT version; - - IOleClientSite *client; - IOleContainer *container; - IOleInPlaceSite *inplace; - - /* window context */ - - HWND frame_hwnd; - IOleInPlaceUIWindow *uiwindow; - RECT pos_rect; - RECT clip_rect; - OLEINPLACEFRAMEINFO frameinfo; - SIZEL extent; - - HWND shell_embedding_hwnd; - - VARIANT_BOOL register_browser; - VARIANT_BOOL visible; - VARIANT_BOOL menu_bar; - VARIANT_BOOL address_bar; - VARIANT_BOOL status_bar; - VARIANT_BOOL tool_bar; - VARIANT_BOOL full_screen; - VARIANT_BOOL theater_mode; - - DocHost doc_host; -}; - -struct InternetExplorer { - const IWebBrowser2Vtbl *lpWebBrowser2Vtbl; - HlinkFrame hlink_frame; - - LONG ref; - - HWND frame_hwnd; - HWND status_hwnd; - HMENU menu; - - DocHost doc_host; -}; - -#define WEBBROWSER(x) ((IWebBrowser*) &(x)->lpWebBrowser2Vtbl) -#define WEBBROWSER2(x) ((IWebBrowser2*) &(x)->lpWebBrowser2Vtbl) -#define OLEOBJ(x) ((IOleObject*) &(x)->lpOleObjectVtbl) -#define INPLACEOBJ(x) ((IOleInPlaceObject*) &(x)->lpOleInPlaceObjectVtbl) -#define CONTROL(x) ((IOleControl*) &(x)->lpOleControlVtbl) -#define PERSTORAGE(x) ((IPersistStorage*) &(x)->lpPersistStorageVtbl) -#define PERMEMORY(x) ((IPersistMemory*) &(x)->lpPersistMemoryVtbl) -#define PERSTRINIT(x) ((IPersistStreamInit*) &(x)->lpPersistStreamInitVtbl) -#define CLASSINFO(x) ((IProvideClassInfo2*) &(x)->lpProvideClassInfoVtbl) -#define CONPTCONT(x) ((IConnectionPointContainer*) &(x)->lpConnectionPointContainerVtbl) -#define VIEWOBJ(x) ((IViewObject*) &(x)->lpViewObjectVtbl); -#define VIEWOBJ2(x) ((IViewObject2*) &(x)->lpViewObjectVtbl); -#define ACTIVEOBJ(x) ((IOleInPlaceActiveObject*) &(x)->lpOleInPlaceActiveObjectVtbl) -#define OLECMD(x) ((IOleCommandTarget*) &(x)->lpOleCommandTargetVtbl) -#define DATAOBJECT(x) ((IDataObject*) &(x)->lpDataObjectVtbl) - -#define CLIENTSITE(x) ((IOleClientSite*) &(x)->lpOleClientSiteVtbl) -#define INPLACESITE(x) ((IOleInPlaceSite*) &(x)->lpOleInPlaceSiteVtbl) -#define DOCHOSTUI(x) ((IDocHostUIHandler*) &(x)->lpDocHostUIHandlerVtbl) -#define DOCHOSTUI2(x) ((IDocHostUIHandler2*) &(x)->lpDocHostUIHandlerVtbl) -#define DOCSITE(x) ((IOleDocumentSite*) &(x)->lpOleDocumentSiteVtbl) -#define CLDISP(x) ((IDispatch*) &(x)->lpDispatchVtbl) -#define PROPNOTIF(x) ((IPropertyNotifySink*) &(x)->lpIPropertyNotifySinkVtbl) -#define SERVPROV(x) ((IServiceProvider*) &(x)->lpServiceProviderVtbl) - -#define INPLACEFRAME(x) ((IOleInPlaceFrame*) &(x)->lpOleInPlaceFrameVtbl) - -#define HLINKFRAME(x) ((IHlinkFrame*) &(x)->lpIHlinkFrameVtbl) -#define TARGETFRAME2(x) ((ITargetFrame2*) &(x)->lpITargetFrame2Vtbl) - -void WebBrowser_OleObject_Init(WebBrowser*); -void WebBrowser_ViewObject_Init(WebBrowser*); -void WebBrowser_DataObject_Init(WebBrowser*); -void WebBrowser_Persist_Init(WebBrowser*); -void WebBrowser_ClassInfo_Init(WebBrowser*); - -void WebBrowser_OleObject_Destroy(WebBrowser*); - -void DocHost_Init(DocHost*,IDispatch*,const IDocHostContainerVtbl*); -void DocHost_ClientSite_Init(DocHost*); -void DocHost_Frame_Init(DocHost*); -void release_dochost_client(DocHost*); - -void DocHost_Release(DocHost*); -void DocHost_ClientSite_Release(DocHost*); - -void ConnectionPointContainer_Init(ConnectionPointContainer*,IUnknown*); -void ConnectionPointContainer_Destroy(ConnectionPointContainer*); - -void HlinkFrame_Init(HlinkFrame*,IUnknown*,DocHost*); -BOOL HlinkFrame_QI(HlinkFrame*,REFIID,void**); - -HRESULT WebBrowserV1_Create(IUnknown*,REFIID,void**); -HRESULT WebBrowserV2_Create(IUnknown*,REFIID,void**); - -void create_doc_view_hwnd(DocHost*); -void deactivate_document(DocHost*); -HRESULT dochost_object_available(DocHost*,IUnknown*); -void call_sink(ConnectionPoint*,DISPID,DISPPARAMS*); -HRESULT navigate_url(DocHost*,LPCWSTR,const VARIANT*,const VARIANT*,VARIANT*,VARIANT*); -HRESULT go_home(DocHost*); -void set_doc_state(DocHost*,READYSTATE); - -#define WM_DOCHOSTTASK (WM_USER+0x300) -void push_dochost_task(DocHost*,task_header_t*,task_proc_t,BOOL); -LRESULT process_dochost_task(DocHost*,LPARAM); - -HRESULT InternetExplorer_Create(IUnknown*,REFIID,void**); -void InternetExplorer_WebBrowser_Init(InternetExplorer*); - -HRESULT CUrlHistory_Create(IUnknown*,REFIID,void**); - -HRESULT InternetShortcut_Create(IUnknown*,REFIID,void**); - -HRESULT TaskbarList_Create(IUnknown*,REFIID,void**); - -#define DEFINE_THIS2(cls,ifc,iface) ((cls*)((BYTE*)(iface)-offsetof(cls,ifc))) -#define DEFINE_THIS(cls,ifc,iface) DEFINE_THIS2(cls,lp ## ifc ## Vtbl,iface) + REFIID riid, LPVOID *ppvClassObj) DECLSPEC_HIDDEN; /********************************************************************** * Dll lifetime tracking declaration for shdocvw.dll */ -extern LONG SHDOCVW_refCount; +extern LONG SHDOCVW_refCount DECLSPEC_HIDDEN; static inline void SHDOCVW_LockModule(void) { InterlockedIncrement( &SHDOCVW_refCount ); } static inline void SHDOCVW_UnlockModule(void) { InterlockedDecrement( &SHDOCVW_refCount ); } -extern HINSTANCE shdocvw_hinstance; -extern void register_iewindow_class(void); -extern void unregister_iewindow_class(void); -extern HRESULT update_ie_statustext(InternetExplorer*, LPCWSTR); - -HRESULT register_class_object(BOOL); -HRESULT get_typeinfo(ITypeInfo**); -DWORD register_iexplore(BOOL); - -const char *debugstr_variant(const VARIANT*); /* memory allocation functions */ @@ -307,64 +62,9 @@ static inline void *heap_alloc(size_t len) return HeapAlloc(GetProcessHeap(), 0, len); } -static inline void *heap_alloc_zero(size_t len) -{ - return HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, len); -} - -static inline void *heap_realloc(void *mem, size_t len) -{ - return HeapReAlloc(GetProcessHeap(), 0, mem, len); -} - static inline BOOL heap_free(void *mem) { return HeapFree(GetProcessHeap(), 0, mem); } -static inline LPWSTR heap_strdupW(LPCWSTR str) -{ - LPWSTR ret = NULL; - - if(str) { - DWORD size; - - size = (strlenW(str)+1)*sizeof(WCHAR); - ret = heap_alloc(size); - memcpy(ret, str, size); - } - - return ret; -} - -static inline LPWSTR co_strdupW(LPCWSTR str) -{ - WCHAR *ret = CoTaskMemAlloc((strlenW(str) + 1)*sizeof(WCHAR)); - if (ret) - lstrcpyW(ret, str); - return ret; -} - -static inline LPWSTR co_strdupAtoW(LPCSTR str) -{ - INT len; - WCHAR *ret; - len = MultiByteToWideChar(CP_ACP, 0, str, -1, NULL, 0); - ret = CoTaskMemAlloc(len*sizeof(WCHAR)); - if (ret) - MultiByteToWideChar(CP_ACP, 0, str, -1, ret, len); - return ret; -} - -static inline LPSTR co_strdupWtoA(LPCWSTR str) -{ - INT len; - CHAR *ret; - len = WideCharToMultiByte(CP_ACP, 0, str, -1, NULL, 0, 0, 0); - ret = CoTaskMemAlloc(len); - if (ret) - WideCharToMultiByte(CP_ACP, 0, str, -1, ret, len, 0, 0); - return ret; -} - #endif /* __WINE_SHDOCVW_H */ diff --git a/reactos/dll/win32/shdocvw/shdocvw.inf b/reactos/dll/win32/shdocvw/shdocvw.inf deleted file mode 100644 index a612952f37d..00000000000 --- a/reactos/dll/win32/shdocvw/shdocvw.inf +++ /dev/null @@ -1,158 +0,0 @@ -[version] -Signature="$CHICAGO$" - - -[RegisterDll] -AddReg=Classes.Reg, URL.Reg - - -[UnregisterDll] -DelReg=Classes.Reg, URL.Reg - - -[RegisterIE] -AddReg=IE.Reg, Settings.Reg - - -[UnregisterIE] -DelReg=IE.Reg, Settings.Reg - - -[Classes.Reg] -HKCR,"CLSID\%CLSID_InternetExplorer%",,,"Internet Explorer(Ver 1.0)" -HKCR,"CLSID\%CLSID_InternetExplorer%\LocalServer32",,,"""%16422%\Internet Explorer\iexplore.exe""" -HKCR,"CLSID\%CLSID_InternetExplorer%\ProgID",,,"InternetExplorer.Application.1" -HKCR,"CLSID\%CLSID_InternetExplorer%\VersionIndependentProgID",,,"InternetExplorer.Application" -HKCR,"InternetExplorer.Application",,,"Internet Explorer(Ver 1.0)" -HKCR,"InternetExplorer.Application\CLSID",,,"%CLSID_InternetExplorer%" -HKCR,"InternetExplorer.Application\CurVer",,,"InternetExplorer.Application.1" -HKCR,"InternetExplorer.Application.1",,,"Internet Explorer(Ver 1.0)" -HKCR,"InternetExplorer.Application.1\CLSID",,,"%CLSID_InternetExplorer%" - -HKCR,"CLSID\%CLSID_SearchAssistantOC%",,,"SearchAssistantOC" -HKCR,"CLSID\%CLSID_SearchAssistantOC%\InProcServer32",,,"%MODULE%" -HKCR,"CLSID\%CLSID_SearchAssistantOC%\InProcServer32","ThreadingModel",,"Apartment" -HKCR,"CLSID\%CLSID_SearchAssistantOC%\ProgID",,,"SearchAssistantOC.SearchAssistantOC.1" -HKCR,"CLSID\%CLSID_SearchAssistantOC%\VersionIndependentProgID",,,"SearchAssistantOC.SearchAssistantOC" -HKCR,"SearchAssistantOC.SearchAssistantOC",,,"SearchAssistantOC" -HKCR,"SearchAssistantOC.SearchAssistantOC\CLSID",,,"%CLSID_SearchAssistantOC%" -HKCR,"SearchAssistantOC.SearchAssistantOC\CurVer",,,"SearchAssistantOC.SearchAssistantOC.1" -HKCR,"SearchAssistantOC.SearchAssistantOC.1",,,"SearchAssistantOC" -HKCR,"SearchAssistantOC.SearchAssistantOC.1\CLSID",,,"%CLSID_SearchAssistantOC%" - -HKCR,"CLSID\%CLSID_ShellNameSpace%",,,"Shell Name Space" -HKCR,"CLSID\%CLSID_ShellNameSpace%\InProcServer32",,,"%MODULE%" -HKCR,"CLSID\%CLSID_ShellNameSpace%\InProcServer32","ThreadingModel",,"Apartment" -HKCR,"CLSID\%CLSID_ShellNameSpace%\ProgID",,,"ShellNameSpace.ShellNameSpace.1" -HKCR,"CLSID\%CLSID_ShellNameSpace%\VersionIndependentProgID",,,"ShellNameSpace.ShellNameSpace" - -HKCR,"CLSID\%CLSID_CUrlHistory%",,,"Microsoft Url History Service" -HKCR,"CLSID\%CLSID_CUrlHistory%\InProcServer32",,,"%MODULE%" -HKCR,"CLSID\%CLSID_CUrlHistory%\InProcServer32","ThreadingModel",,"Apartment" - -HKCR,"CLSID\%CLSID_MruLongList%",,,"MruLongList" -HKCR,"CLSID\%CLSID_MruLongList%\InProcServer32",,,"%MODULE%" -HKCR,"CLSID\%CLSID_MruLongList%\InProcServer32","ThreadingModel",,"Apartment" - -HKCR,"CLSID\%CLSID_ShellShellNameSpace%",,,"Shell Name Space" -HKCR,"CLSID\%CLSID_ShellShellNameSpace%\InProcServer32",,,"%MODULE%" -HKCR,"CLSID\%CLSID_ShellShellNameSpace%\InProcServer32","ThreadingModel",,"Apartment" -HKCR,"CLSID\%CLSID_ShellShellNameSpace%\ProgID",,,"ShellNameSpace.ShellNameSpace.1" -HKCR,"CLSID\%CLSID_ShellShellNameSpace%\VersionIndependentProgID",,,"ShellNameSpace.ShellNameSpace" - -HKCR,"CLSID\%CLSID_ShellUIHelper%",,,"Microsoft Shell UI Helper" -HKCR,"CLSID\%CLSID_ShellUIHelper%\InProcServer32",,,"%MODULE%" -HKCR,"CLSID\%CLSID_ShellUIHelper%\InProcServer32","ThreadingModel",,"Apartment" -HKCR,"CLSID\%CLSID_ShellUIHelper%\ProgID",,,"Shell.UIHelper.1" -HKCR,"Shell.UIHelper",,,"Microsoft Shell UI Helper" -HKCR,"Shell.UIHelper\CLSID",,,"%CLSID_ShellUIHelper%" -HKCR,"Shell.UIHelper\CurVer",,,"Shell.UIHelper.2" -HKCR,"Shell.UIHelper.1",,,"Microsoft Shell UI Helper" -HKCR,"Shell.UIHelper.1\CLSID",,,"%CLSID_ShellUIHelper%" - -HKCR,"CLSID\%CLSID_Internet%\DefaultIcon",,,"shdoclc.dll,-190" -HKCR,"CLSID\%CLSID_Internet%\InProcServer32",,,"%MODULE%" -HKCR,"CLSID\%CLSID_Internet%\InProcServer32","ThreadingModel",,"Apartment" -HKCR,"CLSID\%CLSID_Internet%\Shell",,,"OpenHomePage" -HKCR,"CLSID\%CLSID_Internet%\Shell\OpenHomePage",,,"Open &Home Page" -HKCR,"CLSID\%CLSID_Internet%\Shell\OpenHomePage\Command",,,"""%16422%\Internet Explorer\iexplore.exe""" -HKCR,"CLSID\%CLSID_Internet%\ShellFolder",,2,"0x24" - -HKCR,"CLSID\%CLSID_WebBrowser%",,,"Microsoft Web Browser" -HKCR,"CLSID\%CLSID_WebBrowser%\InProcServer32",,,"%MODULE%" -HKCR,"CLSID\%CLSID_WebBrowser%\InProcServer32","ThreadingModel",,"Apartment" -HKCR,"CLSID\%CLSID_WebBrowser%\ProgID",,,"Shell.Explorer.2" -HKCR,"CLSID\%CLSID_WebBrowser%\VersionIndependentProgID",,,"Shell.Explorer" -HKCR,"Shell.Explorer",,,"Microsoft Web Browser" -HKCR,"Shell.Explorer\CLSID",,,"%CLSID_WebBrowser%" -HKCR,"Shell.Explorer\CurVer",,,"Shell.Explorer.2" -HKCR,"Shell.Explorer.2",,,"Microsoft Web Browser" -HKCR,"Shell.Explorer.2\CLSID",,,"%CLSID_WebBrowser%" - -HKCR,"CLSID\%CLSID_ShellWindows%",,,"ShellWindows" -HKCR,"CLSID\%CLSID_ShellWindows%\InProcServer32",,,"%MODULE%" -HKCR,"CLSID\%CLSID_ShellWindows%\InProcServer32","ThreadingModel",,"Apartment" - -HKCR,"CLSID\%CLSID_MicrosoftBrowserArchitecture%",,,"Microsoft Browser Architecture" -HKCR,"CLSID\%CLSID_MicrosoftBrowserArchitecture%\InProcServer32",,,"%MODULE%" -HKCR,"CLSID\%CLSID_MicrosoftBrowserArchitecture%\InProcServer32","ThreadingModel",,"Apartment" - -HKCR,"CLSID\%CLSID_ShellSearchAssistantOC%",,,"SearchAssistantOC" -HKCR,"CLSID\%CLSID_ShellSearchAssistantOC%\InProcServer32",,,"%MODULE%" -HKCR,"CLSID\%CLSID_ShellSearchAssistantOC%\InProcServer32","ThreadingModel",,"Apartment" -HKCR,"CLSID\%CLSID_ShellSearchAssistantOC%\ProgID",,,"SearchAssistantOC.SearchAssistantOC.1" -HKCR,"CLSID\%CLSID_ShellSearchAssistantOC%\VersionIndependentProgID",,,"SearchAssistantOC.SearchAssistantOC" - -HKCR,"CLSID\%CLSID_WebBrowser_V1%",,,"Microsoft Web Browser Version 1" -HKCR,"CLSID\%CLSID_WebBrowser_V1%\InProcServer32",,,"%MODULE%" -HKCR,"CLSID\%CLSID_WebBrowser_V1%\InProcServer32","ThreadingModel",,"Apartment" -HKCR,"CLSID\%CLSID_WebBrowser_V1%\ProgID",,,"Shell.Explorer.1" -HKCR,"CLSID\%CLSID_WebBrowser_V1%\VersionIndependentProgID",,,"Shell.Explorer" -HKCR,"Shell.Explorer.1",,,"Microsoft Web Browser" -HKCR,"Shell.Explorer.1\CLSID",,,"%CLSID_WebBrowser_V1%" - -HKCR,"CLSID\%CLSID_InternetShortcut%",,,"Internet Shortcut" -HKCR,"CLSID\%CLSID_InternetShortcut%\InProcServer32",,,"%MODULE%" -HKCR,"CLSID\%CLSID_InternetShortcut%\InProcServer32","ThreadingModel",,"Apartment" -HKCR,"CLSID\%CLSID_InternetShortcut%\ProgID",,,"InternetShortcut" -HKCR,"CLSID\%CLSID_InternetShortcut%\shellex\MayChangeDefaultMenu",,16 -HKCR,"InternetShortcut",,,"Internet Shortcut" -HKCR,"InternetShortcut","EditFlags",2,"2" -HKCR,"InternetShortcut","IsShortcut",, -HKCR,"InternetShortcut","NeverShowExt",, -HKCR,"InternetShortcut\CLSID",,,"%CLSID_InternetShortcut%" -HKCR,"InternetShortcut\DefaultIcon",,,"url.dll,0" -HKCR,"InternetShortcut\shell\open\command",,,"rundll32.exe shdocvw.dll,OpenURL %l" -HKCR,"InternetShortcut\shell\print\command",,,"rundll32.exe mshtml.dll,PrintHTML ""%1""" -HKCR,"InternetShortcut\shell\printto\command",,,"rundll32.exe mshtml.dll,PrintHTML ""%1"" ""%2"" ""%3"" ""%4""" - -HKCR,"CLSID\%CLSID_TaskbarList%",,,"Task Bar Communication" -HKCR,"CLSID\%CLSID_TaskbarList%\InProcServer32",,,"%MODULE%" -HKCR,"CLSID\%CLSID_TaskbarList%\InProcServer32","ThreadingModel",,"Apartment" - -[URL.Reg] -HKLM,"Software\Microsoft\Windows\CurrentVersion\URL\DefaultPrefix",,,"http://" -HKLM,"Software\Microsoft\Windows\CurrentVersion\URL\Prefixes","ftp",,"ftp://" -HKLM,"Software\Microsoft\Windows\CurrentVersion\URL\Prefixes","gopher",,"gopher://" -HKLM,"Software\Microsoft\Windows\CurrentVersion\URL\Prefixes","home",,"http://" -HKLM,"Software\Microsoft\Windows\CurrentVersion\URL\Prefixes","mosaic",,"http://" -HKLM,"Software\Microsoft\Windows\CurrentVersion\URL\Prefixes","www",,"http://" - - -[Settings.Reg] -HKCU,"Software\Microsoft\Internet Explorer\Main","Start Page",2,"http://www.winehq.org" -HKCU,"Software\Microsoft\Internet Explorer\Main","Search Page",2,"http://www.google.com" -HKCU,"Software\Microsoft\Internet Explorer\Settings","Text Color",2,"0,0,0" -HKLM,"Software\Microsoft\Internet Explorer\Main","Default_Page_URL",2,"http://www.winehq.org" -HKLM,"Software\Microsoft\Windows\CurrentVersion\App Paths\iexplore.exe",,,"%16422%\Internet Explorer\iexplore.exe" -HKLM,"Software\Microsoft\Windows\CurrentVersion\App Paths\iexplore.exe","Path",,"%16422%\Internet Explorer;" - - -[IE.Reg] -HKLM,"Software\Microsoft\Internet Explorer","Build",,"86001" -HKLM,"Software\Microsoft\Internet Explorer","Version",,"8.0.6001.18702" -HKLM,"Software\Microsoft\Internet Explorer","W2kVersion",,"8.0.6001.18702" - - -[Strings] -MODULE="shdocvw.dll" diff --git a/reactos/dll/win32/shdocvw/shdocvw.rc b/reactos/dll/win32/shdocvw/shdocvw.rc index 4dfefce6d53..37a63334ddc 100644 --- a/reactos/dll/win32/shdocvw/shdocvw.rc +++ b/reactos/dll/win32/shdocvw/shdocvw.rc @@ -16,73 +16,16 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ -#define WINE_OLESELFREGISTER +#include + +LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL + #define WINE_FILEDESCRIPTION_STR "Wine core dll" #define WINE_FILENAME_STR "shdocvw.dll" #define WINE_FILEVERSION 6,0,2900,2180 #define WINE_FILEVERSION_STR "6.0.2900.2180" #define WINE_PRODUCTVERSION 6,0,2900,2180 #define WINE_PRODUCTVERSION_STR "6.0.2900.2180" +#define WINE_EXTRAVALUES VALUE "OLESelfRegister","" -#include "wine/wine_common_ver.rc" - -LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL - -/* @makedep: shdocvw_v1.tlb */ -1 TYPELIB shdocvw_v1.tlb - -/* @makedep: shdocvw.inf */ -REGINST REGINST shdocvw.inf - -/* @makedep: ietoolbar.bmp */ -IDB_IETOOLBAR BITMAP ietoolbar.bmp - -#ifdef LANGUAGE_DE_DE - #include "De.rc" -#endif -#ifdef LANGUAGE_EN_US - #include "En.rc" -#endif -#ifdef LANGUAGE_ES_ES - #include "Es.rc" -#endif -#ifdef LANGUAGE_FR_FR - #include "Fr.rc" -#endif -#ifdef LANGUAGE_HE_IL - #include "He.rc" -#endif -#ifdef LANGUAGE_IT_IT - #include "It.rc" -#endif -#ifdef LANGUAGE_KO_KR - #include "Ko.rc" -#endif -#ifdef LANGUAGE_LT_LT - #include "Lt.rc" -#endif -#ifdef LANGUAGE_NL_NL - #include "Nl.rc" -#endif -//#include "Pl.rc" -#ifdef LANGUAGE_PT_PT - #include "Pt.rc" -#endif -#ifdef LANGUAGE_RO_RO - #include "Ro.rc" -#endif -#ifdef LANGUAGE_SL_SI - #include "Si.rc" -#endif -#ifdef LANGUAGE_SR_SP - #include "Sr.rc" -#endif -#ifdef LANGUAGE_SV_SE - #include "Sv.rc" -#endif -#ifdef LANGUAGE_TR_TR - #include "Tr.rc" -#endif -#ifdef LANGUAGE_UK_UA - #include "Uk.rc" -#endif +#include diff --git a/reactos/dll/win32/shdocvw/shdocvw.spec b/reactos/dll/win32/shdocvw/shdocvw.spec index 4f1cbf2209d..2ca6d0279db 100644 --- a/reactos/dll/win32/shdocvw/shdocvw.spec +++ b/reactos/dll/win32/shdocvw/shdocvw.spec @@ -20,7 +20,7 @@ 123 stdcall -noname StopWatchAFORWARD(long str long long long) 124 stdcall -noname StopWatchWFORWARD(long wstr long long long) 125 stdcall -noname RunInstallUninstallStubs() -130 stub -noname RunInstallUninstallStubs2 +130 stdcall -noname RunInstallUninstallStubs2() 131 stub -noname SHCreateSplashScreen 135 stub -noname IsFileUrl 136 stub -noname IsFileUrlW @@ -122,7 +122,7 @@ @ stub IEWriteErrorLog @ stdcall ImportPrivacySettings(wstr ptr ptr) @ stub InstallReg_RunDLL -@ stdcall OpenURL(long long str long) +@ stdcall OpenURL(long long str long) ieframe.OpenURL @ stub SHGetIDispatchForFolder @ stdcall SetQueryNetSessionCount(long) @ stub SoftwareUpdateMessageBox diff --git a/reactos/dll/win32/shdocvw/shdocvw_main.c b/reactos/dll/win32/shdocvw/shdocvw_main.c index 6f752d5879b..bbab8373ae9 100644 --- a/reactos/dll/win32/shdocvw/shdocvw_main.c +++ b/reactos/dll/win32/shdocvw/shdocvw_main.c @@ -30,9 +30,10 @@ #include "shdocvw.h" -//#include "winreg.h" +#include #include #include +//#include "isguids.h" //#include "initguid.h" @@ -40,56 +41,101 @@ WINE_DEFAULT_DEBUG_CHANNEL(shdocvw); LONG SHDOCVW_refCount = 0; -HINSTANCE shdocvw_hinstance = 0; static HMODULE SHDOCVW_hshell32 = 0; -static ITypeInfo *wb_typeinfo = NULL; +static HINSTANCE ieframe_instance; -HRESULT get_typeinfo(ITypeInfo **typeinfo) +static HINSTANCE get_ieframe_instance(void) { - ITypeLib *typelib; - HRESULT hres; + static const WCHAR ieframe_dllW[] = {'i','e','f','r','a','m','e','.','d','l','l',0}; - if(wb_typeinfo) { - *typeinfo = wb_typeinfo; - return S_OK; - } + if(!ieframe_instance) + ieframe_instance = LoadLibraryW(ieframe_dllW); - hres = LoadRegTypeLib(&LIBID_SHDocVw, 1, 1, LOCALE_SYSTEM_DEFAULT, &typelib); - if(FAILED(hres)) { - ERR("LoadRegTypeLib failed: %08x\n", hres); - return hres; - } - - hres = ITypeLib_GetTypeInfoOfGuid(typelib, &IID_IWebBrowser2, &wb_typeinfo); - ITypeLib_Release(typelib); - - *typeinfo = wb_typeinfo; - return hres; + return ieframe_instance; } -const char *debugstr_variant(const VARIANT *v) +static HRESULT get_ieframe_object(REFCLSID rclsid, REFIID riid, void **ppv) { - if(!v) - return "(null)"; + HINSTANCE ieframe_instance; - switch(V_VT(v)) { - case VT_EMPTY: - return "{VT_EMPTY}"; - case VT_NULL: - return "{VT_NULL}"; - case VT_I4: - return wine_dbg_sprintf("{VT_I4: %d}", V_I4(v)); - case VT_R8: - return wine_dbg_sprintf("{VT_R8: %lf}", V_R8(v)); - case VT_BSTR: - return wine_dbg_sprintf("{VT_BSTR: %s}", debugstr_w(V_BSTR(v))); - case VT_DISPATCH: - return wine_dbg_sprintf("{VT_DISPATCH: %p}", V_DISPATCH(v)); - case VT_BOOL: - return wine_dbg_sprintf("{VT_BOOL: %x}", V_BOOL(v)); - default: - return wine_dbg_sprintf("{vt %d}", V_VT(v)); + static HRESULT (WINAPI *ieframe_DllGetClassObject)(REFCLSID,REFIID,void**); + + if(!ieframe_DllGetClassObject) { + ieframe_instance = get_ieframe_instance(); + if(!ieframe_instance) + return CLASS_E_CLASSNOTAVAILABLE; + + ieframe_DllGetClassObject = (void*)GetProcAddress(ieframe_instance, "DllGetClassObject"); + if(!ieframe_DllGetClassObject) + return CLASS_E_CLASSNOTAVAILABLE; } + + return ieframe_DllGetClassObject(rclsid, riid, ppv); +} + +/************************************************************************* + * DllGetClassObject (SHDOCVW.@) + */ +HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, void **ppv) +{ + TRACE("\n"); + + if(IsEqualGUID(&CLSID_WebBrowser, rclsid) + || IsEqualGUID(&CLSID_WebBrowser_V1, rclsid) + || IsEqualGUID(&CLSID_InternetShortcut, rclsid) + || IsEqualGUID(&CLSID_CUrlHistory, rclsid) + || IsEqualGUID(&CLSID_TaskbarList, rclsid)) + return get_ieframe_object(rclsid, riid, ppv); + + /* As a last resort, figure if the CLSID belongs to a 'Shell Instance Object' */ + return SHDOCVW_GetShellInstanceObjectClassObject(rclsid, riid, ppv); +} + +/*********************************************************************** + * DllRegisterServer (shdocvw.@) + */ +HRESULT WINAPI DllRegisterServer(void) +{ + TRACE("\n"); + return S_OK; +} + +/*********************************************************************** + * DllUnregisterServer (shdocvw.@) + */ +HRESULT WINAPI DllUnregisterServer(void) +{ + TRACE("\n"); + return S_OK; +} + +/****************************************************************** + * IEWinMain (SHDOCVW.101) + * + * Only returns on error. + */ +DWORD WINAPI IEWinMain(LPSTR szCommandLine, int nShowWindow) +{ + DWORD (WINAPI *pIEWinMain)(const WCHAR*,int); + WCHAR *cmdline; + DWORD ret, len; + + TRACE("%s %d\n", debugstr_a(szCommandLine), nShowWindow); + + pIEWinMain = (void*)GetProcAddress(get_ieframe_instance(), MAKEINTRESOURCEA(101)); + if(!pIEWinMain) + ExitProcess(1); + + len = MultiByteToWideChar(CP_ACP, 0, szCommandLine, -1, NULL, 0); + cmdline = heap_alloc(len*sizeof(WCHAR)); + if(!cmdline) + ExitProcess(1); + MultiByteToWideChar(CP_ACP, 0, szCommandLine, -1, cmdline, len); + + ret = pIEWinMain(cmdline, nShowWindow); + + heap_free(cmdline); + return ret; } /************************************************************************* @@ -101,14 +147,11 @@ BOOL WINAPI DllMain(HINSTANCE hinst, DWORD fdwReason, LPVOID fImpLoad) switch (fdwReason) { case DLL_PROCESS_ATTACH: - shdocvw_hinstance = hinst; - register_iewindow_class(); break; case DLL_PROCESS_DETACH: if (SHDOCVW_hshell32) FreeLibrary(SHDOCVW_hshell32); - unregister_iewindow_class(); - if(wb_typeinfo) - ITypeInfo_Release(wb_typeinfo); + if(ieframe_instance) + FreeLibrary(ieframe_instance); break; } return TRUE; @@ -209,6 +252,17 @@ DWORD WINAPI RunInstallUninstallStubs(void) return 0x0deadbee; } +/*********************************************************************** + * @ (SHDOCVW.130) + * + * Called by Emerge Desktop (alternative Windows Shell). + */ +DWORD WINAPI RunInstallUninstallStubs2(void) +{ + FIXME("(), stub!\n"); + return 0x0deadbee; +} + /*********************************************************************** * SetQueryNetSessionCount (SHDOCVW.@) */ @@ -333,14 +387,8 @@ DWORD WINAPI ParseURLFromOutsideSourceW(LPCWSTR url, LPWSTR out, LPDWORD plen, L if (!PathIsURLW(ptr)) { len = sizeof(buffer_in) / sizeof(buffer_in[0]); buffer_in[0] = 0; - hr = UrlApplySchemeW(ptr, buffer_in, &len, URL_APPLY_GUESSSCHEME); + hr = UrlApplySchemeW(ptr, buffer_in, &len, URL_APPLY_GUESSSCHEME | URL_APPLY_DEFAULT); TRACE("got 0x%x with %s\n", hr, debugstr_w(buffer_in)); - if (hr != S_OK) { - /* when we can't guess the scheme, use the default scheme */ - len = sizeof(buffer_in) / sizeof(buffer_in[0]); - hr = UrlApplySchemeW(ptr, buffer_in, &len, URL_APPLY_DEFAULT); - } - if (hr == S_OK) { /* we parsed the url to buffer_in */ ptr = buffer_in; diff --git a/reactos/dll/win32/shdocvw/shlinstobj.c b/reactos/dll/win32/shdocvw/shlinstobj.c index 03499a61f53..90a9452351c 100644 --- a/reactos/dll/win32/shdocvw/shlinstobj.c +++ b/reactos/dll/win32/shdocvw/shlinstobj.c @@ -23,13 +23,13 @@ * some registry entries. This feature was introduced with win2k. Please * search for 'Shell Instance Objects' on MSDN to get more information. */ -//#include +#include #define COBJMACROS -//#include "windef.h" -//#include "winbase.h" -//#include "winreg.h" +#include +#include +#include //#include "objbase.h" //#include "oleauto.h" @@ -40,8 +40,6 @@ WINE_DEFAULT_DEBUG_CHANNEL(shdocvw); -#define ADJUST_THIS(c,m,p) ((c*)(((long)p)-(long)&(((c*)0)->lp##m##Vtbl))) -#define STATIC_CAST(i,p) ((i*)&p->lp##i##Vtbl) #define CHARS_IN_GUID 39 /****************************************************************************** @@ -50,22 +48,20 @@ WINE_DEFAULT_DEBUG_CHANNEL(shdocvw); * Gives access to a registry key's values via the IPropertyBag interface. */ typedef struct _RegistryPropertyBag { - const IPropertyBagVtbl *lpIPropertyBagVtbl; + IPropertyBag IPropertyBag_iface; LONG m_cRef; HKEY m_hInitPropertyBagKey; } RegistryPropertyBag; -static void RegistryPropertyBag_Destroy(RegistryPropertyBag *This) { - TRACE("This=%p)\n", This); - - RegCloseKey(This->m_hInitPropertyBagKey); - heap_free(This); +static inline RegistryPropertyBag *impl_from_IPropertyBag(IPropertyBag *iface) +{ + return CONTAINING_RECORD(iface, RegistryPropertyBag, IPropertyBag_iface); } static HRESULT WINAPI RegistryPropertyBag_IPropertyBag_QueryInterface(IPropertyBag *iface, REFIID riid, void **ppv) { - RegistryPropertyBag *This = ADJUST_THIS(RegistryPropertyBag, IPropertyBag, iface); + RegistryPropertyBag *This = impl_from_IPropertyBag(iface); TRACE("(iface=%p, riid=%s, ppv=%p)\n", iface, debugstr_guid(riid), ppv); @@ -73,7 +69,7 @@ static HRESULT WINAPI RegistryPropertyBag_IPropertyBag_QueryInterface(IPropertyB return E_INVALIDARG; if (IsEqualIID(&IID_IUnknown, riid) || IsEqualIID(&IID_IPropertyBag, riid)) { - *ppv = STATIC_CAST(IPropertyBag, This); + *ppv = &This->IPropertyBag_iface; } else { *ppv = NULL; return E_NOINTERFACE; @@ -83,8 +79,9 @@ static HRESULT WINAPI RegistryPropertyBag_IPropertyBag_QueryInterface(IPropertyB return S_OK; } -static ULONG WINAPI RegistryPropertyBag_IPropertyBag_AddRef(IPropertyBag *iface) { - RegistryPropertyBag *This = ADJUST_THIS(RegistryPropertyBag, IPropertyBag, iface); +static ULONG WINAPI RegistryPropertyBag_IPropertyBag_AddRef(IPropertyBag *iface) +{ + RegistryPropertyBag *This = impl_from_IPropertyBag(iface); ULONG cRef; TRACE("(iface=%p)\n", iface); @@ -97,16 +94,19 @@ static ULONG WINAPI RegistryPropertyBag_IPropertyBag_AddRef(IPropertyBag *iface) return cRef; } -static ULONG WINAPI RegistryPropertyBag_IPropertyBag_Release(IPropertyBag *iface) { - RegistryPropertyBag *This = ADJUST_THIS(RegistryPropertyBag, IPropertyBag, iface); +static ULONG WINAPI RegistryPropertyBag_IPropertyBag_Release(IPropertyBag *iface) +{ + RegistryPropertyBag *This = impl_from_IPropertyBag(iface); ULONG cRef; TRACE("(iface=%p)\n", iface); cRef = InterlockedDecrement(&This->m_cRef); - if (cRef == 0) { - RegistryPropertyBag_Destroy(This); + if (cRef == 0) { + TRACE("Destroying This=%p)\n", This); + RegCloseKey(This->m_hInitPropertyBagKey); + heap_free(This); SHDOCVW_UnlockModule(); } @@ -116,7 +116,7 @@ static ULONG WINAPI RegistryPropertyBag_IPropertyBag_Release(IPropertyBag *iface static HRESULT WINAPI RegistryPropertyBag_IPropertyBag_Read(IPropertyBag *iface, LPCOLESTR pwszPropName, VARIANT *pVar, IErrorLog *pErrorLog) { - RegistryPropertyBag *This = ADJUST_THIS(RegistryPropertyBag, IPropertyBag, iface); + RegistryPropertyBag *This = impl_from_IPropertyBag(iface); WCHAR *pwszValue; DWORD dwType, cbData; LONG res; @@ -178,15 +178,15 @@ static HRESULT RegistryPropertyBag_Constructor(HKEY hInitPropertyBagKey, REFIID pRegistryPropertyBag = heap_alloc(sizeof(RegistryPropertyBag)); if (pRegistryPropertyBag) { - pRegistryPropertyBag->lpIPropertyBagVtbl = &RegistryPropertyBag_IPropertyBagVtbl; + pRegistryPropertyBag->IPropertyBag_iface.lpVtbl = &RegistryPropertyBag_IPropertyBagVtbl; pRegistryPropertyBag->m_cRef = 0; pRegistryPropertyBag->m_hInitPropertyBagKey = hInitPropertyBagKey; /* The clasping AddRef/Release is for the case that QueryInterface fails, which will result * in a reference count of 0 in the Release call, which will result in object destruction.*/ - IPropertyBag_AddRef(STATIC_CAST(IPropertyBag, pRegistryPropertyBag)); - hr = IPropertyBag_QueryInterface(STATIC_CAST(IPropertyBag, pRegistryPropertyBag), riid, ppvObject); - IPropertyBag_Release(STATIC_CAST(IPropertyBag, pRegistryPropertyBag)); + IPropertyBag_AddRef(&pRegistryPropertyBag->IPropertyBag_iface); + hr = IPropertyBag_QueryInterface(&pRegistryPropertyBag->IPropertyBag_iface, riid, ppvObject); + IPropertyBag_Release(&pRegistryPropertyBag->IPropertyBag_iface); } return hr; @@ -198,21 +198,21 @@ static HRESULT RegistryPropertyBag_Constructor(HKEY hInitPropertyBagKey, REFIID * values of a PropertyBag. */ typedef struct _InstanceObjectFactory { - const IClassFactoryVtbl *lpIClassFactoryVtbl; + IClassFactory IClassFactory_iface; LONG m_cRef; CLSID m_clsidInstance; /* CLSID of the objects to create. */ IPropertyBag *m_pPropertyBag; /* PropertyBag to initialize those objects. */ } InstanceObjectFactory; -static void InstanceObjectFactory_Destroy(InstanceObjectFactory *This) { - IPropertyBag_Release(This->m_pPropertyBag); - heap_free(This); +static inline InstanceObjectFactory *impl_from_IClassFactory(IClassFactory *iface) +{ + return CONTAINING_RECORD(iface, InstanceObjectFactory, IClassFactory_iface); } -static HRESULT WINAPI InstanceObjectFactory_IClassFactory_QueryInterface(IClassFactory *iface, - REFIID riid, LPVOID* ppv) +static HRESULT WINAPI InstanceObjectFactory_IClassFactory_QueryInterface(IClassFactory *iface, + REFIID riid, void **ppv) { - InstanceObjectFactory *This = ADJUST_THIS(InstanceObjectFactory, IClassFactory, iface); + InstanceObjectFactory *This = impl_from_IClassFactory(iface); TRACE("iface=%p, riid=%s, ppv=%p)\n", iface, debugstr_guid(riid), ppv); @@ -220,7 +220,7 @@ static HRESULT WINAPI InstanceObjectFactory_IClassFactory_QueryInterface(IClassF return E_INVALIDARG; if (IsEqualIID(&IID_IUnknown, riid) || IsEqualIID(&IID_IClassFactory, riid)) { - *ppv = STATIC_CAST(IClassFactory, This); + *ppv = &This->IClassFactory_iface; } else { *ppv = NULL; return E_NOINTERFACE; @@ -232,7 +232,7 @@ static HRESULT WINAPI InstanceObjectFactory_IClassFactory_QueryInterface(IClassF static ULONG WINAPI InstanceObjectFactory_IClassFactory_AddRef(IClassFactory *iface) { - InstanceObjectFactory *This = ADJUST_THIS(InstanceObjectFactory, IClassFactory, iface); + InstanceObjectFactory *This = impl_from_IClassFactory(iface); ULONG cRef; TRACE("(iface=%p)\n", iface); @@ -247,16 +247,17 @@ static ULONG WINAPI InstanceObjectFactory_IClassFactory_AddRef(IClassFactory *if static ULONG WINAPI InstanceObjectFactory_IClassFactory_Release(IClassFactory *iface) { - InstanceObjectFactory *This = ADJUST_THIS(InstanceObjectFactory, IClassFactory, iface); + InstanceObjectFactory *This = impl_from_IClassFactory(iface); ULONG cRef; TRACE("(iface=%p)\n", iface); cRef = InterlockedDecrement(&This->m_cRef); - if (cRef == 0) { + if (cRef == 0) { IClassFactory_LockServer(iface, FALSE); - InstanceObjectFactory_Destroy(This); + IPropertyBag_Release(This->m_pPropertyBag); + heap_free(This); } return cRef; @@ -265,12 +266,12 @@ static ULONG WINAPI InstanceObjectFactory_IClassFactory_Release(IClassFactory *i static HRESULT WINAPI InstanceObjectFactory_IClassFactory_CreateInstance(IClassFactory *iface, IUnknown *pUnkOuter, REFIID riid, LPVOID *ppvObj) { - InstanceObjectFactory *This = ADJUST_THIS(InstanceObjectFactory, IClassFactory, iface); + InstanceObjectFactory *This = impl_from_IClassFactory(iface); IPersistPropertyBag *pPersistPropertyBag; HRESULT hr; - + TRACE("(pUnkOuter=%p, riid=%s, ppvObj=%p)\n", pUnkOuter, debugstr_guid(riid), ppvObj); - + hr = CoCreateInstance(&This->m_clsidInstance, NULL, CLSCTX_INPROC_SERVER, &IID_IPersistPropertyBag, (LPVOID*)&pPersistPropertyBag); if (FAILED(hr)) { @@ -281,7 +282,7 @@ static HRESULT WINAPI InstanceObjectFactory_IClassFactory_CreateInstance(IClassF hr = IPersistPropertyBag_Load(pPersistPropertyBag, This->m_pPropertyBag, NULL); if (FAILED(hr)) { - TRACE("Failed to initialize object from ProperyBag: hr = %08x\n", hr); + TRACE("Failed to initialize object from PropertyBag: hr = %08x\n", hr); IPersistPropertyBag_Release(pPersistPropertyBag); return hr; } @@ -324,16 +325,16 @@ static HRESULT InstanceObjectFactory_Constructor(REFCLSID rclsid, IPropertyBag * pInstanceObjectFactory = heap_alloc(sizeof(InstanceObjectFactory)); if (pInstanceObjectFactory) { - pInstanceObjectFactory->lpIClassFactoryVtbl = &InstanceObjectFactory_IClassFactoryVtbl; + pInstanceObjectFactory->IClassFactory_iface.lpVtbl = &InstanceObjectFactory_IClassFactoryVtbl; pInstanceObjectFactory->m_cRef = 0; pInstanceObjectFactory->m_clsidInstance = *rclsid; pInstanceObjectFactory->m_pPropertyBag = pPropertyBag; IPropertyBag_AddRef(pPropertyBag); - IClassFactory_AddRef(STATIC_CAST(IClassFactory, pInstanceObjectFactory)); - hr = IClassFactory_QueryInterface(STATIC_CAST(IClassFactory, pInstanceObjectFactory), + IClassFactory_AddRef(&pInstanceObjectFactory->IClassFactory_iface); + hr = IClassFactory_QueryInterface(&pInstanceObjectFactory->IClassFactory_iface, riid, ppvObject); - IClassFactory_Release(STATIC_CAST(IClassFactory, pInstanceObjectFactory)); + IClassFactory_Release(&pInstanceObjectFactory->IClassFactory_iface); } return hr; @@ -375,16 +376,15 @@ HRESULT SHDOCVW_GetShellInstanceObjectClassObject(REFCLSID rclsid, REFIID riid, ppvClassObj); /* Figure if there is an 'Instance' subkey for the given CLSID and acquire a handle. */ - if (!StringFromGUID2(rclsid, wszInstanceKey + 6, CHARS_IN_GUID) || - !(wszInstanceKey[5+CHARS_IN_GUID]='\\') || /* Repair the null-termination. */ - ERROR_SUCCESS != RegOpenKeyExW(HKEY_CLASSES_ROOT, wszInstanceKey, 0, KEY_READ, &hInstanceKey)) - { + if (!StringFromGUID2(rclsid, wszInstanceKey + 6, CHARS_IN_GUID)) + return CLASS_E_CLASSNOTAVAILABLE; + wszInstanceKey[5+CHARS_IN_GUID] = '\\'; /* Repair the null-termination. */ + if (ERROR_SUCCESS != RegOpenKeyExW(HKEY_CLASSES_ROOT, wszInstanceKey, 0, KEY_READ, &hInstanceKey)) /* If there is no 'Instance' subkey, then it's not a Shell Instance Object. */ return CLASS_E_CLASSNOTAVAILABLE; - } - if (RegQueryValueExW(hInstanceKey, wszCLSID, NULL, &dwType, (LPBYTE)wszCLSIDInstance, &cbBytes) - != ERROR_SUCCESS || FAILED(CLSIDFromString(wszCLSIDInstance, &clsidInstance))) + if (ERROR_SUCCESS != RegQueryValueExW(hInstanceKey, wszCLSID, NULL, &dwType, (LPBYTE)wszCLSIDInstance, &cbBytes) || + FAILED(CLSIDFromString(wszCLSIDInstance, &clsidInstance))) { /* 'Instance' should have a 'CLSID' value with a well-formed clsid-string. */ FIXME("Failed to infer instance CLSID! %s\n", debugstr_w(wszCLSIDInstance)); @@ -402,9 +402,9 @@ HRESULT SHDOCVW_GetShellInstanceObjectClassObject(REFCLSID rclsid, REFIID riid, return CLASS_E_CLASSNOTAVAILABLE; } - /* If the construction succeeds, the new RegistryPropertyBag is responsible for closing - * hInitProperyBagKey. */ - hr = RegistryPropertyBag_Constructor(hInitPropertyBagKey, &IID_IPropertyBag, + /* If the construction succeeds, the new RegistryPropertyBag is responsible for closing + * hInitPropertyBagKey. */ + hr = RegistryPropertyBag_Constructor(hInitPropertyBagKey, &IID_IPropertyBag, (LPVOID*)&pInitPropertyBag); if (FAILED(hr)) { RegCloseKey(hInitPropertyBagKey); diff --git a/reactos/dll/win32/shdocvw/taskbarlist.c b/reactos/dll/win32/shdocvw/taskbarlist.c deleted file mode 100644 index 0d5e0fa91cd..00000000000 --- a/reactos/dll/win32/shdocvw/taskbarlist.c +++ /dev/null @@ -1,168 +0,0 @@ -/* - * Copyright 2009 Henri Verbeet for CodeWeavers - * - * 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 -//#include "wine/port.h" -#include - -#include "shdocvw.h" - -WINE_DEFAULT_DEBUG_CHANNEL(shdocvw); - -struct taskbar_list -{ - const struct ITaskbarListVtbl *lpVtbl; - LONG refcount; -}; - -/* IUnknown methods */ - -static HRESULT STDMETHODCALLTYPE taskbar_list_QueryInterface(ITaskbarList *iface, REFIID riid, void **object) -{ - TRACE("iface %p, riid %s, object %p\n", iface, debugstr_guid(riid), object); - - if (IsEqualGUID(riid, &IID_ITaskbarList) - || IsEqualGUID(riid, &IID_IUnknown)) - { - IUnknown_AddRef(iface); - *object = iface; - return S_OK; - } - - WARN("%s not implemented, returning E_NOINTERFACE\n", debugstr_guid(riid)); - - *object = NULL; - return E_NOINTERFACE; -} - -static ULONG STDMETHODCALLTYPE taskbar_list_AddRef(ITaskbarList *iface) -{ - struct taskbar_list *This = (struct taskbar_list *)iface; - ULONG refcount = InterlockedIncrement(&This->refcount); - - TRACE("%p increasing refcount to %u\n", This, refcount); - - return refcount; -} - -static ULONG STDMETHODCALLTYPE taskbar_list_Release(ITaskbarList *iface) -{ - struct taskbar_list *This = (struct taskbar_list *)iface; - ULONG refcount = InterlockedDecrement(&This->refcount); - - TRACE("%p decreasing refcount to %u\n", This, refcount); - - if (!refcount) - { - HeapFree(GetProcessHeap(), 0, This); - SHDOCVW_UnlockModule(); - } - - return refcount; -} - -/* ITaskbarList methods */ - -static HRESULT STDMETHODCALLTYPE taskbar_list_HrInit(ITaskbarList *iface) -{ - TRACE("iface %p\n", iface); - - return S_OK; -} - -static HRESULT STDMETHODCALLTYPE taskbar_list_AddTab(ITaskbarList *iface, HWND hwnd) -{ - FIXME("iface %p, hwnd %p stub!\n", iface, hwnd); - - return E_NOTIMPL; -} - -static HRESULT STDMETHODCALLTYPE taskbar_list_DeleteTab(ITaskbarList *iface, HWND hwnd) -{ - FIXME("iface %p, hwnd %p stub!\n", iface, hwnd); - - return E_NOTIMPL; -} - -static HRESULT STDMETHODCALLTYPE taskbar_list_ActivateTab(ITaskbarList *iface, HWND hwnd) -{ - FIXME("iface %p, hwnd %p stub!\n", iface, hwnd); - - return E_NOTIMPL; -} - -static HRESULT STDMETHODCALLTYPE taskbar_list_SetActiveAlt(ITaskbarList *iface, HWND hwnd) -{ - FIXME("iface %p, hwnd %p stub!\n", iface, hwnd); - - return E_NOTIMPL; -} - -static const struct ITaskbarListVtbl taskbar_list_vtbl = -{ - /* IUnknown methods */ - taskbar_list_QueryInterface, - taskbar_list_AddRef, - taskbar_list_Release, - /* ITaskbarList methods */ - taskbar_list_HrInit, - taskbar_list_AddTab, - taskbar_list_DeleteTab, - taskbar_list_ActivateTab, - taskbar_list_SetActiveAlt, -}; - -HRESULT TaskbarList_Create(IUnknown *outer, REFIID riid, void **taskbar_list) -{ - struct taskbar_list *object; - HRESULT hr; - - TRACE("outer %p, riid %s, taskbar_list %p\n", outer, debugstr_guid(riid), taskbar_list); - - if (outer) - { - WARN("Aggregation not supported\n"); - *taskbar_list = NULL; - return CLASS_E_NOAGGREGATION; - } - - object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*object)); - if (!object) - { - ERR("Failed to allocate taskbar list object memory\n"); - *taskbar_list = NULL; - return E_OUTOFMEMORY; - } - - object->lpVtbl = &taskbar_list_vtbl; - object->refcount = 0; - - TRACE("Created ITaskbarList %p\n", object); - - hr = ITaskbarList_QueryInterface((ITaskbarList *)object, riid, taskbar_list); - if (FAILED(hr)) - { - HeapFree(GetProcessHeap(), 0, object); - return hr; - } - - SHDOCVW_LockModule(); - - return S_OK; -} diff --git a/reactos/dll/win32/shdocvw/urlhist.c b/reactos/dll/win32/shdocvw/urlhist.c deleted file mode 100644 index c66d4c21856..00000000000 --- a/reactos/dll/win32/shdocvw/urlhist.c +++ /dev/null @@ -1,131 +0,0 @@ -/* - * Copyright 2006 Jacek Caban for CodeWeavers - * - * 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 -#include "shdocvw.h" -#include - -WINE_DEFAULT_DEBUG_CHANNEL(shdocvw); - -static HRESULT WINAPI UrlHistoryStg_QueryInterface(IUrlHistoryStg2 *iface, REFIID riid, void **ppv) -{ - *ppv = NULL; - - if(IsEqualGUID(&IID_IUnknown, riid)) { - TRACE("(IID_IUnknown %p)\n", ppv); - *ppv = iface; - }else if(IsEqualGUID(&IID_IUrlHistoryStg, riid)) { - TRACE("(IID_IUrlHistoryStg %p)\n", ppv); - *ppv = iface; - }else if(IsEqualGUID(&IID_IUrlHistoryStg2, riid)) { - TRACE("(IID_IUrlHistoryStg2 %p)\n", ppv); - *ppv = iface; - } - - if(*ppv) { - IUnknown_AddRef((IUnknown*)*ppv); - return S_OK; - } - - WARN("(%s %p)\n", debugstr_guid(riid), ppv); - return E_NOINTERFACE; -} - -static ULONG WINAPI UrlHistoryStg_AddRef(IUrlHistoryStg2 *iface) -{ - SHDOCVW_LockModule(); - return 2; -} - -static ULONG WINAPI UrlHistoryStg_Release(IUrlHistoryStg2 *iface) -{ - SHDOCVW_UnlockModule(); - return 1; -} - -static HRESULT WINAPI UrlHistoryStg_AddUrl(IUrlHistoryStg2 *iface, LPCOLESTR lpcsUrl, - LPCOLESTR pocsTitle, DWORD dwFlags) -{ - FIXME("(%s %s %08x)\n", debugstr_w(lpcsUrl), debugstr_w(pocsTitle), dwFlags); - return E_NOTIMPL; -} - -static HRESULT WINAPI UrlHistoryStg_DeleteUrl(IUrlHistoryStg2 *iface, LPCOLESTR lpcsUrl, - DWORD dwFlags) -{ - FIXME("(%s %08x)\n", debugstr_w(lpcsUrl), dwFlags); - return E_NOTIMPL; -} - -static HRESULT WINAPI UrlHistoryStg_QueryUrl(IUrlHistoryStg2 *iface, LPCOLESTR lpcsUrl, - DWORD dwFlags, LPSTATURL lpSTATURL) -{ - FIXME("(%s %08x %p)\n", debugstr_w(lpcsUrl), dwFlags, lpSTATURL); - return E_NOTIMPL; -} - -static HRESULT WINAPI UrlHistoryStg_BindToObject(IUrlHistoryStg2 *iface, LPCOLESTR lpcsUrl, - REFIID riid, void **ppv) -{ - FIXME("(%s %s %p)\n", debugstr_w(lpcsUrl), debugstr_guid(riid), ppv); - return E_NOTIMPL; -} - -static HRESULT WINAPI UrlHistoryStg_EnumUrls(IUrlHistoryStg2 *iface, IEnumSTATURL **ppEnum) -{ - FIXME("(%p)\n", ppEnum); - return E_NOTIMPL; -} - -static HRESULT WINAPI UrlHistoryStg_AddUrlAndNotify(IUrlHistoryStg2 *iface, LPCOLESTR pocsUrl, - LPCOLESTR pocsTitle, DWORD dwFlags, BOOL fWriteHistory, IOleCommandTarget *poctNotify, - IUnknown *punkISFolder) -{ - FIXME("(%s %s %08x %x %p %p)\n", debugstr_w(pocsUrl), debugstr_w(pocsTitle), - dwFlags, fWriteHistory, poctNotify, punkISFolder); - return E_NOTIMPL; -} - -static HRESULT WINAPI UrlHistoryStg_ClearHistory(IUrlHistoryStg2 *iface) -{ - FIXME("()\n"); - return E_NOTIMPL; -} - -static const IUrlHistoryStg2Vtbl UrlHistoryStg2Vtbl = { - UrlHistoryStg_QueryInterface, - UrlHistoryStg_AddRef, - UrlHistoryStg_Release, - UrlHistoryStg_AddUrl, - UrlHistoryStg_DeleteUrl, - UrlHistoryStg_QueryUrl, - UrlHistoryStg_BindToObject, - UrlHistoryStg_EnumUrls, - UrlHistoryStg_AddUrlAndNotify, - UrlHistoryStg_ClearHistory -}; - -static IUrlHistoryStg2 UrlHistoryStg2 = { &UrlHistoryStg2Vtbl }; - -HRESULT CUrlHistory_Create(IUnknown *pOuter, REFIID riid, void **ppv) -{ - if(pOuter) - return CLASS_E_NOAGGREGATION; - - return IUrlHistoryStg_QueryInterface(&UrlHistoryStg2, riid, ppv); -} diff --git a/reactos/dll/win32/shdocvw/version.rc b/reactos/dll/win32/shdocvw/version.rc deleted file mode 100644 index 103b77cb4c3..00000000000 --- a/reactos/dll/win32/shdocvw/version.rc +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright 2003 Francois Gouget (for CodeWeavers) - * - * 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 - */ - -#define WINE_OLESELFREGISTER -#define WINE_FILEDESCRIPTION_STR "Wine core dll" -#define WINE_FILENAME_STR "shdocvw.dll" -#define WINE_FILEVERSION 6,0,2900,2180 -#define WINE_FILEVERSION_STR "6.0.2900.2180" -#define WINE_PRODUCTVERSION 6,0,2900,2180 -#define WINE_PRODUCTVERSION_STR "6.0.2900.2180" - -#include "wine/wine_common_ver.rc" diff --git a/reactos/dll/win32/shdocvw/view.c b/reactos/dll/win32/shdocvw/view.c deleted file mode 100644 index b48ac5c27a3..00000000000 --- a/reactos/dll/win32/shdocvw/view.c +++ /dev/null @@ -1,238 +0,0 @@ -/* - * Copyright 2005 Jacek Caban - * Copyright 2010 Ilya Shpigor - * - * 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 -#include "shdocvw.h" - -WINE_DEFAULT_DEBUG_CHANNEL(shdocvw); - -/********************************************************************** - * Implement the IViewObject interface - */ - -#define VIEWOBJ_THIS(iface) DEFINE_THIS(WebBrowser, ViewObject, iface) - -static HRESULT WINAPI ViewObject_QueryInterface(IViewObject2 *iface, REFIID riid, void **ppv) -{ - WebBrowser *This = VIEWOBJ_THIS(iface); - return IWebBrowser2_QueryInterface(WEBBROWSER(This), riid, ppv); -} - -static ULONG WINAPI ViewObject_AddRef(IViewObject2 *iface) -{ - WebBrowser *This = VIEWOBJ_THIS(iface); - return IWebBrowser2_AddRef(WEBBROWSER(This)); -} - -static ULONG WINAPI ViewObject_Release(IViewObject2 *iface) -{ - WebBrowser *This = VIEWOBJ_THIS(iface); - return IWebBrowser2_Release(WEBBROWSER(This)); -} - -static HRESULT WINAPI ViewObject_Draw(IViewObject2 *iface, DWORD dwDrawAspect, - LONG lindex, void *pvAspect, DVTARGETDEVICE *ptd, HDC hdcTargetDev, - HDC hdcDraw, LPCRECTL lprcBounds, LPCRECTL lprcWBounds, - BOOL (STDMETHODCALLTYPE *pfnContinue)(ULONG_PTR), - ULONG_PTR dwContinue) -{ - WebBrowser *This = VIEWOBJ_THIS(iface); - FIXME("(%p)->(%d %d %p %p %p %p %p %p %p %08lx)\n", This, dwDrawAspect, lindex, - pvAspect, ptd, hdcTargetDev, hdcDraw, lprcBounds, lprcWBounds, pfnContinue, - dwContinue); - return E_NOTIMPL; -} - -static HRESULT WINAPI ViewObject_GetColorSet(IViewObject2 *iface, DWORD dwAspect, - LONG lindex, void *pvAspect, DVTARGETDEVICE *ptd, HDC hicTargetDev, - LOGPALETTE **ppColorSet) -{ - WebBrowser *This = VIEWOBJ_THIS(iface); - FIXME("(%p)->(%d %d %p %p %p %p)\n", This, dwAspect, lindex, pvAspect, ptd, - hicTargetDev, ppColorSet); - return E_NOTIMPL; -} - -static HRESULT WINAPI ViewObject_Freeze(IViewObject2 *iface, DWORD dwDrawAspect, LONG lindex, - void *pvAspect, DWORD *pdwFreeze) -{ - WebBrowser *This = VIEWOBJ_THIS(iface); - FIXME("(%p)->(%d %d %p %p)\n", This, dwDrawAspect, lindex, pvAspect, pdwFreeze); - return E_NOTIMPL; -} - -static HRESULT WINAPI ViewObject_Unfreeze(IViewObject2 *iface, DWORD dwFreeze) -{ - WebBrowser *This = VIEWOBJ_THIS(iface); - FIXME("(%p)->(%d)\n", This, dwFreeze); - return E_NOTIMPL; -} - -static HRESULT WINAPI ViewObject_SetAdvise(IViewObject2 *iface, DWORD aspects, DWORD advf, - IAdviseSink *pAdvSink) -{ - WebBrowser *This = VIEWOBJ_THIS(iface); - FIXME("(%p)->(%d %08x %p)\n", This, aspects, advf, pAdvSink); - return E_NOTIMPL; -} - -static HRESULT WINAPI ViewObject_GetAdvise(IViewObject2 *iface, DWORD *pAspects, - DWORD *pAdvf, IAdviseSink **ppAdvSink) -{ - WebBrowser *This = VIEWOBJ_THIS(iface); - FIXME("(%p)->(%p %p %p)\n", This, pAspects, pAdvf, ppAdvSink); - return E_NOTIMPL; -} - -static HRESULT WINAPI ViewObject_GetExtent(IViewObject2 *iface, DWORD dwAspect, LONG lindex, - DVTARGETDEVICE *ptd, LPSIZEL lpsizel) -{ - WebBrowser *This = VIEWOBJ_THIS(iface); - FIXME("(%p)->(%d %d %p %p)\n", This, dwAspect, lindex, ptd, lpsizel); - return E_NOTIMPL; -} - -static const IViewObject2Vtbl ViewObjectVtbl = { - ViewObject_QueryInterface, - ViewObject_AddRef, - ViewObject_Release, - ViewObject_Draw, - ViewObject_GetColorSet, - ViewObject_Freeze, - ViewObject_Unfreeze, - ViewObject_SetAdvise, - ViewObject_GetAdvise, - ViewObject_GetExtent -}; - -#undef VIEWOBJ_THIS - -void WebBrowser_ViewObject_Init(WebBrowser *This) -{ - This->lpViewObjectVtbl = &ViewObjectVtbl; -} - -/********************************************************************** - * Implement the IDataObject interface - */ - -#define DATAOBJ_THIS(iface) DEFINE_THIS(WebBrowser, DataObject, iface) - -static HRESULT WINAPI DataObject_QueryInterface(LPDATAOBJECT iface, REFIID riid, LPVOID * ppvObj) -{ - WebBrowser *This = DATAOBJ_THIS(iface); - return IWebBrowser2_QueryInterface(WEBBROWSER(This), riid, ppvObj); -} - -static ULONG WINAPI DataObject_AddRef(LPDATAOBJECT iface) -{ - WebBrowser *This = DATAOBJ_THIS(iface); - return IWebBrowser2_AddRef(WEBBROWSER(This)); -} - -static ULONG WINAPI DataObject_Release(LPDATAOBJECT iface) -{ - WebBrowser *This = DATAOBJ_THIS(iface); - return IWebBrowser2_Release(WEBBROWSER(This)); -} - -static HRESULT WINAPI DataObject_GetData(LPDATAOBJECT iface, LPFORMATETC pformatetcIn, STGMEDIUM *pmedium) -{ - WebBrowser *This = DATAOBJ_THIS(iface); - FIXME("(%p)->()\n", This); - return E_NOTIMPL; -} - -static HRESULT WINAPI DataObject_GetDataHere(LPDATAOBJECT iface, LPFORMATETC pformatetc, STGMEDIUM *pmedium) -{ - WebBrowser *This = DATAOBJ_THIS(iface); - FIXME("(%p)->()\n", This); - return E_NOTIMPL; -} - -static HRESULT WINAPI DataObject_QueryGetData(LPDATAOBJECT iface, LPFORMATETC pformatetc) -{ - WebBrowser *This = DATAOBJ_THIS(iface); - FIXME("(%p)->()\n", This); - return E_NOTIMPL; -} - -static HRESULT WINAPI DataObject_GetCanonicalFormatEtc(LPDATAOBJECT iface, LPFORMATETC pformatectIn, LPFORMATETC pformatetcOut) -{ - WebBrowser *This = DATAOBJ_THIS(iface); - FIXME("(%p)->()\n", This); - return E_NOTIMPL; -} - -static HRESULT WINAPI DataObject_SetData(LPDATAOBJECT iface, LPFORMATETC pformatetc, STGMEDIUM *pmedium, BOOL fRelease) -{ - WebBrowser *This = DATAOBJ_THIS(iface); - FIXME("(%p)->()\n", This); - return E_NOTIMPL; -} - -static HRESULT WINAPI DataObject_EnumFormatEtc(LPDATAOBJECT iface, DWORD dwDirection, IEnumFORMATETC **ppenumFormatEtc) -{ - WebBrowser *This = DATAOBJ_THIS(iface); - FIXME("(%p)->()\n", This); - return E_NOTIMPL; -} - -static HRESULT WINAPI DataObject_DAdvise(LPDATAOBJECT iface, FORMATETC *pformatetc, DWORD advf, IAdviseSink *pAdvSink, DWORD *pdwConnection) -{ - WebBrowser *This = DATAOBJ_THIS(iface); - FIXME("(%p)->()\n", This); - return E_NOTIMPL; -} - -static HRESULT WINAPI DataObject_DUnadvise(LPDATAOBJECT iface, DWORD dwConnection) -{ - WebBrowser *This = DATAOBJ_THIS(iface); - FIXME("(%p)->()\n", This); - return E_NOTIMPL; -} - -static HRESULT WINAPI DataObject_EnumDAdvise(LPDATAOBJECT iface, IEnumSTATDATA **ppenumAdvise) -{ - WebBrowser *This = DATAOBJ_THIS(iface); - FIXME("(%p)->()\n", This); - return E_NOTIMPL; -} - -static const IDataObjectVtbl DataObjectVtbl = { - DataObject_QueryInterface, - DataObject_AddRef, - DataObject_Release, - DataObject_GetData, - DataObject_GetDataHere, - DataObject_QueryGetData, - DataObject_GetCanonicalFormatEtc, - DataObject_SetData, - DataObject_EnumFormatEtc, - DataObject_DAdvise, - DataObject_DUnadvise, - DataObject_EnumDAdvise -}; - -#undef DATAOBJ_THIS - -void WebBrowser_DataObject_Init(WebBrowser *This) -{ - This->lpDataObjectVtbl = &DataObjectVtbl; -} diff --git a/reactos/dll/win32/shdocvw/webbrowser.c b/reactos/dll/win32/shdocvw/webbrowser.c deleted file mode 100644 index e9a6b5766ae..00000000000 --- a/reactos/dll/win32/shdocvw/webbrowser.c +++ /dev/null @@ -1,1240 +0,0 @@ -/* - * Implementation of IWebBrowser interface for WebBrowser control - * - * Copyright 2001 John R. Sheets (for CodeWeavers) - * Copyright 2005 Jacek Caban - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA - */ - -#include -#include "shdocvw.h" -#include -#include - -WINE_DEFAULT_DEBUG_CHANNEL(shdocvw); - -/********************************************************************** - * Implement the IWebBrowser interface - */ - -#define WEBBROWSER_THIS(iface) DEFINE_THIS(WebBrowser, WebBrowser2, iface) - -static HRESULT WINAPI WebBrowser_QueryInterface(IWebBrowser2 *iface, REFIID riid, LPVOID *ppv) -{ - WebBrowser *This = WEBBROWSER_THIS(iface); - - if (ppv == NULL) - return E_POINTER; - *ppv = NULL; - - if(IsEqualGUID(&IID_IUnknown, riid)) { - TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv); - *ppv = WEBBROWSER(This); - }else if(IsEqualGUID(&IID_IDispatch, riid)) { - TRACE("(%p)->(IID_IDispatch %p)\n", This, ppv); - *ppv = WEBBROWSER(This); - }else if(IsEqualGUID(&IID_IWebBrowser, riid)) { - TRACE("(%p)->(IID_IWebBrowser %p)\n", This, ppv); - *ppv = WEBBROWSER(This); - }else if(IsEqualGUID(&IID_IWebBrowserApp, riid)) { - TRACE("(%p)->(IID_IWebBrowserApp %p)\n", This, ppv); - *ppv = WEBBROWSER(This); - }else if(IsEqualGUID(&IID_IWebBrowser2, riid)) { - TRACE("(%p)->(IID_IWebBrowser2 %p)\n", This, ppv); - *ppv = WEBBROWSER(This); - }else if(IsEqualGUID(&IID_IOleObject, riid)) { - TRACE("(%p)->(IID_IOleObject %p)\n", This, ppv); - *ppv = OLEOBJ(This); - }else if(IsEqualGUID(&IID_IOleWindow, riid)) { - TRACE("(%p)->(IID_IOleWindow %p)\n", This, ppv); - *ppv = INPLACEOBJ(This); - }else if(IsEqualGUID (&IID_IOleInPlaceObject, riid)) { - TRACE("(%p)->(IID_IOleInPlaceObject %p)\n", This, ppv); - *ppv = INPLACEOBJ(This); - }else if(IsEqualGUID(&IID_IOleControl, riid)) { - TRACE("(%p)->(IID_IOleControl %p)\n", This, ppv); - *ppv = CONTROL(This); - }else if(IsEqualGUID(&IID_IPersist, riid)) { - TRACE("(%p)->(IID_IPersist %p)\n", This, ppv); - *ppv = PERSTORAGE(This); - }else if(IsEqualGUID(&IID_IPersistStorage, riid)) { - TRACE("(%p)->(IID_IPersistStorage %p)\n", This, ppv); - *ppv = PERSTORAGE(This); - }else if(IsEqualGUID(&IID_IPersistMemory, riid)) { - TRACE("(%p)->(IID_IPersistStorage %p)\n", This, ppv); - *ppv = PERMEMORY(This); - }else if(IsEqualGUID (&IID_IPersistStreamInit, riid)) { - TRACE("(%p)->(IID_IPersistStreamInit %p)\n", This, ppv); - *ppv = PERSTRINIT(This); - }else if(IsEqualGUID(&IID_IProvideClassInfo, riid)) { - TRACE("(%p)->(IID_IProvideClassInfo %p)\n", This, ppv); - *ppv = CLASSINFO(This); - }else if(IsEqualGUID(&IID_IProvideClassInfo2, riid)) { - TRACE("(%p)->(IID_IProvideClassInfo2 %p)\n", This, ppv); - *ppv = CLASSINFO(This); - }else if(IsEqualGUID(&IID_IConnectionPointContainer, riid)) { - TRACE("(%p)->(IID_IConnectionPointContainer %p)\n", This, ppv); - *ppv = CONPTCONT(&This->doc_host.cps); - }else if(IsEqualGUID(&IID_IViewObject, riid)) { - TRACE("(%p)->(IID_IViewObject %p)\n", This, ppv); - *ppv = VIEWOBJ(This); - }else if(IsEqualGUID(&IID_IViewObject2, riid)) { - TRACE("(%p)->(IID_IViewObject2 %p)\n", This, ppv); - *ppv = VIEWOBJ2(This); - }else if(IsEqualGUID(&IID_IOleInPlaceActiveObject, riid)) { - TRACE("(%p)->(IID_IOleInPlaceActiveObject %p)\n", This, ppv); - *ppv = ACTIVEOBJ(This); - }else if(IsEqualGUID(&IID_IOleCommandTarget, riid)) { - TRACE("(%p)->(IID_IOleCommandTarget %p)\n", This, ppv); - *ppv = OLECMD(This); - }else if(IsEqualGUID(&IID_IServiceProvider, riid)) { - *ppv = SERVPROV(This); - TRACE("(%p)->(IID_IServiceProvider %p)\n", This, ppv); - }else if(IsEqualGUID(&IID_IDataObject, riid)) { - *ppv = DATAOBJECT(This); - TRACE("(%p)->(IID_IDataObject %p)\n", This, ppv); - }else if(IsEqualGUID(&IID_IQuickActivate, riid)) { - TRACE("(%p)->(IID_IQuickActivate %p) returning NULL\n", This, ppv); - return E_NOINTERFACE; - }else if(IsEqualGUID(&IID_IRunnableObject, riid)) { - TRACE("(%p)->(IID_IRunnableObject %p) returning NULL\n", This, ppv); - return E_NOINTERFACE; - }else if(IsEqualGUID(&IID_IPerPropertyBrowsing, riid)) { - TRACE("(%p)->(IID_IPerPropertyBrowsing %p) returning NULL\n", This, ppv); - return E_NOINTERFACE; - }else if(IsEqualGUID(&IID_IOleCache, riid)) { - TRACE("(%p)->(IID_IOleCache %p) returning NULL\n", This, ppv); - return E_NOINTERFACE; - }else if(IsEqualGUID(&IID_IOleInPlaceSite, riid)) { - TRACE("(%p)->(IID_IOleInPlaceSite %p) returning NULL\n", This, ppv); - return E_NOINTERFACE; - }else if(IsEqualGUID(&IID_IObjectWithSite, riid)) { - TRACE("(%p)->(IID_IObjectWithSite %p) returning NULL\n", This, ppv); - return E_NOINTERFACE; - }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) { - IUnknown_AddRef((IUnknown*)*ppv); - return S_OK; - } - - FIXME("(%p)->(%s %p) interface not supported\n", This, debugstr_guid(riid), ppv); - return E_NOINTERFACE; -} - -static ULONG WINAPI WebBrowser_AddRef(IWebBrowser2 *iface) -{ - WebBrowser *This = WEBBROWSER_THIS(iface); - LONG ref = InterlockedIncrement(&This->ref); - TRACE("(%p) ref=%d\n", This, ref); - return ref; -} - -static ULONG WINAPI WebBrowser_Release(IWebBrowser2 *iface) -{ - WebBrowser *This = WEBBROWSER_THIS(iface); - LONG ref = InterlockedDecrement(&This->ref); - - TRACE("(%p) ref=%d\n", This, ref); - - if(!ref) { - if(This->doc_host.document) - IUnknown_Release(This->doc_host.document); - - DocHost_Release(&This->doc_host); - - WebBrowser_OleObject_Destroy(This); - - heap_free(This); - SHDOCVW_UnlockModule(); - } - - return ref; -} - -/* IDispatch methods */ -static HRESULT WINAPI WebBrowser_GetTypeInfoCount(IWebBrowser2 *iface, UINT *pctinfo) -{ - WebBrowser *This = WEBBROWSER_THIS(iface); - - TRACE("(%p)->(%p)\n", This, pctinfo); - - *pctinfo = 1; - return S_OK; -} - -static HRESULT WINAPI WebBrowser_GetTypeInfo(IWebBrowser2 *iface, UINT iTInfo, LCID lcid, - LPTYPEINFO *ppTInfo) -{ - WebBrowser *This = WEBBROWSER_THIS(iface); - ITypeInfo *typeinfo; - HRESULT hres; - - TRACE("(%p)->(%d %d %p)\n", This, iTInfo, lcid, ppTInfo); - - hres = get_typeinfo(&typeinfo); - if(FAILED(hres)) - return hres; - - ITypeInfo_AddRef(typeinfo); - *ppTInfo = typeinfo; - return S_OK; -} - -static HRESULT WINAPI WebBrowser_GetIDsOfNames(IWebBrowser2 *iface, REFIID riid, - LPOLESTR *rgszNames, UINT cNames, - LCID lcid, DISPID *rgDispId) -{ - WebBrowser *This = WEBBROWSER_THIS(iface); - ITypeInfo *typeinfo; - HRESULT hres; - - TRACE("(%p)->(%s %p %d %d %p)\n", This, debugstr_guid(riid), rgszNames, cNames, - lcid, rgDispId); - - hres = get_typeinfo(&typeinfo); - if(FAILED(hres)) - return hres; - - return ITypeInfo_GetIDsOfNames(typeinfo, rgszNames, cNames, rgDispId); -} - -static HRESULT WINAPI WebBrowser_Invoke(IWebBrowser2 *iface, DISPID dispIdMember, - REFIID riid, LCID lcid, WORD wFlags, - DISPPARAMS *pDispParams, VARIANT *pVarResult, - EXCEPINFO *pExepInfo, UINT *puArgErr) -{ - WebBrowser *This = WEBBROWSER_THIS(iface); - ITypeInfo *typeinfo; - HRESULT hres; - - TRACE("(%p)->(%d %s %d %08x %p %p %p %p)\n", This, dispIdMember, debugstr_guid(riid), - lcid, wFlags, pDispParams, pVarResult, pExepInfo, puArgErr); - - hres = get_typeinfo(&typeinfo); - if(FAILED(hres)) - return hres; - - return ITypeInfo_Invoke(typeinfo, WEBBROWSER2(This), dispIdMember, wFlags, pDispParams, - pVarResult, pExepInfo, puArgErr); -} - -/* IWebBrowser methods */ -static HRESULT WINAPI WebBrowser_GoBack(IWebBrowser2 *iface) -{ - WebBrowser *This = WEBBROWSER_THIS(iface); - FIXME("(%p)\n", This); - return E_NOTIMPL; -} - -static HRESULT WINAPI WebBrowser_GoForward(IWebBrowser2 *iface) -{ - WebBrowser *This = WEBBROWSER_THIS(iface); - FIXME("(%p)\n", This); - return E_NOTIMPL; -} - -static HRESULT WINAPI WebBrowser_GoHome(IWebBrowser2 *iface) -{ - WebBrowser *This = WEBBROWSER_THIS(iface); - TRACE("(%p)\n", This); - return go_home(&This->doc_host); -} - -static HRESULT WINAPI WebBrowser_GoSearch(IWebBrowser2 *iface) -{ - WebBrowser *This = WEBBROWSER_THIS(iface); - FIXME("(%p)\n", This); - return E_NOTIMPL; -} - -static HRESULT WINAPI WebBrowser_Navigate(IWebBrowser2 *iface, BSTR szUrl, - VARIANT *Flags, VARIANT *TargetFrameName, - VARIANT *PostData, VARIANT *Headers) -{ - WebBrowser *This = WEBBROWSER_THIS(iface); - - TRACE("(%p)->(%s %s %s %s %s)\n", This, debugstr_w(szUrl), debugstr_variant(Flags), - debugstr_variant(TargetFrameName), debugstr_variant(PostData), - debugstr_variant(Headers)); - - return navigate_url(&This->doc_host, szUrl, Flags, TargetFrameName, PostData, Headers); -} - -static HRESULT WINAPI WebBrowser_Refresh(IWebBrowser2 *iface) -{ - WebBrowser *This = WEBBROWSER_THIS(iface); - FIXME("(%p)\n", This); - return E_NOTIMPL; -} - -static HRESULT WINAPI WebBrowser_Refresh2(IWebBrowser2 *iface, VARIANT *Level) -{ - WebBrowser *This = WEBBROWSER_THIS(iface); - FIXME("(%p)->(%s)\n", This, debugstr_variant(Level)); - return E_NOTIMPL; -} - -static HRESULT WINAPI WebBrowser_Stop(IWebBrowser2 *iface) -{ - WebBrowser *This = WEBBROWSER_THIS(iface); - FIXME("(%p)\n", This); - return S_OK; -} - -static HRESULT WINAPI WebBrowser_get_Application(IWebBrowser2 *iface, IDispatch **ppDisp) -{ - WebBrowser *This = WEBBROWSER_THIS(iface); - - TRACE("(%p)->(%p)\n", This, ppDisp); - - if(!ppDisp) - return E_POINTER; - - *ppDisp = (IDispatch*)WEBBROWSER2(This); - IDispatch_AddRef(*ppDisp); - return S_OK; -} - -static HRESULT WINAPI WebBrowser_get_Parent(IWebBrowser2 *iface, IDispatch **ppDisp) -{ - WebBrowser *This = WEBBROWSER_THIS(iface); - FIXME("(%p)->(%p)\n", This, ppDisp); - return E_NOTIMPL; -} - -static HRESULT WINAPI WebBrowser_get_Container(IWebBrowser2 *iface, IDispatch **ppDisp) -{ - WebBrowser *This = WEBBROWSER_THIS(iface); - FIXME("(%p)->(%p)\n", This, ppDisp); - return E_NOTIMPL; -} - -static HRESULT WINAPI WebBrowser_get_Document(IWebBrowser2 *iface, IDispatch **ppDisp) -{ - WebBrowser *This = WEBBROWSER_THIS(iface); - IDispatch *disp = NULL; - - TRACE("(%p)->(%p)\n", This, ppDisp); - - if(This->doc_host.document) { - HRESULT hres; - - hres = IUnknown_QueryInterface(This->doc_host.document, &IID_IDispatch, (void**)&disp); - if(SUCCEEDED(hres)) { - IDispatch *html_doc; - - /* Some broken apps cast returned IDispatch to IHTMLDocument2 - * without QueryInterface call */ - hres = IDispatch_QueryInterface(disp, &IID_IHTMLDocument2, (void**)&html_doc); - if(SUCCEEDED(hres)) { - IDispatch_Release(disp); - disp = html_doc; - } - } - } - - *ppDisp = disp; - return S_OK; -} - -static HRESULT WINAPI WebBrowser_get_TopLevelContainer(IWebBrowser2 *iface, VARIANT_BOOL *pBool) -{ - WebBrowser *This = WEBBROWSER_THIS(iface); - FIXME("(%p)->(%p)\n", This, pBool); - return E_NOTIMPL; -} - -static HRESULT WINAPI WebBrowser_get_Type(IWebBrowser2 *iface, BSTR *Type) -{ - WebBrowser *This = WEBBROWSER_THIS(iface); - FIXME("(%p)->(%p)\n", This, Type); - return E_NOTIMPL; -} - -static HRESULT WINAPI WebBrowser_get_Left(IWebBrowser2 *iface, LONG *pl) -{ - WebBrowser *This = WEBBROWSER_THIS(iface); - - TRACE("(%p)->(%p)\n", This, pl); - - *pl = This->pos_rect.left; - return S_OK; -} - -static HRESULT WINAPI WebBrowser_put_Left(IWebBrowser2 *iface, LONG Left) -{ - WebBrowser *This = WEBBROWSER_THIS(iface); - RECT rect; - - TRACE("(%p)->(%d)\n", This, Left); - - if(!This->inplace) - return E_UNEXPECTED; - - rect = This->pos_rect; - rect.left = Left; - - /* We don't really change the window position here. - * We just notify the embedder that he should do so. */ - return IOleInPlaceSite_OnPosRectChange(This->inplace, &rect); -} - -static HRESULT WINAPI WebBrowser_get_Top(IWebBrowser2 *iface, LONG *pl) -{ - WebBrowser *This = WEBBROWSER_THIS(iface); - - TRACE("(%p)->(%p)\n", This, pl); - - *pl = This->pos_rect.top; - return S_OK; -} - -static HRESULT WINAPI WebBrowser_put_Top(IWebBrowser2 *iface, LONG Top) -{ - WebBrowser *This = WEBBROWSER_THIS(iface); - RECT rect; - - TRACE("(%p)->(%d)\n", This, Top); - - if(!This->inplace) - return E_UNEXPECTED; - - rect = This->pos_rect; - rect.top = Top; - - /* We don't really change the window position here. - * We just notify the embedder that he should do so. */ - return IOleInPlaceSite_OnPosRectChange(This->inplace, &rect); -} - -static HRESULT WINAPI WebBrowser_get_Width(IWebBrowser2 *iface, LONG *pl) -{ - WebBrowser *This = WEBBROWSER_THIS(iface); - - TRACE("(%p)->(%p)\n", This, pl); - - *pl = This->pos_rect.right - This->pos_rect.left; - return S_OK; -} - -static HRESULT WINAPI WebBrowser_put_Width(IWebBrowser2 *iface, LONG Width) -{ - WebBrowser *This = WEBBROWSER_THIS(iface); - RECT rect; - - TRACE("(%p)->(%d)\n", This, Width); - - if(!This->inplace) - return E_UNEXPECTED; - - rect = This->pos_rect; - rect.right = rect.left+Width; - - /* We don't really change the window size here. - * We just notify the embedder that he should do so. */ - return IOleInPlaceSite_OnPosRectChange(This->inplace, &rect); -} - -static HRESULT WINAPI WebBrowser_get_Height(IWebBrowser2 *iface, LONG *pl) -{ - WebBrowser *This = WEBBROWSER_THIS(iface); - - TRACE("(%p)->(%p)\n", This, pl); - - *pl = This->pos_rect.bottom - This->pos_rect.top; - return S_OK; -} - -static HRESULT WINAPI WebBrowser_put_Height(IWebBrowser2 *iface, LONG Height) -{ - WebBrowser *This = WEBBROWSER_THIS(iface); - RECT rect; - - TRACE("(%p)->(%d)\n", This, Height); - - if(!This->inplace) - return E_UNEXPECTED; - - rect = This->pos_rect; - rect.bottom = rect.top+Height; - - /* We don't really change the window size here. - * We just notify the embedder that he should do so. */ - return IOleInPlaceSite_OnPosRectChange(This->inplace, &rect); -} - -static HRESULT WINAPI WebBrowser_get_LocationName(IWebBrowser2 *iface, BSTR *LocationName) -{ - WebBrowser *This = WEBBROWSER_THIS(iface); - FIXME("(%p)->(%p)\n", This, LocationName); - return E_NOTIMPL; -} - -static HRESULT WINAPI WebBrowser_get_LocationURL(IWebBrowser2 *iface, BSTR *LocationURL) -{ - WebBrowser *This = WEBBROWSER_THIS(iface); - - FIXME("(%p)->(%p)\n", This, LocationURL); - - if(!This->doc_host.url) { - static const WCHAR null_char = 0; - *LocationURL = SysAllocString(&null_char); - return S_FALSE; - } - - *LocationURL = SysAllocString(This->doc_host.url); - return S_OK; -} - -static HRESULT WINAPI WebBrowser_get_Busy(IWebBrowser2 *iface, VARIANT_BOOL *pBool) -{ - WebBrowser *This = WEBBROWSER_THIS(iface); - - TRACE("(%p)->(%p)\n", This, pBool); - - *pBool = This->doc_host.busy; - return S_OK; -} - -static HRESULT WINAPI WebBrowser_Quit(IWebBrowser2 *iface) -{ - WebBrowser *This = WEBBROWSER_THIS(iface); - - TRACE("(%p)\n", This); - - /* It's a InternetExplorer specific method, we have nothing to do here. */ - return E_FAIL; -} - -static HRESULT WINAPI WebBrowser_ClientToWindow(IWebBrowser2 *iface, int *pcx, int *pcy) -{ - WebBrowser *This = WEBBROWSER_THIS(iface); - FIXME("(%p)->(%p %p)\n", This, pcx, pcy); - return E_NOTIMPL; -} - -static HRESULT WINAPI WebBrowser_PutProperty(IWebBrowser2 *iface, BSTR szProperty, VARIANT vtValue) -{ - WebBrowser *This = WEBBROWSER_THIS(iface); - FIXME("(%p)->(%s %s)\n", This, debugstr_w(szProperty), debugstr_variant(&vtValue)); - return E_NOTIMPL; -} - -static HRESULT WINAPI WebBrowser_GetProperty(IWebBrowser2 *iface, BSTR szProperty, VARIANT *pvtValue) -{ - WebBrowser *This = WEBBROWSER_THIS(iface); - FIXME("(%p)->(%s %s)\n", This, debugstr_w(szProperty), debugstr_variant(pvtValue)); - return E_NOTIMPL; -} - -static HRESULT WINAPI WebBrowser_get_Name(IWebBrowser2 *iface, BSTR *Name) -{ - static const WCHAR sName[] = {'M','i','c','r','o','s','o','f','t',' ','W','e','b', - ' ','B','r','o','w','s','e','r',' ','C','o','n','t','r','o','l',0}; - WebBrowser *This = WEBBROWSER_THIS(iface); - - TRACE("(%p)->(%p)\n", This, Name); - - *Name = SysAllocString(sName); - - return S_OK; -} - -static HRESULT WINAPI WebBrowser_get_HWND(IWebBrowser2 *iface, LONG *pHWND) -{ - WebBrowser *This = WEBBROWSER_THIS(iface); - - TRACE("(%p)->(%p)\n", This, pHWND); - - /* WebBrowser control never has a frame window (in opposition to InternetExplorer) */ - *pHWND = 0; - return E_FAIL; -} - -static HRESULT WINAPI WebBrowser_get_FullName(IWebBrowser2 *iface, BSTR *FullName) -{ - WebBrowser *This = WEBBROWSER_THIS(iface); - FIXME("(%p)->(%p)\n", This, FullName); - return E_NOTIMPL; -} - -static HRESULT WINAPI WebBrowser_get_Path(IWebBrowser2 *iface, BSTR *Path) -{ - WebBrowser *This = WEBBROWSER_THIS(iface); - FIXME("(%p)->(%p)\n", This, Path); - return E_NOTIMPL; -} - -static HRESULT WINAPI WebBrowser_get_Visible(IWebBrowser2 *iface, VARIANT_BOOL *pBool) -{ - WebBrowser *This = WEBBROWSER_THIS(iface); - - TRACE("(%p)->(%p)\n", This, pBool); - - *pBool = This->visible; - return S_OK; -} - -static HRESULT WINAPI WebBrowser_put_Visible(IWebBrowser2 *iface, VARIANT_BOOL Value) -{ - WebBrowser *This = WEBBROWSER_THIS(iface); - VARIANTARG arg; - DISPPARAMS dispparams = {&arg, NULL, 1, 0}; - - TRACE("(%p)->(%x)\n", This, Value); - - This->visible = Value; - - V_VT(&arg) = VT_BOOL; - V_BOOL(&arg) = Value; - call_sink(This->doc_host.cps.wbe2, DISPID_ONVISIBLE, &dispparams); - - return S_OK; -} - -static HRESULT WINAPI WebBrowser_get_StatusBar(IWebBrowser2 *iface, VARIANT_BOOL *pBool) -{ - WebBrowser *This = WEBBROWSER_THIS(iface); - - TRACE("(%p)->(%p)\n", This, pBool); - - *pBool = This->status_bar; - return S_OK; -} - -static HRESULT WINAPI WebBrowser_put_StatusBar(IWebBrowser2 *iface, VARIANT_BOOL Value) -{ - WebBrowser *This = WEBBROWSER_THIS(iface); - VARIANTARG arg; - DISPPARAMS dispparams = {&arg, NULL, 1, 0}; - - TRACE("(%p)->(%x)\n", This, Value); - - This->status_bar = Value ? VARIANT_TRUE : VARIANT_FALSE; - - /* In opposition to InternetExplorer, all we should do here is - * inform the embedder about the status bar change. */ - - V_VT(&arg) = VT_BOOL; - V_BOOL(&arg) = Value; - call_sink(This->doc_host.cps.wbe2, DISPID_ONSTATUSBAR, &dispparams); - - return S_OK; -} - -static HRESULT WINAPI WebBrowser_get_StatusText(IWebBrowser2 *iface, BSTR *StatusText) -{ - WebBrowser *This = WEBBROWSER_THIS(iface); - FIXME("(%p)->(%p)\n", This, StatusText); - return E_NOTIMPL; -} - -static HRESULT WINAPI WebBrowser_put_StatusText(IWebBrowser2 *iface, BSTR StatusText) -{ - WebBrowser *This = WEBBROWSER_THIS(iface); - FIXME("(%p)->(%s)\n", This, debugstr_w(StatusText)); - return E_NOTIMPL; -} - -static HRESULT WINAPI WebBrowser_get_ToolBar(IWebBrowser2 *iface, int *Value) -{ - WebBrowser *This = WEBBROWSER_THIS(iface); - - TRACE("(%p)->(%p)\n", This, Value); - - *Value = This->tool_bar; - return S_OK; -} - -static HRESULT WINAPI WebBrowser_put_ToolBar(IWebBrowser2 *iface, int Value) -{ - WebBrowser *This = WEBBROWSER_THIS(iface); - VARIANTARG arg; - DISPPARAMS dispparams = {&arg, NULL, 1, 0}; - - TRACE("(%p)->(%x)\n", This, Value); - - This->tool_bar = Value ? VARIANT_TRUE : VARIANT_FALSE; - - /* In opposition to InternetExplorer, all we should do here is - * inform the embedder about the tool bar change. */ - - V_VT(&arg) = VT_BOOL; - V_BOOL(&arg) = This->tool_bar; - call_sink(This->doc_host.cps.wbe2, DISPID_ONTOOLBAR, &dispparams); - - return S_OK; -} - -static HRESULT WINAPI WebBrowser_get_MenuBar(IWebBrowser2 *iface, VARIANT_BOOL *Value) -{ - WebBrowser *This = WEBBROWSER_THIS(iface); - - TRACE("(%p)->(%p)\n", This, Value); - - *Value = This->menu_bar; - return S_OK; -} - -static HRESULT WINAPI WebBrowser_put_MenuBar(IWebBrowser2 *iface, VARIANT_BOOL Value) -{ - WebBrowser *This = WEBBROWSER_THIS(iface); - VARIANTARG arg; - DISPPARAMS dispparams = {&arg, NULL, 1, 0}; - - TRACE("(%p)->(%x)\n", This, Value); - - This->menu_bar = Value ? VARIANT_TRUE : VARIANT_FALSE; - - /* In opposition to InternetExplorer, all we should do here is - * inform the embedder about the menu bar change. */ - - V_VT(&arg) = VT_BOOL; - V_BOOL(&arg) = Value; - call_sink(This->doc_host.cps.wbe2, DISPID_ONMENUBAR, &dispparams); - - return S_OK; -} - -static HRESULT WINAPI WebBrowser_get_FullScreen(IWebBrowser2 *iface, VARIANT_BOOL *pbFullScreen) -{ - WebBrowser *This = WEBBROWSER_THIS(iface); - - TRACE("(%p)->(%p)\n", This, pbFullScreen); - - *pbFullScreen = This->full_screen; - return S_OK; -} - -static HRESULT WINAPI WebBrowser_put_FullScreen(IWebBrowser2 *iface, VARIANT_BOOL bFullScreen) -{ - WebBrowser *This = WEBBROWSER_THIS(iface); - VARIANTARG arg; - DISPPARAMS dispparams = {&arg, NULL, 1, 0}; - - /* In opposition to InternetExplorer, all we should do here is - * inform the embedder about the fullscreen change. */ - - TRACE("(%p)->(%x)\n", This, bFullScreen); - - This->full_screen = bFullScreen ? VARIANT_TRUE : VARIANT_FALSE; - - V_VT(&arg) = VT_BOOL; - V_BOOL(&arg) = bFullScreen; - call_sink(This->doc_host.cps.wbe2, DISPID_ONFULLSCREEN, &dispparams); - - return S_OK; -} - -static HRESULT WINAPI WebBrowser_Navigate2(IWebBrowser2 *iface, VARIANT *URL, VARIANT *Flags, - VARIANT *TargetFrameName, VARIANT *PostData, VARIANT *Headers) -{ - WebBrowser *This = WEBBROWSER_THIS(iface); - LPCWSTR url; - - TRACE("(%p)->(%s %s %s %s %s)\n", This, debugstr_variant(URL), debugstr_variant(Flags), - debugstr_variant(TargetFrameName), debugstr_variant(PostData), debugstr_variant(Headers)); - - if(!This->client) - return E_FAIL; - - if(!URL) - return S_OK; - - switch (V_VT(URL)) - { - case VT_BSTR: - url = V_BSTR(URL); - break; - case VT_BSTR|VT_BYREF: - url = *V_BSTRREF(URL); - break; - default: - FIXME("Unsupported V_VT(URL) %d\n", V_VT(URL)); - return E_INVALIDARG; - } - - return navigate_url(&This->doc_host, url, Flags, TargetFrameName, PostData, Headers); -} - -static HRESULT WINAPI WebBrowser_QueryStatusWB(IWebBrowser2 *iface, OLECMDID cmdID, OLECMDF *pcmdf) -{ - WebBrowser *This = WEBBROWSER_THIS(iface); - FIXME("(%p)->(%d %p)\n", This, cmdID, pcmdf); - return E_NOTIMPL; -} - -static HRESULT WINAPI WebBrowser_ExecWB(IWebBrowser2 *iface, OLECMDID cmdID, - OLECMDEXECOPT cmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut) -{ - WebBrowser *This = WEBBROWSER_THIS(iface); - FIXME("(%p)->(%d %d %s %p)\n", This, cmdID, cmdexecopt, debugstr_variant(pvaIn), pvaOut); - return E_NOTIMPL; -} - -static HRESULT WINAPI WebBrowser_ShowBrowserBar(IWebBrowser2 *iface, VARIANT *pvaClsid, - VARIANT *pvarShow, VARIANT *pvarSize) -{ - WebBrowser *This = WEBBROWSER_THIS(iface); - FIXME("(%p)->(%s %s %s)\n", This, debugstr_variant(pvaClsid), debugstr_variant(pvarShow), - debugstr_variant(pvarSize)); - return E_NOTIMPL; -} - -static HRESULT WINAPI WebBrowser_get_ReadyState(IWebBrowser2 *iface, READYSTATE *lpReadyState) -{ - WebBrowser *This = WEBBROWSER_THIS(iface); - - TRACE("(%p)->(%p)\n", This, lpReadyState); - - *lpReadyState = This->doc_host.ready_state; - return S_OK; -} - -static HRESULT WINAPI WebBrowser_get_Offline(IWebBrowser2 *iface, VARIANT_BOOL *pbOffline) -{ - WebBrowser *This = WEBBROWSER_THIS(iface); - - TRACE("(%p)->(%p)\n", This, pbOffline); - - *pbOffline = This->doc_host.offline; - return S_OK; -} - -static HRESULT WINAPI WebBrowser_put_Offline(IWebBrowser2 *iface, VARIANT_BOOL bOffline) -{ - WebBrowser *This = WEBBROWSER_THIS(iface); - - TRACE("(%p)->(%x)\n", This, bOffline); - - This->doc_host.offline = bOffline ? VARIANT_TRUE : VARIANT_FALSE; - return S_OK; -} - -static HRESULT WINAPI WebBrowser_get_Silent(IWebBrowser2 *iface, VARIANT_BOOL *pbSilent) -{ - WebBrowser *This = WEBBROWSER_THIS(iface); - - TRACE("(%p)->(%p)\n", This, pbSilent); - - *pbSilent = This->doc_host.silent; - return S_OK; -} - -static HRESULT WINAPI WebBrowser_put_Silent(IWebBrowser2 *iface, VARIANT_BOOL bSilent) -{ - WebBrowser *This = WEBBROWSER_THIS(iface); - - TRACE("(%p)->(%x)\n", This, bSilent); - - This->doc_host.silent = bSilent ? VARIANT_TRUE : VARIANT_FALSE; - return S_OK; -} - -static HRESULT WINAPI WebBrowser_get_RegisterAsBrowser(IWebBrowser2 *iface, - VARIANT_BOOL *pbRegister) -{ - WebBrowser *This = WEBBROWSER_THIS(iface); - - FIXME("(%p)->(%p)\n", This, pbRegister); - - *pbRegister = This->register_browser; - return S_OK; -} - -static HRESULT WINAPI WebBrowser_put_RegisterAsBrowser(IWebBrowser2 *iface, - VARIANT_BOOL bRegister) -{ - WebBrowser *This = WEBBROWSER_THIS(iface); - - FIXME("(%p)->(%x)\n", This, bRegister); - - This->register_browser = bRegister ? VARIANT_TRUE : VARIANT_FALSE; - return S_OK; -} - -static HRESULT WINAPI WebBrowser_get_RegisterAsDropTarget(IWebBrowser2 *iface, - VARIANT_BOOL *pbRegister) -{ - WebBrowser *This = WEBBROWSER_THIS(iface); - FIXME("(%p)->(%p)\n", This, pbRegister); - *pbRegister=0; - return S_OK; -} - -static HRESULT WINAPI WebBrowser_put_RegisterAsDropTarget(IWebBrowser2 *iface, - VARIANT_BOOL bRegister) -{ - WebBrowser *This = WEBBROWSER_THIS(iface); - FIXME("(%p)->(%x)\n", This, bRegister); - return S_OK; -} - -static HRESULT WINAPI WebBrowser_get_TheaterMode(IWebBrowser2 *iface, VARIANT_BOOL *pbRegister) -{ - WebBrowser *This = WEBBROWSER_THIS(iface); - - TRACE("(%p)->(%p)\n", This, pbRegister); - - *pbRegister = This->theater_mode; - return S_OK; -} - -static HRESULT WINAPI WebBrowser_put_TheaterMode(IWebBrowser2 *iface, VARIANT_BOOL bRegister) -{ - WebBrowser *This = WEBBROWSER_THIS(iface); - VARIANTARG arg; - DISPPARAMS dispparams = {&arg, NULL, 1, 0}; - - TRACE("(%p)->(%x)\n", This, bRegister); - - This->theater_mode = bRegister ? VARIANT_TRUE : VARIANT_FALSE; - - /* In opposition to InternetExplorer, all we should do here is - * inform the embedder about the theater mode change. */ - - V_VT(&arg) = VT_BOOL; - V_BOOL(&arg) = bRegister; - call_sink(This->doc_host.cps.wbe2, DISPID_ONTHEATERMODE, &dispparams); - - return S_OK; -} - -static HRESULT WINAPI WebBrowser_get_AddressBar(IWebBrowser2 *iface, VARIANT_BOOL *Value) -{ - WebBrowser *This = WEBBROWSER_THIS(iface); - - TRACE("(%p)->(%p)\n", This, Value); - - *Value = This->address_bar; - return S_OK; -} - -static HRESULT WINAPI WebBrowser_put_AddressBar(IWebBrowser2 *iface, VARIANT_BOOL Value) -{ - WebBrowser *This = WEBBROWSER_THIS(iface); - VARIANTARG arg; - DISPPARAMS dispparams = {&arg, NULL, 1, 0}; - - TRACE("(%p)->(%x)\n", This, Value); - - This->address_bar = Value ? VARIANT_TRUE : VARIANT_FALSE; - - /* In opposition to InternetExplorer, all we should do here is - * inform the embedder about the address bar change. */ - - V_VT(&arg) = VT_BOOL; - V_BOOL(&arg) = Value; - call_sink(This->doc_host.cps.wbe2, DISPID_ONADDRESSBAR, &dispparams); - - return S_OK; -} - -static HRESULT WINAPI WebBrowser_get_Resizable(IWebBrowser2 *iface, VARIANT_BOOL *Value) -{ - WebBrowser *This = WEBBROWSER_THIS(iface); - - TRACE("(%p)->(%p)\n", This, Value); - - /* It's InternetExplorer object's method. We have nothing to do here. */ - return E_NOTIMPL; -} - -static HRESULT WINAPI WebBrowser_put_Resizable(IWebBrowser2 *iface, VARIANT_BOOL Value) -{ - WebBrowser *This = WEBBROWSER_THIS(iface); - VARIANTARG arg; - DISPPARAMS dispparams = {&arg, NULL, 1, 0}; - - TRACE("(%p)->(%x)\n", This, Value); - - /* In opposition to InternetExplorer, all we should do here is - * inform the embedder about the resizable change. */ - - V_VT(&arg) = VT_BOOL; - V_BOOL(&arg) = Value; - call_sink(This->doc_host.cps.wbe2, DISPID_WINDOWSETRESIZABLE, &dispparams); - - return S_OK; -} - -#undef WEBBROWSER_THIS - -static const IWebBrowser2Vtbl WebBrowser2Vtbl = -{ - WebBrowser_QueryInterface, - WebBrowser_AddRef, - WebBrowser_Release, - WebBrowser_GetTypeInfoCount, - WebBrowser_GetTypeInfo, - WebBrowser_GetIDsOfNames, - WebBrowser_Invoke, - WebBrowser_GoBack, - WebBrowser_GoForward, - WebBrowser_GoHome, - WebBrowser_GoSearch, - WebBrowser_Navigate, - WebBrowser_Refresh, - WebBrowser_Refresh2, - WebBrowser_Stop, - WebBrowser_get_Application, - WebBrowser_get_Parent, - WebBrowser_get_Container, - WebBrowser_get_Document, - WebBrowser_get_TopLevelContainer, - WebBrowser_get_Type, - WebBrowser_get_Left, - WebBrowser_put_Left, - WebBrowser_get_Top, - WebBrowser_put_Top, - WebBrowser_get_Width, - WebBrowser_put_Width, - WebBrowser_get_Height, - WebBrowser_put_Height, - WebBrowser_get_LocationName, - WebBrowser_get_LocationURL, - WebBrowser_get_Busy, - WebBrowser_Quit, - WebBrowser_ClientToWindow, - WebBrowser_PutProperty, - WebBrowser_GetProperty, - WebBrowser_get_Name, - WebBrowser_get_HWND, - WebBrowser_get_FullName, - WebBrowser_get_Path, - WebBrowser_get_Visible, - WebBrowser_put_Visible, - WebBrowser_get_StatusBar, - WebBrowser_put_StatusBar, - WebBrowser_get_StatusText, - WebBrowser_put_StatusText, - WebBrowser_get_ToolBar, - WebBrowser_put_ToolBar, - WebBrowser_get_MenuBar, - WebBrowser_put_MenuBar, - WebBrowser_get_FullScreen, - WebBrowser_put_FullScreen, - WebBrowser_Navigate2, - WebBrowser_QueryStatusWB, - WebBrowser_ExecWB, - WebBrowser_ShowBrowserBar, - WebBrowser_get_ReadyState, - WebBrowser_get_Offline, - WebBrowser_put_Offline, - WebBrowser_get_Silent, - WebBrowser_put_Silent, - WebBrowser_get_RegisterAsBrowser, - WebBrowser_put_RegisterAsBrowser, - WebBrowser_get_RegisterAsDropTarget, - WebBrowser_put_RegisterAsDropTarget, - WebBrowser_get_TheaterMode, - WebBrowser_put_TheaterMode, - WebBrowser_get_AddressBar, - WebBrowser_put_AddressBar, - WebBrowser_get_Resizable, - WebBrowser_put_Resizable -}; - -#define SERVPROV_THIS(iface) DEFINE_THIS(WebBrowser, OleObject, iface) -/* - * IServiceProvider interface. - */ -static HRESULT WINAPI WebBrowser_IServiceProvider_QueryInterface(IServiceProvider *iface, - REFIID riid, LPVOID *ppv) -{ - WebBrowser *This = SERVPROV_THIS(iface); - - if (ppv == NULL) - return E_POINTER; - *ppv = NULL; - - if(IsEqualGUID(&IID_IUnknown, riid)) { - *ppv = WEBBROWSER(This); - TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv); - }else if(IsEqualGUID(&IID_IServiceProvider, riid)) { - *ppv = WEBBROWSER(This); - TRACE("(%p)->(IID_IServiceProvider %p)\n", This, ppv); - } - - if(*ppv) { - IUnknown_AddRef((IUnknown*)*ppv); - return S_OK; - } - - FIXME("(%p)->(%s %p) interface not supported\n", This, debugstr_guid(riid), ppv); - return E_NOINTERFACE; -} - -static ULONG WINAPI WebBrowser_IServiceProvider_AddRef(IServiceProvider *iface) -{ - WebBrowser *This = SERVPROV_THIS(iface); - return IWebBrowser_AddRef(WEBBROWSER(This)); -} - -static ULONG WINAPI WebBrowser_IServiceProvider_Release(IServiceProvider *iface) -{ - WebBrowser *This = SERVPROV_THIS(iface); - return IWebBrowser_Release(WEBBROWSER(This)); -} - -static HRESULT STDMETHODCALLTYPE WebBrowser_IServiceProvider_QueryService(IServiceProvider *iface, - REFGUID guidService, REFIID riid, void **ppv) -{ - WebBrowser *This = SERVPROV_THIS(iface); - static const IID IID_IBrowserService2 = - {0x68BD21CC,0x438B,0x11d2,{0xA5,0x60,0x00,0xA0,0xC,0x2D,0xBF,0xE8}}; - - if(*ppv) - ppv = NULL; - - if(IsEqualGUID(&IID_IBrowserService2, riid)) { - TRACE("(%p)->(IID_IBrowserService2 return E_FAIL)\n", This); - return E_FAIL; - } - - FIXME("(%p)->(%s, %s %p)\n", This, debugstr_guid(guidService), debugstr_guid(riid), ppv); - - return E_NOINTERFACE; -} - -#undef SERVPROV_THIS - -static const IServiceProviderVtbl ServiceProviderVtbl = -{ - WebBrowser_IServiceProvider_QueryInterface, - WebBrowser_IServiceProvider_AddRef, - WebBrowser_IServiceProvider_Release, - 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; - HRESULT hres; - - TRACE("(%p %s %p) version=%d\n", pOuter, debugstr_guid(riid), ppv, version); - - ret = heap_alloc_zero(sizeof(WebBrowser)); - - ret->lpWebBrowser2Vtbl = &WebBrowser2Vtbl; - ret->lpServiceProviderVtbl = &ServiceProviderVtbl; - ret->ref = 1; - ret->version = version; - - DocHost_Init(&ret->doc_host, (IDispatch*)WEBBROWSER2(ret), &DocHostContainerVtbl); - - ret->visible = VARIANT_TRUE; - ret->menu_bar = VARIANT_TRUE; - ret->address_bar = VARIANT_TRUE; - ret->status_bar = VARIANT_TRUE; - ret->tool_bar = VARIANT_TRUE; - - WebBrowser_OleObject_Init(ret); - WebBrowser_ViewObject_Init(ret); - WebBrowser_DataObject_Init(ret); - WebBrowser_Persist_Init(ret); - WebBrowser_ClassInfo_Init(ret); - - HlinkFrame_Init(&ret->hlink_frame, (IUnknown*)WEBBROWSER2(ret), &ret->doc_host); - - SHDOCVW_LockModule(); - - hres = IWebBrowser_QueryInterface(WEBBROWSER(ret), riid, ppv); - - IWebBrowser2_Release(WEBBROWSER(ret)); - return hres; -} - -HRESULT WebBrowserV1_Create(IUnknown *pOuter, REFIID riid, void **ppv) -{ - return WebBrowser_Create(1, pOuter, riid, ppv); -} - -HRESULT WebBrowserV2_Create(IUnknown *pOuter, REFIID riid, void **ppv) -{ - return WebBrowser_Create(2, pOuter, riid, ppv); -} diff --git a/reactos/media/doc/README.WINE b/reactos/media/doc/README.WINE index a7620f5d249..c245ba3ad77 100644 --- a/reactos/media/doc/README.WINE +++ b/reactos/media/doc/README.WINE @@ -163,7 +163,7 @@ reactos/dll/win32/security # Forked (different .spec) reactos/dll/win32/sensapi # Synced to Wine-1.5.4 reactos/dll/win32/setupapi # Forked at Wine-20050524 reactos/dll/win32/shdoclc # Synced to Wine-1.5.19 -reactos/dll/win32/shdocvw # Autosync +reactos/dll/win32/shdocvw # Synced to Wine-1.5.26 reactos/dll/win32/shell32 # Forked at Wine-20071011 reactos/dll/win32/shfolder # Autosync reactos/dll/win32/shlwapi # Synced to Wine-1.5.26