patch for include/shlobj.h

"Martin Fuchs" <[email protected]> Sun, 17 Aug 2003 16:32:16 +0100
Newsgroups gmane.comp.gnu.mingw.patches
Message-ID <[email protected]>
	* include/shlobj.h:
	  declare IDragSourceHelper interface
	  declare IDropTargetHelper interface
	  declare IExtractIconW for Unicode
	  fix ICommDlgBrowser declaration by including IShellView parameter types in OnDefaultCommand(), OnStateChange() and IncludeObject()


IDragSourceHelper:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/ifaces/idragsourcehelper/idragsourcehelper.asp

IDropTargetHelper:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/ifaces/idroptargethelper/idroptargethelper.asp

IExtractIcon:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/ifaces/iextracticon/iextracticon.asp

ICommDlgBrowser:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/ifaces/icommdlgbrowser/icommdlgbrowser.asp



Index: include/shlobj.h
===================================================================
RCS file: /cvs/src/src/winsup/w32api/include/shlobj.h,v
retrieving revision 1.23
diff -u -p -d -r1.23 shlobj.h
--- include/shlobj.h	10 Aug 2003 00:40:01 -0000	1.23
+++ include/shlobj.h	17 Aug 2003 15:09:57 -0000
@@ -492,16 +492,36 @@ DECLARE_INTERFACE_(IShellPropSheetExt, I
 typedef IShellPropSheetExt *LPSHELLPROPSHEETEXT;
 
 #undef INTERFACE
-#define INTERFACE IExtractIcon
-DECLARE_INTERFACE_(IExtractIcon, IUnknown)  /* exic */
+#define INTERFACE IExtractIconA
+DECLARE_INTERFACE_(IExtractIconA, IUnknown)
 {
 	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
 	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
 	STDMETHOD_(ULONG,Release)(THIS) PURE;
-	STDMETHOD(GetIconLocation)(THIS_ UINT,LPSTR,UINT,int*,PUINT) PURE;
+    STDMETHOD(GetIconLocation)(THIS_ UINT,LPSTR,UINT,int*,PUINT) PURE;
 	STDMETHOD(Extract)(THIS_ LPCSTR,UINT,HICON*,HICON*,UINT) PURE;
 };
-typedef IExtractIcon *LPEXTRACTICON;
+typedef IExtractIconA *LPEXTRACTICONA;
+
+#undef INTERFACE
+#define INTERFACE IExtractIconW
+DECLARE_INTERFACE_(IExtractIconW, IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+    STDMETHOD(GetIconLocation)(THIS_ UINT,LPWSTR,UINT,int*,PUINT) PURE;
+	STDMETHOD(Extract)(THIS_ LPCWSTR,UINT,HICON*,HICON*,UINT) PURE;
+};
+typedef IExtractIconW *LPEXTRACTICONW;
+
+#ifdef UNICODE
+#define	IExtractIcon IExtractIconW
+#define	LPEXTRACTICON LPEXTRACTICONW
+#else
+#define	IExtractIcon IExtractIconA
+#define	LPEXTRACTICON LPEXTRACTICONA
+#endif
 
 #undef INTERFACE
 #define INTERFACE IShellLinkA
@@ -613,19 +633,6 @@ DECLARE_INTERFACE(IFileViewer)
 typedef IFileViewer *LPFILEVIEWER;
 
 #undef INTERFACE
-#define INTERFACE ICommDlgBrowser
-DECLARE_INTERFACE_(ICommDlgBrowser,IUnknown)
-{
-	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
-	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-	STDMETHOD_(ULONG,Release)(THIS) PURE;
-	STDMETHOD(OnDefaultCommand)(THIS) PURE;
-	STDMETHOD(OnStateChange)(THIS_ ULONG) PURE;
-	STDMETHOD(IncludeObject)(THIS_ LPCITEMIDLIST) PURE;
-};
-typedef ICommDlgBrowser *LPCOMMDLGBROWSER;
-
-#undef INTERFACE
 #define INTERFACE IPersistFolder
 DECLARE_INTERFACE_(IPersistFolder,IPersist)
 {
@@ -690,6 +697,20 @@ DECLARE_INTERFACE_(IShellView,IOleWindow
 	STDMETHOD(SelectItem)(THIS_ LPCITEMIDLIST,UINT) PURE;
 	STDMETHOD(GetItemObject)(THIS_ UINT,REFIID,PVOID*) PURE;
 };
+
+#undef INTERFACE
+#define INTERFACE ICommDlgBrowser
+DECLARE_INTERFACE_(ICommDlgBrowser,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(OnDefaultCommand)(THIS_ IShellView*) PURE;
+	STDMETHOD(OnStateChange)(THIS_ IShellView*,ULONG) PURE;
+	STDMETHOD(IncludeObject)(THIS_ IShellView*,LPCITEMIDLIST) PURE;
+};
+typedef ICommDlgBrowser *LPCOMMDLGBROWSER;
+
 typedef GUID SHELLVIEWID;
 typedef struct _SV2CVW2_PARAMS {
 	DWORD cbSize;
@@ -870,6 +891,51 @@ typedef BROWSEINFOA BROWSEINFO,*PBROWSEI
 #define SHGetFolderPathAndSubDir SHGetFolderPathAndSubDirA
 #endif
 #endif /* UNICODE */
+
+
+#if _WIN32_IE>=_NT5
+
+#pragma pack(push,8)
+
+typedef struct
+{
+	SIZE		sizeDragImage;
+	POINT		ptOffset;
+	HBITMAP 	hbmpDragImage;
+	COLORREF	crColorKey;
+} SHDRAGIMAGE, *LPSHDRAGIMAGE;
+
+#pragma pack(pop)
+
+#undef INTERFACE
+#define INTERFACE IDragSourceHelper
+
+DECLARE_INTERFACE_(IDragSourceHelper, IUnknown)
+{
+	STDMETHOD (QueryInterface)(THIS_ REFIID riid, void **ppv) PURE;
+	STDMETHOD_(ULONG, AddRef) (THIS) PURE;
+	STDMETHOD_(ULONG, Release) (THIS) PURE;
+	STDMETHOD (InitializeFromBitmap)(THIS_ LPSHDRAGIMAGE pshdi, IDataObject* pDataObject) PURE;
+	STDMETHOD (InitializeFromWindow)(THIS_ HWND hwnd, POINT* ppt, IDataObject* pDataObject) PURE;
+};
+
+#undef INTERFACE
+#define INTERFACE IDropTargetHelper
+
+DECLARE_INTERFACE_(IDropTargetHelper, IUnknown)
+{
+    STDMETHOD (QueryInterface)(THIS_ REFIID riid, void** ppv) PURE;
+    STDMETHOD_(ULONG, AddRef) (THIS) PURE;
+    STDMETHOD_(ULONG, Release) (THIS) PURE;
+    STDMETHOD (DragEnter)(THIS_ HWND hwndTarget, IDataObject* pDataObject, POINT* ppt, DWORD dwEffect) PURE;
+    STDMETHOD (DragLeave)(THIS) PURE;
+    STDMETHOD (DragOver)(THIS_ POINT* ppt, DWORD dwEffect) PURE;
+    STDMETHOD (Drop)(THIS_ IDataObject* pDataObject, POINT* ppt, DWORD dwEffect) PURE;
+    STDMETHOD (Show)(THIS_ BOOL fShow) PURE;
+};
+
+#endif /* _WIN32_IE >= _NT5 */
+
 
 #pragma pack(pop)
 #ifdef __cplusplus



-------------------------------------------------------
This SF.Net email sponsored by: Free pre-built ASP.NET sites including
Data Reports, E-commerce, Portals, and Forums are available now.
Download today and enter to win an XBOX or Visual Studio .NET.
http://aspnet.click-url.com/go/psa00100003ave/direct;at.aspnet_072303_01/01