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 INT 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
);
40 extern LPVOID (WINAPI
* pCOMCTL32_Alloc
) (INT
);
41 extern BOOL (WINAPI
* pCOMCTL32_Free
) (LPVOID
);
43 extern HDPA (WINAPI
* pDPA_Create
) (INT
);
44 extern INT (WINAPI
* pDPA_InsertPtr
) (const HDPA
, INT
, LPVOID
);
45 extern BOOL (WINAPI
* pDPA_Sort
) (const HDPA
, PFNDPACOMPARE
, LPARAM
);
46 extern LPVOID (WINAPI
* pDPA_GetPtr
) (const HDPA
, INT
);
47 extern BOOL (WINAPI
* pDPA_Destroy
) (const HDPA
);
48 extern INT (WINAPI
* pDPA_Search
) (const HDPA
, LPVOID
, INT
, PFNDPACOMPARE
, LPARAM
, UINT
);
49 extern LPVOID (WINAPI
* pDPA_DeletePtr
) (const HDPA hdpa
, INT i
);
50 #define pDPA_GetPtrCount(hdpa) (*(INT*)(hdpa))
52 extern HICON (WINAPI
*pLookupIconIdFromDirectoryEx
)(LPBYTE dir
, BOOL bIcon
, INT width
, INT height
, UINT cFlag
);
53 extern HICON (WINAPI
*pCreateIconFromResourceEx
)(LPBYTE bits
,UINT cbSize
, BOOL bIcon
, DWORD dwVersion
, INT width
, INT height
,UINT cFlag
);
55 /* undocumented WINAPI functions not globaly exported */
56 LPITEMIDLIST WINAPI
ILClone (LPCITEMIDLIST pidl
);
57 LPITEMIDLIST WINAPI
ILGetNext(LPITEMIDLIST pidl
);
58 LPITEMIDLIST WINAPI
ILCombine(LPCITEMIDLIST iil1
,LPCITEMIDLIST iil2
);
59 LPITEMIDLIST WINAPI
ILFindLastID(LPITEMIDLIST pidl
);
60 DWORD WINAPI
ILGetSize(LPITEMIDLIST pidl
);
61 BOOL WINAPI
ILGetDisplayName(LPCITEMIDLIST pidl
,LPSTR path
);
62 DWORD WINAPI
ILFree(LPITEMIDLIST pidl
);
64 HRESULT WINAPI
SHILCreateFromPathA (LPSTR path
, LPITEMIDLIST
* ppidl
, DWORD attributes
);
65 HRESULT WINAPI
SHILCreateFromPathW (LPWSTR path
, LPITEMIDLIST
* ppidl
, DWORD attributes
);
66 HRESULT WINAPI
SHILCreateFromPathAW (LPVOID path
, LPITEMIDLIST
* ppidl
, DWORD attributes
);
68 LPITEMIDLIST WINAPI
ILCreateFromPathA(LPSTR path
);
69 LPITEMIDLIST WINAPI
ILCreateFromPathW(LPWSTR path
);
70 LPITEMIDLIST WINAPI
ILCreateFromPathAW(LPVOID path
);
72 BOOL WINAPI
Shell_GetImageList(HIMAGELIST
* lpBigList
, HIMAGELIST
* lpSmallList
);
73 HRESULT WINAPI
StrRetToStrN (LPVOID dest
, DWORD len
, LPSTRRET src
, LPITEMIDLIST pidl
);
76 #define INVALID_INDEX -1
77 BOOL
SIC_Initialize(void);
78 void SIC_Destroy(void);
79 BOOL
PidlToSicIndex (IShellFolder
* sh
, LPITEMIDLIST pidl
, BOOL bBigIcon
, UINT
* pIndex
);
82 BOOL
HCR_MapTypeToValue ( LPCSTR szExtension
, LPSTR szFileType
, DWORD len
);
83 BOOL
HCR_GetExecuteCommand ( LPCSTR szClass
, LPCSTR szVerb
, LPSTR szDest
, DWORD len
);
84 BOOL
HCR_GetDefaultIcon (LPCSTR szClass
, LPSTR szDest
, DWORD len
, LPDWORD dwNr
);
86 DWORD WINAPI
ParseFieldA(LPCSTR src
,DWORD field
,LPSTR dst
,DWORD len
);
88 HGLOBAL WINAPI
SHAllocShared(LPVOID psrc
, DWORD size
, DWORD procID
);
89 LPVOID WINAPI
SHLockShared(HANDLE hmem
, DWORD procID
);
90 BOOL WINAPI
SHUnlockShared(HANDLE pmem
);
91 HANDLE WINAPI
SHFreeShared(HANDLE hmem
, DWORD procID
);
93 /****************************************************************************
96 extern LPDATAOBJECT
IDataObject_Constructor(HWND hwndOwner
, LPSHELLFOLDER psf
, LPITEMIDLIST
* apidl
, UINT cidl
);
97 extern LPENUMFORMATETC
IEnumFORMATETC_Constructor(UINT
, const FORMATETC
[]);
99 extern LPCLASSFACTORY
IClassFactory_Constructor(REFCLSID
);
100 extern LPCONTEXTMENU
IContextMenu_Constructor(LPSHELLFOLDER
, LPCITEMIDLIST
*, UINT
);
101 extern LPSHELLVIEW
IShellView_Constructor(LPSHELLFOLDER
, LPCITEMIDLIST
);
102 extern LPSHELLLINK
IShellLink_Constructor(BOOL
);
103 extern LPENUMIDLIST
IEnumIDList_Constructor(LPCSTR
,DWORD
);
104 extern LPEXTRACTICONA
IExtractIconA_Constructor(LPITEMIDLIST
);
105 extern HRESULT
CreateStreamOnFile (LPCSTR pszFilename
, IStream
** ppstm
);
107 /* fixme: rename the functions when the shell32.dll has it's own exports namespace */
108 HRESULT WINAPI
SHELL32_DllGetClassObject(REFCLSID rclsid
, REFIID riid
, LPVOID
* ppv
);
109 HRESULT WINAPI
SHELL32_DllCanUnloadNow(void);
111 /* elements of this structure are accessed directly from within shell32 */
114 ICOM_VTABLE(IShellFolder
)* lpvtbl
;
116 ICOM_VTABLE(IPersistFolder
)* lpvtblPersistFolder
;
119 LPITEMIDLIST pMyPidl
;
122 extern LPSHELLFOLDER
IShellFolder_Constructor(IGenericSFImpl
*,LPITEMIDLIST
);