shell32/tests: Use GetProcAddress() on Shell_NotifyIconW() because it is missing on Windows 95.

Francois Gouget fgouget at free.fr
Tue Dec 18 03:01:14 CST 2007


---
 dlls/shell32/tests/systray.c |   45 +++++++++++++++++++++++++----------------
 1 files changed, 27 insertions(+), 18 deletions(-)

diff --git a/dlls/shell32/tests/systray.c b/dlls/shell32/tests/systray.c
index 9c97a4e..35a59ad 100644
--- a/dlls/shell32/tests/systray.c
+++ b/dlls/shell32/tests/systray.c
@@ -26,30 +26,35 @@
 
 
 static HWND hMainWnd;
+static BOOL (WINAPI *pShell_NotifyIconW)(DWORD,PNOTIFYICONDATAW);
 
 void test_cbsize(void)
 {
-    NOTIFYICONDATAW nidW;
     NOTIFYICONDATAA nidA;
 
-    ZeroMemory(&nidW, sizeof(nidW));
-    nidW.cbSize = NOTIFYICONDATAW_V1_SIZE;
-    nidW.hWnd = hMainWnd;
-    nidW.uID = 1;
-    nidW.uFlags = NIF_ICON|NIF_MESSAGE;
-    nidW.hIcon = LoadIcon(NULL, IDI_APPLICATION);
-    nidW.uCallbackMessage = WM_USER+17;
-    ok(Shell_NotifyIconW(NIM_ADD, &nidW), "NIM_ADD failed!\n");
+    if (pShell_NotifyIconW)
+    {
+        NOTIFYICONDATAW nidW;
 
-    /* using an invalid cbSize does work */
-    nidW.cbSize = 3;
-    nidW.hWnd = hMainWnd;
-    nidW.uID = 1;
-    ok(Shell_NotifyIconW(NIM_DELETE, &nidW), "NIM_DELETE failed!\n");
-    /* as icon doesn't exist anymore - now there will be an error */
-    nidW.cbSize = sizeof(nidW);
-    /* wine currently doesn't return error code put prints an ERR(...) */
-    todo_wine ok(!Shell_NotifyIconW(NIM_DELETE, &nidW), "The icon was not deleted\n");
+        ZeroMemory(&nidW, sizeof(nidW));
+        nidW.cbSize = NOTIFYICONDATAW_V1_SIZE;
+        nidW.hWnd = hMainWnd;
+        nidW.uID = 1;
+        nidW.uFlags = NIF_ICON|NIF_MESSAGE;
+        nidW.hIcon = LoadIcon(NULL, IDI_APPLICATION);
+        nidW.uCallbackMessage = WM_USER+17;
+        ok(pShell_NotifyIconW(NIM_ADD, &nidW), "NIM_ADD failed!\n");
+
+        /* using an invalid cbSize does work */
+        nidW.cbSize = 3;
+        nidW.hWnd = hMainWnd;
+        nidW.uID = 1;
+        ok(pShell_NotifyIconW(NIM_DELETE, &nidW), "NIM_DELETE failed!\n");
+        /* as icon doesn't exist anymore - now there will be an error */
+        nidW.cbSize = sizeof(nidW);
+        /* wine currently doesn't return error code put prints an ERR(...) */
+        todo_wine ok(!pShell_NotifyIconW(NIM_DELETE, &nidW), "The icon was not deleted\n");
+    }
 
     /* same for Shell_NotifyIconA */
     ZeroMemory(&nidA, sizeof(nidA));
@@ -77,6 +82,10 @@ START_TEST(systray)
     WNDCLASSA wc;
     MSG msg;
     RECT rc;
+    HMODULE hdll;
+
+    hdll = GetModuleHandleA("shell32.dll");
+    pShell_NotifyIconW = (void*)GetProcAddress(hdll, "Shell_NotifyIconW");
 
     wc.style = CS_HREDRAW | CS_VREDRAW;
     wc.cbClsExtra = 0;
-- 
1.5.3.4




More information about the wine-patches mailing list