2 * internal Shell32 Library definitions
5 #ifndef __WINE_SHELL_MAIN_H
6 #define __WINE_SHELL_MAIN_H
11 #include "wine/obj_shellfolder.h"
12 #include "wine/obj_dataobject.h"
13 #include "wine/obj_contextmenu.h"
14 #include "wine/obj_shellview.h"
15 #include "wine/obj_shelllink.h"
16 #include "wine/obj_extracticon.h"
17 #include "wine/windef16.h"
19 /*******************************************
20 * global SHELL32.DLL variables
22 extern HMODULE huser32
;
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
);
67 #define INVALID_INDEX -1
68 BOOL
SIC_Initialize(void);
69 void SIC_Destroy(void);
70 BOOL
PidlToSicIndex (IShellFolder
* sh
, LPITEMIDLIST pidl
, BOOL bBigIcon
, UINT uFlags
, UINT
* pIndex
);
73 BOOL
HCR_MapTypeToValue ( LPCSTR szExtension
, LPSTR szFileType
, DWORD len
, BOOL bPrependDot
);
74 BOOL
HCR_GetExecuteCommand ( LPCSTR szClass
, LPCSTR szVerb
, LPSTR szDest
, DWORD len
);
75 BOOL
HCR_GetDefaultIcon (LPCSTR szClass
, LPSTR szDest
, DWORD len
, LPDWORD dwNr
);
76 BOOL
HCR_GetClassName (REFIID riid
, LPSTR szDest
, DWORD len
);
77 BOOL
HCR_GetFolderAttributes (REFIID riid
, LPDWORD szDest
);
79 DWORD WINAPI
ParseFieldA(LPCSTR src
,DWORD field
,LPSTR dst
,DWORD len
);
81 /****************************************************************************
84 LPDATAOBJECT
IDataObject_Constructor(HWND hwndOwner
, LPITEMIDLIST myPidl
, LPITEMIDLIST
* apidl
, UINT cidl
);
85 LPENUMFORMATETC
IEnumFORMATETC_Constructor(UINT
, const FORMATETC
[]);
87 LPCLASSFACTORY
IClassFactory_Constructor(REFCLSID
);
88 IContextMenu
* ISvItemCm_Constructor(LPSHELLFOLDER pSFParent
, LPCITEMIDLIST pidl
, LPCITEMIDLIST
*aPidls
, UINT uItemCount
);
89 IContextMenu
* ISvBgCm_Constructor(LPSHELLFOLDER pSFParent
);
90 LPSHELLVIEW
IShellView_Constructor(LPSHELLFOLDER
);
91 LPSHELLLINK
IShellLink_Constructor(BOOL
);
93 IShellFolder
* ISF_Desktop_Constructor(void);
95 /* kind of enumidlist */
100 LPENUMIDLIST
IEnumIDList_Constructor(LPCSTR
,DWORD
,DWORD
);
102 LPEXTRACTICONA
IExtractIconA_Constructor(LPITEMIDLIST
);
103 HRESULT
CreateStreamOnFile (LPCSTR pszFilename
, IStream
** ppstm
);
105 /* fixme: rename the functions when the shell32.dll has it's own exports namespace */
106 HRESULT WINAPI
SHELL32_DllGetClassObject(REFCLSID rclsid
, REFIID riid
, LPVOID
* ppv
);
107 HRESULT WINAPI
SHELL32_DllCanUnloadNow(void);
109 /* fixme: move away */
110 #define ResultFromShort(i) MAKE_SCODE(SEVERITY_SUCCESS, 0, (USHORT)(i))
113 #define MM_ADDSEPARATOR 0x00000001L
114 #define MM_SUBMENUSHAVEIDS 0x00000002L
115 HRESULT WINAPI
Shell_MergeMenus (HMENU hmDst
, HMENU hmSrc
, UINT uInsert
, UINT uIDAdjust
, UINT uIDAdjustMax
, ULONG uFlags
);
117 /* initialisation for FORMATETC */
118 #define InitFormatEtc(fe, cf, med) \
121 (fe).dwAspect=DVASPECT_CONTENT;\
127 #define KeyStateToDropEffect(kst)\
128 (((kst) & MK_CONTROL) ?\
129 (((kst) & MK_SHIFT) ? DROPEFFECT_LINK : DROPEFFECT_COPY):\
133 BOOL
SYSTRAY_Init(void);
136 void InitShellOle(void);
137 void FreeShellOle(void);
138 BOOL
GetShellOle(void);
140 HRESULT (WINAPI
* pOleInitialize
)(LPVOID reserved
);
141 void (WINAPI
* pOleUninitialize
)(void);
142 HRESULT (WINAPI
* pRegisterDragDrop
)(HWND hwnd
, IDropTarget
* pDropTarget
);
143 HRESULT (WINAPI
* pRevokeDragDrop
)(HWND hwnd
);
144 HRESULT (WINAPI
* pDoDragDrop
)(LPDATAOBJECT
,LPDROPSOURCE
,DWORD
,DWORD
*);
145 void (WINAPI
* pReleaseStgMedium
)(STGMEDIUM
* pmedium
);
146 HRESULT (WINAPI
* pOleSetClipboard
)(IDataObject
* pDataObj
);
147 HRESULT (WINAPI
* pOleGetClipboard
)(IDataObject
** ppDataObj
);
149 HGLOBAL
RenderHDROP(LPITEMIDLIST pidlRoot
, LPITEMIDLIST
* apidl
, UINT cidl
);
150 HGLOBAL
RenderSHELLIDLIST (LPITEMIDLIST pidlRoot
, LPITEMIDLIST
* apidl
, UINT cidl
);
151 HGLOBAL
RenderSHELLIDLISTOFFSET (LPITEMIDLIST pidlRoot
, LPITEMIDLIST
* apidl
, UINT cidl
);
152 HGLOBAL
RenderFILECONTENTS (LPITEMIDLIST pidlRoot
, LPITEMIDLIST
* apidl
, UINT cidl
);
153 HGLOBAL
RenderFILEDESCRIPTOR (LPITEMIDLIST pidlRoot
, LPITEMIDLIST
* apidl
, UINT cidl
);
154 HGLOBAL
RenderFILENAME (LPITEMIDLIST pidlRoot
, LPITEMIDLIST
* apidl
, UINT cidl
);
155 HGLOBAL
RenderPREFEREDDROPEFFECT (DWORD dwFlags
);
157 /* Change Notification */
158 void InitChangeNotifications(void);
159 void FreeChangeNotifications(void);
162 BOOL
SHELL_DeleteDirectoryA(LPCSTR pszDir
, BOOL bShowUI
);
164 extern HINSTANCE
SHELL_FindExecutable(LPCSTR
,LPCSTR
,LPSTR
);
166 /* 16-bit functions */
167 void WINAPI
DragAcceptFiles16(HWND16 hWnd
, BOOL16 b
);
168 UINT16 WINAPI
DragQueryFile16(HDROP16 hDrop
, WORD wFile
, LPSTR lpszFile
, WORD wLength
);
169 void WINAPI
DragFinish16(HDROP16 h
);
170 BOOL16 WINAPI
DragQueryPoint16(HDROP16 hDrop
, POINT16
*p
);
171 HINSTANCE16 WINAPI
ShellExecute16(HWND16
,LPCSTR
,LPCSTR
,LPCSTR
,LPCSTR
,INT16
);
172 HICON16 WINAPI
ExtractIcon16(HINSTANCE16
,LPCSTR
,UINT16
);
173 HICON16 WINAPI
ExtractAssociatedIcon16(HINSTANCE16
,LPSTR
,LPWORD
);
174 HICON16 WINAPI
ExtractIconEx16 ( LPCSTR
, INT16
, HICON16
*, HICON16
*, UINT16
);
175 HINSTANCE16 WINAPI
FindExecutable16(LPCSTR
,LPCSTR
,LPSTR
);
176 HGLOBAL16 WINAPI
InternalExtractIcon16(HINSTANCE16
,LPCSTR
,UINT16
,WORD
);
177 BOOL16 WINAPI
ShellAbout16(HWND16
,LPCSTR
,LPCSTR
,HICON16
);
179 inline static BOOL
SHELL_OsIsUnicode(void)
181 /* if high-bit of version is 0, we are emulating NT */
182 return !(GetVersion() & 0x80000000);