Eric Pouech : shdocvw: Implemented a couple of forwards to shlwapi.

Alexandre Julliard julliard at wine.codeweavers.com
Wed Feb 15 07:01:34 CST 2006


Module: wine
Branch: refs/heads/master
Commit: dd7e08cc7c34b492f706e250a943469dd0f5b054
URL:    http://source.winehq.org/git/?p=wine.git;a=commit;h=dd7e08cc7c34b492f706e250a943469dd0f5b054

Author: Eric Pouech <eric.pouech at wanadoo.fr>
Date:   Wed Feb 15 13:37:18 2006 +0100

shdocvw: Implemented a couple of forwards to shlwapi.

---

 dlls/shdocvw/Makefile.in    |    2 +
 dlls/shdocvw/shdocvw.spec   |    9 +++---
 dlls/shdocvw/shdocvw_main.c |   70 +++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 76 insertions(+), 5 deletions(-)

diff --git a/dlls/shdocvw/Makefile.in b/dlls/shdocvw/Makefile.in
index 74a671e..2372d8a 100644
--- a/dlls/shdocvw/Makefile.in
+++ b/dlls/shdocvw/Makefile.in
@@ -5,7 +5,7 @@ SRCDIR    = @srcdir@
 VPATH     = @srcdir@
 MODULE    = shdocvw.dll
 IMPORTLIB = libshdocvw.$(IMPLIBEXT)
-IMPORTS   = user32 advapi32 kernel32
+IMPORTS   = shlwapi user32 advapi32 kernel32
 DELAYIMPORTS = urlmon ole32 oleaut32
 EXTRALIBS = -luuid
 
diff --git a/dlls/shdocvw/shdocvw.spec b/dlls/shdocvw/shdocvw.spec
index 9b41f58..636461c 100644
--- a/dlls/shdocvw/shdocvw.spec
+++ b/dlls/shdocvw/shdocvw.spec
@@ -2,7 +2,7 @@
 101 stub -noname IEWinMain
 102 stub -noname CreateShortcutInDirA
 103 stub -noname CreateShortcutInDirW
-104 stub -noname WhichPlatformFORWARD
+104 stdcall -noname WhichPlatformFORWARD()
 105 stub -noname CreateShortcutInDirEx
 106 stub HlinkFindFrame
 107 stub SetShellOfflineState
@@ -15,9 +15,10 @@
 118 stdcall -noname ShellDDEInit(long)
 119 stub -noname SHCreateDesktop
 120 stub -noname SHDesktopMessageLoop
-121 stub -noname StopWatchModeFORWARD
-122 stub -noname StopWatchFlushFORWARD
-123 stub -noname StopWatchFORWARD
+121 stdcall -noname StopWatchModeFORWARD()
+122 stdcall -noname StopWatchFlushFORWARD()
+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
 131 stub -noname SHCreateSplashScreen
diff --git a/dlls/shdocvw/shdocvw_main.c b/dlls/shdocvw/shdocvw_main.c
index 179d34a..83b03d0 100644
--- a/dlls/shdocvw/shdocvw_main.c
+++ b/dlls/shdocvw/shdocvw_main.c
@@ -586,3 +586,73 @@ void WINAPI OpenURL(HWND hWnd, HINSTANCE
 {
     FIXME("%p %p %s %d\n", hWnd, hInst, debugstr_a(lpcstrUrl), nShowCmd);
 }
+
+/**********************************************************************
+ * Some forwards (by ordinal) to SHLWAPI
+ */
+
+static void* fetch_shlwapi_ordinal(unsigned ord)
+{
+    static const WCHAR shlwapiW[] = {'s','h','l','w','a','p','i','.','d','l','l','\0'};
+    static HANDLE h;
+
+    if (!h && !(h = GetModuleHandleW(shlwapiW))) return NULL;
+    return (void*)GetProcAddress(h, (const char*)ord);
+}
+
+/******************************************************************
+ *		WhichPlatformFORWARD            (SHDOCVW.@)
+ */
+DWORD WINAPI WhichPlatformFORWARD(void)
+{
+    static DWORD (*WINAPI p)(void);
+
+    if (p || (p = fetch_shlwapi_ordinal(276))) return p();
+    return 1; /* not integrated, see shlwapi.WhichPlatform */
+}
+
+/******************************************************************
+ *		StopWatchModeFORWARD            (SHDOCVW.@)
+ */
+void WINAPI StopWatchModeFORWARD(void)
+{
+    static void (*WINAPI p)(void);
+
+    if (p || (p = fetch_shlwapi_ordinal(241))) p();
+}
+
+/******************************************************************
+ *		StopWatchFlushFORWARD            (SHDOCVW.@)
+ */
+void WINAPI StopWatchFlushFORWARD(void)
+{
+    static void (*WINAPI p)(void);
+
+    if (p || (p = fetch_shlwapi_ordinal(242))) p();
+}
+
+/******************************************************************
+ *		StopWatchWFORWARD            (SHDOCVW.@)
+ */
+DWORD WINAPI StopWatchWFORWARD(DWORD dwClass, LPCWSTR lpszStr, DWORD dwUnknown,
+                               DWORD dwMode, DWORD dwTimeStamp)
+{
+    static DWORD (*WINAPI p)(DWORD, LPCWSTR, DWORD, DWORD, DWORD);
+
+    if (p || (p = fetch_shlwapi_ordinal(243)))
+        return p(dwClass, lpszStr, dwUnknown, dwMode, dwTimeStamp);
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+/******************************************************************
+ *		StopWatchAFORWARD            (SHDOCVW.@)
+ */
+DWORD WINAPI StopWatchAFORWARD(DWORD dwClass, LPCSTR lpszStr, DWORD dwUnknown,
+                               DWORD dwMode, DWORD dwTimeStamp)
+{
+    static DWORD (*WINAPI p)(DWORD, LPCSTR, DWORD, DWORD, DWORD);
+
+    if (p || (p = fetch_shlwapi_ordinal(244)))
+        return p(dwClass, lpszStr, dwUnknown, dwMode, dwTimeStamp);
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}




More information about the wine-cvs mailing list