[PATCH 02/16] comctl32: Add basic structure for IImageList interface

Nikolay Sivov bunglehead at gmail.com
Tue Nov 10 20:31:03 CST 2009


On Wed, Nov 11, 2009 at 12:11 AM, Owen Rudge <orudge at codeweavers.com> wrote:
> ---
>  dlls/comctl32/imagelist.c |  322
> ++++++++++++++++++++++++++++++++++++++++++++-
>  dlls/comctl32/imagelist.h |    3 +
>  2 files changed, 319 insertions(+), 6 deletions(-)
>

After that:
---
diff --git a/dlls/comctl32/imagelist.h b/dlls/comctl32/imagelist.h
index 73ccd8a..51b8635 100644
--- a/dlls/comctl32/imagelist.h
+++ b/dlls/comctl32/imagelist.h
@@ -30,6 +30,9 @@
 /* the ones with offsets at the end are the same as in Windows */
 struct _IMAGELIST
 {
+    const struct IImageListVtbl *lpVtbl;/* IImageList vtable */
+    LONG        ref;                    /* reference count */
+
     DWORD       magic;                  /* 00: 'SAMX' */
     INT         cCurImage;              /* 04: ImageCount */
     INT         cMaxImage;              /* 08: maximages */
---

let's pray that nobody depends on structure layout :). If it'll be a
problem the possible solution could be to use two structure types
- one for traditional API and one for com-based. Choosing one of it
could be done possibly in ImageList_Create checking for manifest
enabled in activation context. All traditional calls should check for
that then and apply an offset to pointer to get HIMAGELIST without
vtbl. We'll see...



More information about the wine-devel mailing list