comtcl32/tests: Dynamically load ImageList_SetImageCount() because it is missing on Windows 95.

Francois Gouget fgouget at free.fr
Sun Dec 9 18:25:15 CST 2007


---
 dlls/comctl32/tests/imagelist.c |   44 +++++++++++++++++++++++---------------
 1 files changed, 27 insertions(+), 17 deletions(-)

diff --git a/dlls/comctl32/tests/imagelist.c b/dlls/comctl32/tests/imagelist.c
index 3d4c333..0d1770b 100644
--- a/dlls/comctl32/tests/imagelist.c
+++ b/dlls/comctl32/tests/imagelist.c
@@ -65,7 +65,8 @@ typedef struct _ILHEAD
 } ILHEAD;
 #include "poppack.h"
 
-static BOOL (WINAPI *pImageList_DrawIndirect)(IMAGELISTDRAWPARAMS*) = NULL;
+static BOOL (WINAPI *pImageList_DrawIndirect)(IMAGELISTDRAWPARAMS*);
+static BOOL (WINAPI *pImageList_SetImageCount)(HIMAGELIST,UINT);
 
 static HDC desktopDC;
 static HINSTANCE hinst;
@@ -359,12 +360,19 @@ static BOOL DoTest1(void)
     ok(!ImageList_Remove(himl,0),"removed nonexistent icon\n");
 
     /* check SetImageCount/GetImageCount */
-    ok(ImageList_SetImageCount(himl, 3), "couldn't increase image count\n");
-    ok(ImageList_GetImageCount(himl) == 3, "invalid image count after increase\n");
-    ok(ImageList_SetImageCount(himl, 1), "couldn't decrease image count\n");
-    ok(ImageList_GetImageCount(himl) == 1, "invalid image count after decrease to 1\n");
-    ok(ImageList_SetImageCount(himl, 0), "couldn't decrease image count\n");
-    ok(ImageList_GetImageCount(himl) == 0, "invalid image count after decrease to 0\n");
+    if (pImageList_SetImageCount)
+    {
+        ok(pImageList_SetImageCount(himl, 3), "couldn't increase image count\n");
+        ok(ImageList_GetImageCount(himl) == 3, "invalid image count after increase\n");
+        ok(pImageList_SetImageCount(himl, 1), "couldn't decrease image count\n");
+        ok(ImageList_GetImageCount(himl) == 1, "invalid image count after decrease to 1\n");
+        ok(pImageList_SetImageCount(himl, 0), "couldn't decrease image count\n");
+        ok(ImageList_GetImageCount(himl) == 0, "invalid image count after decrease to 0\n");
+    }
+    else
+    {
+        skip("skipped ImageList_SetImageCount tests\n");
+    }
 
     /* destroy it */
     ok(ImageList_Destroy(himl),"destroy imagelist failed\n");
@@ -425,13 +433,8 @@ static BOOL DoTest3(void)
 
     if (!pImageList_DrawIndirect)
     {
-        HMODULE hComCtl32 = LoadLibraryA("comctl32.dll");
-        pImageList_DrawIndirect = (void*)GetProcAddress(hComCtl32, "ImageList_DrawIndirect");
-        if (!pImageList_DrawIndirect)
-        {
-            trace("ImageList_DrawIndirect not available, skipping test\n");
-            return TRUE;
-        }
+        trace("ImageList_DrawIndirect not available, skipping test\n");
+        return TRUE;
     }
 
     hwndfortest = create_a_window();
@@ -454,9 +457,12 @@ static BOOL DoTest3(void)
     ok(0==ImageList_Add(himl, hbm1, 0),"failed to add bitmap 1\n");
     ok(1==ImageList_Add(himl, hbm2, 0),"failed to add bitmap 2\n");
 
-    ok(ImageList_SetImageCount(himl,3),"Setimage count failed\n");
-    /*ok(2==ImageList_Add(himl, hbm3, NULL),"failed to add bitmap 3\n"); */
-    ok(ImageList_Replace(himl, 2, hbm3, 0),"failed to replace bitmap 3\n");
+    if (pImageList_SetImageCount)
+    {
+        ok(pImageList_SetImageCount(himl,3),"Setimage count failed\n");
+        /*ok(2==ImageList_Add(himl, hbm3, NULL),"failed to add bitmap 3\n"); */
+        ok(ImageList_Replace(himl, 2, hbm3, 0),"failed to replace bitmap 3\n");
+    }
 
     memset(&imldp, 0, sizeof (imldp));
     ok(!pImageList_DrawIndirect(&imldp), "zero data succeeded!\n");
@@ -969,6 +975,10 @@ static void test_imagelist_storage(void)
 
 START_TEST(imagelist)
 {
+    HMODULE hComCtl32 = GetModuleHandle("comctl32.dll");
+    pImageList_DrawIndirect = (void*)GetProcAddress(hComCtl32, "ImageList_DrawIndirect");
+    pImageList_SetImageCount = (void*)GetProcAddress(hComCtl32, "ImageList_SetImageCount");
+
     desktopDC=GetDC(NULL);
     hinst = GetModuleHandleA(NULL);
 
-- 
1.5.3.4




More information about the wine-patches mailing list