comctl32: Add stubs for image list functions introduced in Vista.
diff --git a/dlls/comctl32/comctl32.spec b/dlls/comctl32/comctl32.spec
index 6b8f662..e852916 100644
--- a/dlls/comctl32/comctl32.spec
+++ b/dlls/comctl32/comctl32.spec
@@ -139,10 +139,12 @@
 @ stdcall FlatSB_SetScrollRange (long long long long long)
 @ stdcall FlatSB_ShowScrollBar (long long long)
 @ stdcall GetMUILanguage()
+@ stdcall HIMAGELIST_QueryInterface(ptr ptr ptr)
 @ stdcall ImageList_Add(ptr long long)
 @ stdcall ImageList_AddIcon(ptr long)
 @ stdcall ImageList_AddMasked(ptr long long)
 @ stdcall ImageList_BeginDrag(ptr long long long)
+@ stdcall ImageList_CoCreateInstance(ptr ptr ptr ptr)
 @ stdcall ImageList_Copy(ptr long ptr long long)
 @ stdcall ImageList_Create(long long long long long)
 @ stdcall ImageList_Destroy(ptr)
diff --git a/dlls/comctl32/imagelist.c b/dlls/comctl32/imagelist.c
index 84971f7..d3f0b36 100644
--- a/dlls/comctl32/imagelist.c
+++ b/dlls/comctl32/imagelist.c
@@ -6,6 +6,7 @@
  *  Copyright 2001, 2004 Michael Stefaniuc
  *  Copyright 2001 Charles Loep for CodeWeavers
  *  Copyright 2002 Dimitrie O. Paun
+ *  Copyright 2009 Owen Rudge for CodeWeavers
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -2906,3 +2907,47 @@
 {
     return SetDIBColorTable(himl->hdcImage, uStartIndex, cEntries, prgb);
 }
+
+/*************************************************************************
+ * ImageList_CoCreateInstance [COMCTL32.@]
+ *
+ * Creates a new imagelist instance and returns an interface pointer to it.
+ *
+ * PARAMS
+ *     rclsid      [I] A reference to the CLSID (CLSID_ImageList).
+ *     punkOuter   [I] Pointer to IUnknown interface for aggregation, if desired
+ *     riid        [I] Identifier of the requested interface.
+ *     ppv         [O] Returns the address of the pointer requested, or NULL.
+ *
+ * RETURNS
+ *     Success: S_OK.
+ *     Failure: Error value.
+ */
+HRESULT WINAPI
+ImageList_CoCreateInstance (REFCLSID rclsid, const IUnknown *punkOuter, REFIID riid, void **ppv)
+{
+    FIXME("STUB: %s %p %s %p\n", debugstr_guid(rclsid), punkOuter, debugstr_guid(riid), ppv);
+    return E_NOINTERFACE;
+}
+
+/*************************************************************************
+ * HIMAGELIST_QueryInterface [COMCTL32.@]
+ *
+ * Returns a pointer to an IImageList or IImageList2 object for the given
+ * HIMAGELIST.
+ *
+ * PARAMS
+ *     himl        [I] Image list handle.
+ *     riid        [I] Identifier of the requested interface.
+ *     ppv         [O] Returns the address of the pointer requested, or NULL.
+ *
+ * RETURNS
+ *     Success: S_OK.
+ *     Failure: Error value.
+ */
+HRESULT WINAPI
+HIMAGELIST_QueryInterface (HIMAGELIST himl, REFIID riid, void **ppv)
+{
+    FIXME("STUB: %p %s %p\n", himl, debugstr_guid(riid), ppv);
+    return E_NOINTERFACE;
+}
diff --git a/include/commctrl.h b/include/commctrl.h
index 8673ba9..17d8b86 100644
--- a/include/commctrl.h
+++ b/include/commctrl.h
@@ -584,6 +584,7 @@
 } IMAGELISTDRAWPARAMS, *LPIMAGELISTDRAWPARAMS;
 
 
+HRESULT  WINAPI HIMAGELIST_QueryInterface(HIMAGELIST,REFIID,void **);
 INT      WINAPI ImageList_Add(HIMAGELIST,HBITMAP,HBITMAP);
 INT      WINAPI ImageList_AddMasked(HIMAGELIST,HBITMAP,COLORREF);
 BOOL     WINAPI ImageList_BeginDrag(HIMAGELIST,INT,INT,INT);
diff --git a/include/commoncontrols.idl b/include/commoncontrols.idl
index a162b38..6e00837 100644
--- a/include/commoncontrols.idl
+++ b/include/commoncontrols.idl
@@ -61,6 +61,8 @@
 typedef IMAGELISTDRAWPARAMS* LPIMAGELISTDRAWPARAMS;
 cpp_quote("#endif")
 
+cpp_quote("HRESULT WINAPI ImageList_CoCreateInstance(REFCLSID,const IUnknown *, REFIID,void **);")
+
 const UINT ILIF_ALPHA = 1;
 
 [