2 * internal Shell32 Library definitions
5 #ifndef __WINE_SHELL_MAIN_H
6 #define __WINE_SHELL_MAIN_H
13 #include "wine/obj_shellfolder.h"
14 #include "wine/obj_dataobject.h"
15 #include "wine/obj_contextmenu.h"
16 #include "wine/obj_shellview.h"
17 #include "wine/obj_shelllink.h"
18 #include "wine/obj_extracticon.h"
20 /*******************************************
21 * global SHELL32.DLL variables
23 extern HINSTANCE shell32_hInstance
;
24 extern LONG shell32_ObjCount
;
25 extern HIMAGELIST ShellSmallIconList
;
26 extern HIMAGELIST ShellBigIconList
;
29 /*******************************************
30 * pointer to functions dynamically loaded
32 extern void (WINAPI
* pDLLInitComctl
)(LPVOID
);
33 extern INT (WINAPI
* pImageList_AddIcon
) (HIMAGELIST himl
, HICON hIcon
);
34 extern INT (WINAPI
* pImageList_ReplaceIcon
) (HIMAGELIST
, INT
, HICON
);
35 extern HIMAGELIST (WINAPI
* pImageList_Create
) (INT
,INT
,UINT
,INT
,INT
);
36 extern BOOL (WINAPI
* pImageList_Draw
) (HIMAGELIST himl
, int i
, HDC hdcDest
, int x
, int y
, UINT fStyle
);
37 extern HICON (WINAPI
* pImageList_GetIcon
) (HIMAGELIST
, INT
, UINT
);
38 extern INT (WINAPI
* pImageList_GetImageCount
)(HIMAGELIST
);
39 extern COLORREF (WINAPI
*pImageList_SetBkColor
)(HIMAGELIST
, COLORREF
);
41 extern LPVOID (WINAPI
* pCOMCTL32_Alloc
) (INT
);
42 extern BOOL (WINAPI
* pCOMCTL32_Free
) (LPVOID
);
44 extern HDPA (WINAPI
* pDPA_Create
) (INT
);
45 extern INT (WINAPI
* pDPA_InsertPtr
) (const HDPA
, INT
, LPVOID
);
46 extern BOOL (WINAPI
* pDPA_Sort
) (const HDPA
, PFNDPACOMPARE
, LPARAM
);
47 extern LPVOID (WINAPI
* pDPA_GetPtr
) (const HDPA
, INT
);
48 extern BOOL (WINAPI
* pDPA_Destroy
) (const HDPA
);
49 extern INT (WINAPI
* pDPA_Search
) (const HDPA
, LPVOID
, INT
, PFNDPACOMPARE
, LPARAM
, UINT
);
50 extern LPVOID (WINAPI
* pDPA_DeletePtr
) (const HDPA hdpa
, INT i
);
51 #define pDPA_GetPtrCount(hdpa) (*(INT*)(hdpa))
53 extern HICON (WINAPI
*pLookupIconIdFromDirectoryEx
)(LPBYTE dir
, BOOL bIcon
, INT width
, INT height
, UINT cFlag
);
54 extern HICON (WINAPI
*pCreateIconFromResourceEx
)(LPBYTE bits
,UINT cbSize
, BOOL bIcon
, DWORD dwVersion
, INT width
, INT height
,UINT cFlag
);
58 extern HRESULT (WINAPI* pOleInitialize)(LPVOID reserved);
59 extern void (WINAPI* pOleUninitialize)(void);
60 extern HRESULT (WINAPI* pDoDragDrop)(IDataObject* pDataObject, IDropSource * pDropSource, DWORD dwOKEffect, DWORD * pdwEffect);
61 extern HRESULT (WINAPI* pRegisterDragDrop)(HWND hwnd, IDropTarget* pDropTarget);
62 extern HRESULT (WINAPI* pRevokeDragDrop)(HWND hwnd);
64 BOOL WINAPI
Shell_GetImageList(HIMAGELIST
* lpBigList
, HIMAGELIST
* lpSmallList
);
66 HRESULT WINAPI
StrRetToStrNA (LPVOID dest
, DWORD len
, LPSTRRET src
, LPITEMIDLIST pidl
);
67 HRESULT WINAPI
StrRetToStrNW (LPVOID dest
, DWORD len
, LPSTRRET src
, LPITEMIDLIST pidl
);
68 HRESULT WINAPI
StrRetToStrN (LPVOID dest
, DWORD len
, LPSTRRET src
, LPITEMIDLIST pidl
);
71 #define INVALID_INDEX -1
72 BOOL
SIC_Initialize(void);
73 void SIC_Destroy(void);
74 BOOL
PidlToSicIndex (IShellFolder
* sh
, LPITEMIDLIST pidl
, BOOL bBigIcon
, UINT uFlags
, UINT
* pIndex
);
77 BOOL
HCR_MapTypeToValue ( LPCSTR szExtension
, LPSTR szFileType
, DWORD len
, BOOL bPrependDot
);
78 BOOL
HCR_GetExecuteCommand ( LPCSTR szClass
, LPCSTR szVerb
, LPSTR szDest
, DWORD len
);
79 BOOL
HCR_GetDefaultIcon (LPCSTR szClass
, LPSTR szDest
, DWORD len
, LPDWORD dwNr
);
80 BOOL
HCR_GetClassName (REFIID riid
, LPSTR szDest
, DWORD len
);
81 BOOL
HCR_GetFolderAttributes (REFIID riid
, LPDWORD szDest
);
83 DWORD WINAPI
ParseFieldA(LPCSTR src
,DWORD field
,LPSTR dst
,DWORD len
);
85 /****************************************************************************
88 LPDATAOBJECT
IDataObject_Constructor(HWND hwndOwner
, LPITEMIDLIST myPidl
, LPITEMIDLIST
* apidl
, UINT cidl
);
89 LPENUMFORMATETC
IEnumFORMATETC_Constructor(UINT
, const FORMATETC
[]);
91 LPCLASSFACTORY
IClassFactory_Constructor(REFCLSID
);
92 IContextMenu
* ISvItemCm_Constructor(LPSHELLFOLDER pSFParent
, LPCITEMIDLIST pidl
, LPCITEMIDLIST
*aPidls
, UINT uItemCount
);
93 IContextMenu
* ISvBgCm_Constructor(LPSHELLFOLDER pSFParent
);
94 LPSHELLVIEW
IShellView_Constructor(LPSHELLFOLDER
);
95 LPSHELLLINK
IShellLink_Constructor(BOOL
);
97 IShellFolder
* ISF_Desktop_Constructor(void);
99 /* kind of enumidlist */
101 #define EIDL_MYCOMP 1
104 LPENUMIDLIST
IEnumIDList_Constructor(LPCSTR
,DWORD
,DWORD
);
106 LPEXTRACTICONA
IExtractIconA_Constructor(LPITEMIDLIST
);
107 HRESULT
CreateStreamOnFile (LPCSTR pszFilename
, IStream
** ppstm
);
109 /* fixme: rename the functions when the shell32.dll has it's own exports namespace */
110 HRESULT WINAPI
SHELL32_DllGetClassObject(REFCLSID rclsid
, REFIID riid
, LPVOID
* ppv
);
111 HRESULT WINAPI
SHELL32_DllCanUnloadNow(void);
113 /* fixme: move away */
114 #define ResultFromShort(i) MAKE_SCODE(SEVERITY_SUCCESS, 0, (USHORT)(i))
117 #define MM_ADDSEPARATOR 0x00000001L
118 #define MM_SUBMENUSHAVEIDS 0x00000002L
119 HRESULT WINAPI
Shell_MergeMenus (HMENU hmDst
, HMENU hmSrc
, UINT uInsert
, UINT uIDAdjust
, UINT uIDAdjustMax
, ULONG uFlags
);
121 /* initialisation for FORMATETC */
122 #define InitFormatEtc(fe, cf, med) \
125 (fe).dwAspect=DVASPECT_CONTENT;\
131 #define KeyStateToDropEffect(kst)\
132 (((kst) & MK_CONTROL) ?\
133 (((kst) & MK_SHIFT) ? DROPEFFECT_LINK : DROPEFFECT_COPY):\
137 BOOL
SYSTRAY_Init(void);
140 void InitShellOle(void);
141 void FreeShellOle(void);
142 BOOL
GetShellOle(void);
144 HRESULT (WINAPI
* pOleInitialize
)(LPVOID reserved
);
145 void (WINAPI
* pOleUninitialize
)(void);
146 HRESULT (WINAPI
* pRegisterDragDrop
)(HWND hwnd
, IDropTarget
* pDropTarget
);
147 HRESULT (WINAPI
* pRevokeDragDrop
)(HWND hwnd
);
148 HRESULT (WINAPI
* pDoDragDrop
)(LPDATAOBJECT
,LPDROPSOURCE
,DWORD
,DWORD
*);
149 void (WINAPI
* pReleaseStgMedium
)(STGMEDIUM
* pmedium
);
150 HRESULT (WINAPI
* pOleSetClipboard
)(IDataObject
* pDataObj
);
151 HRESULT (WINAPI
* pOleGetClipboard
)(IDataObject
** ppDataObj
);
153 HGLOBAL
RenderHDROP(LPITEMIDLIST pidlRoot
, LPITEMIDLIST
* apidl
, UINT cidl
);
154 HGLOBAL
RenderSHELLIDLIST (LPITEMIDLIST pidlRoot
, LPITEMIDLIST
* apidl
, UINT cidl
);
155 HGLOBAL
RenderSHELLIDLISTOFFSET (LPITEMIDLIST pidlRoot
, LPITEMIDLIST
* apidl
, UINT cidl
);
156 HGLOBAL
RenderFILECONTENTS (LPITEMIDLIST pidlRoot
, LPITEMIDLIST
* apidl
, UINT cidl
);
157 HGLOBAL
RenderFILEDESCRIPTOR (LPITEMIDLIST pidlRoot
, LPITEMIDLIST
* apidl
, UINT cidl
);
158 HGLOBAL
RenderFILENAME (LPITEMIDLIST pidlRoot
, LPITEMIDLIST
* apidl
, UINT cidl
);
159 HGLOBAL
RenderPREFEREDDROPEFFECT (DWORD dwFlags
);
161 /* Change Notification */
162 void InitChangeNotifications(void);
163 void FreeChangeNotifications(void);
166 BOOL
SHELL_DeleteDirectoryA(LPCSTR pszDir
, BOOL bShowUI
);