New stubs PrivateExtractIconEx[AW], PrivateExtractIconsW,
[wine/multimedia.git] / include / shell.h
blobb619fc9a32058c6f89e645ba089afa69d661a1a3
1 /*
2 * Shell Library definitions
3 */
4 #ifndef __WINE_SHELL_H
5 #define __WINE_SHELL_H
7 #include "windows.h"
8 #include "winreg.h"
9 #include "imagelist.h"
11 #ifndef MAX_PATH
12 #define MAX_PATH 260
13 #endif
15 /****************************************************************************
16 * shell 16
18 extern void SHELL_LoadRegistry(void);
19 extern void SHELL_SaveRegistry(void);
20 extern void SHELL_Init(void);
22 /* global functions used from shell32 */
23 extern HINSTANCE32 SHELL_FindExecutable(LPCSTR,LPCSTR ,LPSTR);
24 extern HGLOBAL16 WINAPI InternalExtractIcon(HINSTANCE16,LPCSTR,UINT16,WORD);
26 /****************************************************************************
27 * shell 32
29 /****************************************************************************
30 * common return codes
32 #define SHELL_ERROR_SUCCESS 0L
33 #define SHELL_ERROR_BADDB 1L
34 #define SHELL_ERROR_BADKEY 2L
35 #define SHELL_ERROR_CANTOPEN 3L
36 #define SHELL_ERROR_CANTREAD 4L
37 #define SHELL_ERROR_CANTWRITE 5L
38 #define SHELL_ERROR_OUTOFMEMORY 6L
39 #define SHELL_ERROR_INVALID_PARAMETER 7L
40 #define SHELL_ERROR_ACCESS_DENIED 8L
42 /****************************************************************************
43 * common shell file structures
45 #define FO_MOVE 0x0001
46 #define FO_COPY 0x0002
47 #define FO_DELETE 0x0003
48 #define FO_RENAME 0x0004
50 #define FOF_MULTIDESTFILES 0x0001
51 #define FOF_CONFIRMMOUSE 0x0002
52 #define FOF_SILENT 0x0004
53 #define FOF_RENAMEONCOLLISION 0x0008
54 #define FOF_NOCONFIRMATION 0x0010
55 #define FOF_WANTMAPPINGHANDLE 0x0020
56 #define FOF_ALLOWUNDO 0x0040
57 #define FOF_FILESONLY 0x0080
58 #define FOF_SIMPLEPROGRESS 0x0100
59 #define FOF_NOCONFIRMMKDIR 0x0200
60 #define FOF_NOERRORUI 0x0400
62 typedef WORD FILEOP_FLAGS;
64 #define PO_DELETE 0x0013
65 #define PO_RENAME 0x0014
66 #define PO_PORTCHANGE 0x0020
68 typedef WORD PRINTEROP_FLAGS;
70 /******************************
71 * DROPFILESTRUCT
73 typedef struct { /* structure for dropped files */
74 WORD wSize;
75 POINT16 ptMousePos;
76 BOOL16 fInNonClientArea;
77 /* memory block with filenames follows */
78 } DROPFILESTRUCT, *LPDROPFILESTRUCT;
80 /****************************************************************************
81 * NOTIFYICONDATA
83 typedef struct _NOTIFYICONDATA {
84 DWORD cbSize;
85 HWND32 hWnd;
86 UINT32 uID;
87 UINT32 uFlags;
88 UINT32 uCallbackMessage;
89 HICON32 hIcon;
90 CHAR szTip[64];
91 } NOTIFYICONDATA, *PNOTIFYICONDATA;
93 /****************************************************************************
94 * SHITEMID, ITEMIDLIST, PIDL API
96 #pragma pack(1)
97 typedef struct
98 { WORD cb; /* nr of bytes in this item */
99 BYTE abID[1];/* first byte in this item */
100 } SHITEMID,*LPSHITEMID;
102 typedef struct
103 { SHITEMID mkid; /* first itemid in list */
104 } ITEMIDLIST,*LPITEMIDLIST,*LPCITEMIDLIST;
105 #pragma pack(4)
107 LPITEMIDLIST WINAPI ILClone (LPCITEMIDLIST pidl);
108 LPITEMIDLIST WINAPI ILGetNext(LPITEMIDLIST pidl);
109 LPITEMIDLIST WINAPI ILCombine(LPCITEMIDLIST iil1,LPCITEMIDLIST iil2);
110 LPITEMIDLIST WINAPI ILFindLastID(LPITEMIDLIST pidl);
111 DWORD WINAPI ILGetSize(LPITEMIDLIST pidl);
113 DWORD WINAPI SHGetPathFromIDList32A (LPCITEMIDLIST pidl,LPSTR pszPath);
114 DWORD WINAPI SHGetPathFromIDList32W (LPCITEMIDLIST pidl,LPWSTR pszPath);
115 #define SHGetPathFromIDList WINELIB_NAME_AW(SHGetPathFromIDList)
117 /****************************************************************************
118 * SHFILEINFO API
120 typedef struct tagSHFILEINFO32A {
121 HICON32 hIcon; /* icon */
122 int iIcon; /* icon index */
123 DWORD dwAttributes; /* SFGAO_ flags */
124 CHAR szDisplayName[MAX_PATH];/* display name (or path) */
125 CHAR szTypeName[80]; /* type name */
126 } SHFILEINFO32A;
128 typedef struct tagSHFILEINFO32W {
129 HICON32 hIcon; /* icon */
130 int iIcon; /* icon index */
131 DWORD dwAttributes; /* SFGAO_ flags */
132 WCHAR szDisplayName[MAX_PATH];/* display name (or path) */
133 WCHAR szTypeName[80]; /* type name */
134 } SHFILEINFO32W;
136 DECL_WINELIB_TYPE_AW(SHFILEINFO)
138 DWORD WINAPI SHGetFileInfo32A(LPCSTR,DWORD,SHFILEINFO32A*,UINT32,UINT32);
139 DWORD WINAPI SHGetFileInfo32W(LPCWSTR,DWORD,SHFILEINFO32W*,UINT32,UINT32);
140 #define SHGetFileInfo WINELIB_NAME_AW(SHGetFileInfo)
142 /****************************************************************************
143 * SHFILEOPSTRUCT API
145 typedef struct _SHFILEOPSTRUCTA
146 { HWND32 hwnd;
147 UINT32 wFunc;
148 LPCSTR pFrom;
149 LPCSTR pTo;
150 FILEOP_FLAGS fFlags;
151 BOOL32 fAnyOperationsAborted;
152 LPVOID hNameMappings;
153 LPCSTR lpszProgressTitle;
154 } SHFILEOPSTRUCT32A, *LPSHFILEOPSTRUCT32A;
156 typedef struct _SHFILEOPSTRUCTW
157 { HWND32 hwnd;
158 UINT32 wFunc;
159 LPCWSTR pFrom;
160 LPCWSTR pTo;
161 FILEOP_FLAGS fFlags;
162 BOOL32 fAnyOperationsAborted;
163 LPVOID hNameMappings;
164 LPCWSTR lpszProgressTitle;
165 } SHFILEOPSTRUCT32W, *LPSHFILEOPSTRUCT32W;
167 #define SHFILEOPSTRUCT WINELIB_NAME_AW(SHFILEOPSTRUCT)
168 #define LPSHFILEOPSTRUCT WINELIB_NAME_AW(LPSHFILEOPSTRUCT)
170 DWORD WINAPI SHFileOperation32A (LPSHFILEOPSTRUCT32A lpFileOp);
171 DWORD WINAPI SHFileOperation32W (LPSHFILEOPSTRUCT32W lpFileOp);
172 #define SHFileOperation WINELIB_NAME_AW(SHFileOperation)
174 DWORD WINAPI SHFileOperation32(DWORD x);
176 /****************************************************************************
177 * APPBARDATA
179 typedef struct _AppBarData {
180 DWORD cbSize;
181 HWND32 hWnd;
182 UINT32 uCallbackMessage;
183 UINT32 uEdge;
184 RECT32 rc;
185 LPARAM lParam;
186 } APPBARDATA, *PAPPBARDATA;
188 #define SHGFI_ICON 0x000000100 /* get icon */
189 #define SHGFI_DISPLAYNAME 0x000000200 /* get display name */
190 #define SHGFI_TYPENAME 0x000000400 /* get type name */
191 #define SHGFI_ATTRIBUTES 0x000000800 /* get attributes */
192 #define SHGFI_ICONLOCATION 0x000001000 /* get icon location */
193 #define SHGFI_EXETYPE 0x000002000 /* return exe type */
194 #define SHGFI_SYSICONINDEX 0x000004000 /* get system icon index */
195 #define SHGFI_LINKOVERLAY 0x000008000 /* put a link overlay on icon */
196 #define SHGFI_SELECTED 0x000010000 /* show icon in selected state */
197 #define SHGFI_LARGEICON 0x000000000 /* get large icon */
198 #define SHGFI_SMALLICON 0x000000001 /* get small icon */
199 #define SHGFI_OPENICON 0x000000002 /* get open icon */
200 #define SHGFI_SHELLICONSIZE 0x000000004 /* get shell size icon */
201 #define SHGFI_PIDL 0x000000008 /* pszPath is a pidl */
202 #define SHGFI_USEFILEATTRIBUTES 0x000000010 /* use passed dwFileAttribute */
204 /****************************************************************************
205 * SHChangeNotifyRegister API
207 typedef struct
208 { LPITEMIDLIST pidl;
209 DWORD unknown;
210 } IDSTRUCT;
212 DWORD WINAPI SHChangeNotifyRegister(HWND32 hwnd,LONG events1,LONG events2,DWORD msg,int count,IDSTRUCT *idlist);
213 DWORD WINAPI SHChangeNotifyDeregister(LONG x1,LONG x2);
215 /****************************************************************************
216 * SHAddToRecentDocs API
218 #define SHARD_PIDL 0x00000001L
219 #define SHARD_PATH 0x00000002L
221 DWORD WINAPI SHAddToRecentDocs(UINT32 uFlags, LPCVOID pv);
223 /****************************************************************************
224 * SHGetSpecialFolderLocation API
226 HRESULT WINAPI SHGetSpecialFolderLocation(HWND32, INT32, LPITEMIDLIST *);
227 /****************************************************************************
228 * string and path functions
230 LPSTR WINAPI PathAddBackslash(LPSTR path);
231 LPSTR WINAPI PathCombine(LPSTR szDest, LPCSTR lpszDir, LPCSTR lpszFile);
232 LPSTR WINAPI PathRemoveBlanks(LPSTR str);
233 LPSTR WINAPI PathFindFilename(LPSTR fn);
234 /****************************************************************************
235 * other functions
237 LPVOID WINAPI SHAlloc(DWORD len);
238 DWORD WINAPI SHFree(LPVOID x);
240 #define SE_ERR_SHARE 26
241 #define SE_ERR_ASSOCINCOMPLETE 27
242 #define SE_ERR_DDETIMEOUT 28
243 #define SE_ERR_DDEFAIL 29
244 #define SE_ERR_DDEBUSY 30
245 #define SE_ERR_NOASSOC 31
247 #define CSIDL_DESKTOP 0x0000
248 #define CSIDL_PROGRAMS 0x0002
249 #define CSIDL_CONTROLS 0x0003
250 #define CSIDL_PRINTERS 0x0004
251 #define CSIDL_PERSONAL 0x0005
252 #define CSIDL_FAVORITES 0x0006
253 #define CSIDL_STARTUP 0x0007
254 #define CSIDL_RECENT 0x0008
255 #define CSIDL_SENDTO 0x0009
256 #define CSIDL_BITBUCKET 0x000a
257 #define CSIDL_STARTMENU 0x000b
258 #define CSIDL_DESKTOPDIRECTORY 0x0010
259 #define CSIDL_DRIVES 0x0011
260 #define CSIDL_NETWORK 0x0012
261 #define CSIDL_NETHOOD 0x0013
262 #define CSIDL_FONTS 0x0014
263 #define CSIDL_TEMPLATES 0x0015
266 #endif /* __WINE_SHELL_H */