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
;
28 /*******************************************
29 * pointer to functions dynamically loaded
31 extern void (WINAPI
* pDLLInitComctl
)(LPVOID
);
32 extern INT (WINAPI
* pImageList_AddIcon
) (HIMAGELIST himl
, HICON hIcon
);
33 extern INT (WINAPI
* pImageList_ReplaceIcon
) (HIMAGELIST
, INT
, HICON
);
34 extern HIMAGELIST (WINAPI
* pImageList_Create
) (INT
,INT
,UINT
,INT
,INT
);
35 extern BOOL (WINAPI
* pImageList_Draw
) (HIMAGELIST himl
, int i
, HDC hdcDest
, int x
, int y
, UINT fStyle
);
36 extern HICON (WINAPI
* pImageList_GetIcon
) (HIMAGELIST
, INT
, UINT
);
37 extern INT (WINAPI
* pImageList_GetImageCount
)(HIMAGELIST
);
39 extern LPVOID (WINAPI
* pCOMCTL32_Alloc
) (INT
);
40 extern BOOL (WINAPI
* pCOMCTL32_Free
) (LPVOID
);
42 extern HDPA (WINAPI
* pDPA_Create
) (INT
);
43 extern INT (WINAPI
* pDPA_InsertPtr
) (const HDPA
, INT
, LPVOID
);
44 extern BOOL (WINAPI
* pDPA_Sort
) (const HDPA
, PFNDPACOMPARE
, LPARAM
);
45 extern LPVOID (WINAPI
* pDPA_GetPtr
) (const HDPA
, INT
);
46 extern BOOL (WINAPI
* pDPA_Destroy
) (const HDPA
);
47 extern INT (WINAPI
* pDPA_Search
) (const HDPA
, LPVOID
, INT
, PFNDPACOMPARE
, LPARAM
, UINT
);
48 extern LPVOID (WINAPI
* pDPA_DeletePtr
) (const HDPA hdpa
, INT i
);
49 #define pDPA_GetPtrCount(hdpa) (*(INT*)(hdpa))
51 extern HICON (WINAPI
*pLookupIconIdFromDirectoryEx
)(LPBYTE dir
, BOOL bIcon
, INT width
, INT height
, UINT cFlag
);
52 extern HICON (WINAPI
*pCreateIconFromResourceEx
)(LPBYTE bits
,UINT cbSize
, BOOL bIcon
, DWORD dwVersion
, INT width
, INT height
,UINT cFlag
);
54 /* undocumented WINAPI functions not globaly exported */
55 LPITEMIDLIST WINAPI
ILClone (LPCITEMIDLIST pidl
);
56 LPITEMIDLIST WINAPI
ILGetNext(LPITEMIDLIST pidl
);
57 LPITEMIDLIST WINAPI
ILCombine(LPCITEMIDLIST iil1
,LPCITEMIDLIST iil2
);
58 LPITEMIDLIST WINAPI
ILFindLastID(LPITEMIDLIST pidl
);
59 DWORD WINAPI
ILGetSize(LPITEMIDLIST pidl
);
60 BOOL WINAPI
ILGetDisplayName(LPCITEMIDLIST pidl
,LPSTR path
);
61 DWORD WINAPI
ILFree(LPITEMIDLIST pidl
);
63 HRESULT WINAPI
SHILCreateFromPathA (LPSTR path
, LPITEMIDLIST
* ppidl
, DWORD attributes
);
64 HRESULT WINAPI
SHILCreateFromPathW (LPWSTR path
, LPITEMIDLIST
* ppidl
, DWORD attributes
);
65 HRESULT WINAPI
SHILCreateFromPathAW (LPVOID path
, LPITEMIDLIST
* ppidl
, DWORD attributes
);
67 LPITEMIDLIST WINAPI
ILCreateFromPathA(LPSTR path
);
68 LPITEMIDLIST WINAPI
ILCreateFromPathW(LPWSTR path
);
69 LPITEMIDLIST WINAPI
ILCreateFromPathAW(LPVOID path
);
71 BOOL WINAPI
Shell_GetImageList(HIMAGELIST
* lpBigList
, HIMAGELIST
* lpSmallList
);
72 HRESULT WINAPI
StrRetToStrN (LPVOID dest
, DWORD len
, LPSTRRET src
, LPITEMIDLIST pidl
);
75 #define INVALID_INDEX -1
76 BOOL
SIC_Initialize(void);
77 void SIC_Destroy(void);
78 BOOL
PidlToSicIndex (IShellFolder
* sh
, LPITEMIDLIST pidl
, BOOL bBigIcon
, UINT
* pIndex
);
81 BOOL
HCR_MapTypeToValue ( LPCSTR szExtension
, LPSTR szFileType
, DWORD len
);
82 BOOL
HCR_GetExecuteCommand ( LPCSTR szClass
, LPCSTR szVerb
, LPSTR szDest
, DWORD len
);
83 BOOL
HCR_GetDefaultIcon (LPCSTR szClass
, LPSTR szDest
, DWORD len
, LPDWORD dwNr
);
85 DWORD WINAPI
ParseFieldA(LPCSTR src
,DWORD field
,LPSTR dst
,DWORD len
);
87 HGLOBAL WINAPI
SHAllocShared(LPVOID psrc
, DWORD size
, DWORD procID
);
88 LPVOID WINAPI
SHLockShared(HANDLE hmem
, DWORD procID
);
89 BOOL WINAPI
SHUnlockShared(HANDLE pmem
);
90 HANDLE WINAPI
SHFreeShared(HANDLE hmem
, DWORD procID
);
92 /****************************************************************************
95 extern LPDATAOBJECT
IDataObject_Constructor(HWND hwndOwner
, LPSHELLFOLDER psf
, LPITEMIDLIST
* apidl
, UINT cidl
);
96 extern LPENUMFORMATETC
IEnumFORMATETC_Constructor(UINT
, const FORMATETC
[]);
98 extern LPCLASSFACTORY
IShellLink_CF_Constructor(void);
99 extern LPCLASSFACTORY
IShellLinkW_CF_Constructor(void);
101 extern LPCLASSFACTORY
IClassFactory_Constructor(void);
102 extern LPCONTEXTMENU
IContextMenu_Constructor(LPSHELLFOLDER
, LPCITEMIDLIST
*, UINT
);
103 extern LPSHELLVIEW
IShellView_Constructor(LPSHELLFOLDER
, LPCITEMIDLIST
);
104 extern LPSHELLLINK
IShellLink_Constructor(void);
105 extern LPSHELLLINKW
IShellLinkW_Constructor(void);
106 extern LPENUMIDLIST
IEnumIDList_Constructor(LPCSTR
,DWORD
);
107 extern LPEXTRACTICONA
IExtractIconA_Constructor(LPITEMIDLIST
);
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 /* elements of this structure are accessed directly from within shell32 */
116 ICOM_VTABLE(IShellFolder
)* lpvtbl
;
118 ICOM_VTABLE(IPersistFolder
)* lpvtblPersistFolder
;
121 LPITEMIDLIST pMyPidl
;
124 extern LPSHELLFOLDER
IShellFolder_Constructor(IGenericSFImpl
*,LPITEMIDLIST
);