Add support for Unicode IExtractIcon creation in IShellFolder->GetUIObjectOf

Rolf Kalbermatter rolf.kalbermatter at citeng.com
Sat Dec 14 09:52:25 CST 2002


Changelog
  * dlls/shell32/shell32_main.h
  * dlls/shell32/shfldr_desktop.c
  * dlls/shell32/shfldr_fs.c
  * dlls/shell32/shfldr_mycomp.c
    Add support for Unicode IExtractIcon creation in IShellFolder->GetUIObjectOf

As usual X11/BSD and LGPL license compatible

Rolf Kalbermatter

Index: dlls/shell32/shell32_main.h
===================================================================
RCS file: /home/wine/wine/dlls/shell32/shell32_main.h,v
retrieving revision 1.59
diff -u -r1.59 shell32_main.h
--- dlls/shell32/shell32_main.h	6 Dec 2002 23:20:52 -0000	1.59
+++ dlls/shell32/shell32_main.h	14 Dec 2002 15:48:31 -0000
@@ -92,6 +92,7 @@
 LPENUMIDLIST	IEnumIDList_Constructor(LPCSTR,DWORD,DWORD);
 
 LPEXTRACTICONA	IExtractIconA_Constructor(LPITEMIDLIST);
+LPEXTRACTICONW	IExtractIconW_Constructor(LPITEMIDLIST);
 HRESULT		CreateStreamOnFile (LPCSTR pszFilename, IStream ** ppstm);
 
 /* FIXME: rename the functions when the shell32.dll has it's own exports namespace */

Index: dlls/shell32/shfldr_desktop.c
===================================================================
RCS file: /home/wine/wine/dlls/shell32/shfldr_desktop.c,v
retrieving revision 1.4
diff -u -r1.4 shfldr_desktop.c
--- dlls/shell32/shfldr_desktop.c	5 Dec 2002 20:33:08 -0000	1.4
+++ dlls/shell32/shfldr_desktop.c	14 Dec 2002 15:42:26 -0000
@@ -406,6 +406,11 @@
 	} else if (IsEqualIID (riid, &IID_IExtractIconA) && (cidl == 1)) {
 	    pidl = ILCombine (This->pidlRoot, apidl[0]);
 	    pObj = (LPUNKNOWN) IExtractIconA_Constructor (pidl);
+	    SHFree (pidl);
+	    hr = S_OK;
+	} else if (IsEqualIID (riid, &IID_IExtractIconW) && (cidl == 1)) {
+	    pidl = ILCombine (This->pidlRoot, apidl[0]);
+	    pObj = (LPUNKNOWN) IExtractIconW_Constructor (pidl);
 	    SHFree (pidl);
 	    hr = S_OK;
 	} else if (IsEqualIID (riid, &IID_IDropTarget) && (cidl >= 1)) {

Index: dlls/shell32/shfldr_fs.c
===================================================================
RCS file: /home/wine/wine/dlls/shell32/shfldr_fs.c,v
retrieving revision 1.4
diff -u -r1.4 shfldr_fs.c
--- dlls/shell32/shfldr_fs.c	13 Dec 2002 00:36:52 -0000	1.4
+++ dlls/shell32/shfldr_fs.c	14 Dec 2002 15:45:15 -0000
@@ -559,6 +559,11 @@
 	    pObj = (LPUNKNOWN) IExtractIconA_Constructor (pidl);
 	    SHFree (pidl);
 	    hr = S_OK;
+	} else if (IsEqualIID (riid, &IID_IExtractIconW) && (cidl == 1)) {
+	    pidl = ILCombine (This->pidlRoot, apidl[0]);
+	    pObj = (LPUNKNOWN) IExtractIconW_Constructor (pidl);
+	    SHFree (pidl);
+	    hr = S_OK;
 	} else if (IsEqualIID (riid, &IID_IDropTarget) && (cidl >= 1)) {
 	    hr = IShellFolder_QueryInterface (iface, &IID_IDropTarget, (LPVOID *) & pObj);
 	} else {

Index: dlls/shell32/shfldr_mycomp.c
===================================================================
RCS file: /home/wine/wine/dlls/shell32/shfldr_mycomp.c,v
retrieving revision 1.4
diff -u -r1.4 shfldr_mycomp.c
--- dlls/shell32/shfldr_mycomp.c	5 Dec 2002 20:33:08 -0000	1.4
+++ dlls/shell32/shfldr_mycomp.c	14 Dec 2002 15:46:14 -0000
@@ -388,6 +388,11 @@
 	    pObj = (LPUNKNOWN) IExtractIconA_Constructor (pidl);
 	    SHFree (pidl);
 	    hr = S_OK;
+	} else if (IsEqualIID (riid, &IID_IExtractIconW) && (cidl == 1)) {
+	    pidl = ILCombine (This->pidlRoot, apidl[0]);
+	    pObj = (LPUNKNOWN) IExtractIconW_Constructor (pidl);
+	    SHFree (pidl);
+	    hr = S_OK;
 	} else if (IsEqualIID (riid, &IID_IDropTarget) && (cidl >= 1)) {
 	    hr = IShellFolder_QueryInterface (iface, &IID_IDropTarget, (LPVOID *) & pObj);
 	} else {





More information about the wine-patches mailing list