Reentrant libc check for Solaris added.
[wine] / include / shell.h
1 /*
2  *                              Shell Library definitions
3  */
4 #ifndef __WINE_SHELL_H
5 #define __WINE_SHELL_H
6
7 #include "windef.h"
8
9
10 /****************************************************************************
11 * shell 16
12 */
13 extern void SHELL_LoadRegistry(void);
14 extern void SHELL_SaveRegistry(void);
15 extern void SHELL_Init(void);
16
17 /* global functions used from shell32 */
18 extern HINSTANCE SHELL_FindExecutable(LPCSTR,LPCSTR ,LPSTR);
19 extern HGLOBAL16 WINAPI InternalExtractIcon16(HINSTANCE16,LPCSTR,UINT16,WORD);
20
21 /****************************************************************************
22 * shell 32
23 */
24 /****************************************************************************
25 * common return codes 
26 */
27 #define SHELL_ERROR_SUCCESS           0L
28 #define SHELL_ERROR_BADDB             1L
29 #define SHELL_ERROR_BADKEY            2L
30 #define SHELL_ERROR_CANTOPEN          3L
31 #define SHELL_ERROR_CANTREAD          4L
32 #define SHELL_ERROR_CANTWRITE         5L
33 #define SHELL_ERROR_OUTOFMEMORY       6L
34 #define SHELL_ERROR_INVALID_PARAMETER 7L
35 #define SHELL_ERROR_ACCESS_DENIED     8L
36
37 /****************************************************************************
38 * common shell file structures 
39 */
40 #define FO_MOVE           0x0001
41 #define FO_COPY           0x0002
42 #define FO_DELETE         0x0003
43 #define FO_RENAME         0x0004
44
45 #define FOF_MULTIDESTFILES         0x0001
46 #define FOF_CONFIRMMOUSE           0x0002
47 #define FOF_SILENT                 0x0004  
48 #define FOF_RENAMEONCOLLISION      0x0008
49 #define FOF_NOCONFIRMATION         0x0010  
50 #define FOF_WANTMAPPINGHANDLE      0x0020  
51 #define FOF_ALLOWUNDO              0x0040
52 #define FOF_FILESONLY              0x0080  
53 #define FOF_SIMPLEPROGRESS         0x0100  
54 #define FOF_NOCONFIRMMKDIR         0x0200  
55 #define FOF_NOERRORUI              0x0400  
56
57 typedef WORD FILEOP_FLAGS;
58
59 #define PO_DELETE       0x0013  
60 #define PO_RENAME       0x0014  
61 #define PO_PORTCHANGE   0x0020  
62
63 typedef WORD PRINTEROP_FLAGS;
64
65 /******************************
66 * DRAG&DROP API
67 */
68 typedef struct {           /* structure for dropped files */ 
69         WORD            wSize;
70         POINT16         ptMousePos;   
71         BOOL16          fInNonClientArea;
72         /* memory block with filenames follows */     
73 } DROPFILESTRUCT16, *LPDROPFILESTRUCT16; 
74
75 typedef struct {           /* structure for dropped files */ 
76         DWORD           lSize;
77         POINT           ptMousePos;   
78         BOOL            fInNonClientArea;
79         BOOL          fWideChar;
80         /* memory block with filenames follows */     
81 } DROPFILESTRUCT, *LPDROPFILESTRUCT; 
82
83
84 void        WINAPI DragAcceptFiles16(HWND16 hWnd, BOOL16 b);
85 void        WINAPI DragAcceptFiles(HWND hWnd, BOOL b);
86 UINT16      WINAPI DragQueryFile16(HDROP16 hDrop, WORD wFile, LPSTR lpszFile, WORD wLength);
87 UINT      WINAPI DragQueryFileA(HDROP hDrop, UINT lFile, LPSTR lpszFile, UINT lLength);
88 UINT      WINAPI DragQueryFileW(HDROP hDrop, UINT lFile, LPWSTR lpszFile, UINT lLength);
89 #define     DragQueryFile WINELIB_NAME_AW(DragQueryFile)
90 void        WINAPI DragFinish(HDROP h);
91 void        WINAPI DragFinish16(HDROP16 h);
92 BOOL      WINAPI DragQueryPoint(HDROP hDrop, POINT *p);
93 BOOL16      WINAPI DragQueryPoint16(HDROP16 hDrop, POINT16 *p);
94
95
96 /****************************************************************************
97 * NOTIFYICONDATA 
98 */
99 typedef struct _NOTIFYICONDATA {
100         DWORD cbSize;
101         HWND hWnd;
102         UINT uID;
103         UINT uFlags;
104         UINT uCallbackMessage;
105         HICON hIcon;
106         CHAR szTip[64];
107 } NOTIFYICONDATA, *PNOTIFYICONDATA;
108
109 /****************************************************************************
110 * SHITEMID, ITEMIDLIST, PIDL API 
111 */
112 #pragma pack(1)
113 typedef struct 
114 { WORD  cb;     /* nr of bytes in this item */
115   BYTE  abID[1];/* first byte in this item */
116 } SHITEMID,*LPSHITEMID;
117
118 typedef struct 
119 { SHITEMID mkid; /* first itemid in list */
120 } ITEMIDLIST,*LPITEMIDLIST,*LPCITEMIDLIST;
121 #pragma pack(4)
122
123 DWORD WINAPI SHGetPathFromIDListA (LPCITEMIDLIST pidl,LPSTR pszPath);
124 DWORD WINAPI SHGetPathFromIDListW (LPCITEMIDLIST pidl,LPWSTR pszPath);
125 #define  SHGetPathFromIDList WINELIB_NAME_AW(SHGetPathFromIDList)
126
127 /****************************************************************************
128 * SHFILEINFO API 
129 */
130 typedef struct tagSHFILEINFOA {
131         HICON   hIcon;                  /* icon */
132         int     iIcon;                  /* icon index */
133         DWORD   dwAttributes;           /* SFGAO_ flags */
134         CHAR    szDisplayName[MAX_PATH];/* display name (or path) */
135         CHAR    szTypeName[80];         /* type name */
136 } SHFILEINFOA;
137
138 typedef struct tagSHFILEINFOW {
139         HICON   hIcon;                  /* icon */
140         int     iIcon;                  /* icon index */
141         DWORD   dwAttributes;           /* SFGAO_ flags */
142         WCHAR   szDisplayName[MAX_PATH];/* display name (or path) */
143         WCHAR   szTypeName[80];         /* type name */
144 } SHFILEINFOW;
145
146 DECL_WINELIB_TYPE_AW(SHFILEINFO)
147
148 DWORD    WINAPI SHGetFileInfoA(LPCSTR,DWORD,SHFILEINFOA*,UINT,UINT);
149 DWORD    WINAPI SHGetFileInfoW(LPCWSTR,DWORD,SHFILEINFOW*,UINT,UINT);
150 #define  SHGetFileInfo WINELIB_NAME_AW(SHGetFileInfo)
151
152 /****************************************************************************
153 * SHFILEOPSTRUCT API 
154 */
155 typedef struct _SHFILEOPSTRUCTA
156 { HWND          hwnd;
157   UINT          wFunc;
158   LPCSTR          pFrom;
159   LPCSTR          pTo;
160   FILEOP_FLAGS    fFlags;
161   BOOL          fAnyOperationsAborted;
162   LPVOID          hNameMappings;
163   LPCSTR          lpszProgressTitle;
164 } SHFILEOPSTRUCTA, *LPSHFILEOPSTRUCTA;
165
166 typedef struct _SHFILEOPSTRUCTW
167 { HWND          hwnd;
168   UINT          wFunc;
169   LPCWSTR         pFrom;
170   LPCWSTR         pTo;
171   FILEOP_FLAGS    fFlags;
172   BOOL          fAnyOperationsAborted;
173   LPVOID          hNameMappings;
174   LPCWSTR         lpszProgressTitle;
175 } SHFILEOPSTRUCTW, *LPSHFILEOPSTRUCTW;
176
177 #define  SHFILEOPSTRUCT WINELIB_NAME_AW(SHFILEOPSTRUCT)
178 #define  LPSHFILEOPSTRUCT WINELIB_NAME_AW(LPSHFILEOPSTRUCT)
179
180 DWORD WINAPI SHFileOperationA (LPSHFILEOPSTRUCTA lpFileOp);  
181 DWORD WINAPI SHFileOperationW (LPSHFILEOPSTRUCTW lpFileOp);
182 #define  SHFileOperation WINELIB_NAME_AW(SHFileOperation)
183
184 DWORD WINAPI SHFileOperationAW(DWORD x);
185
186 /****************************************************************************
187 * APPBARDATA 
188 */
189 typedef struct _AppBarData {
190         DWORD   cbSize;
191         HWND    hWnd;
192         UINT    uCallbackMessage;
193         UINT    uEdge;
194         RECT    rc;
195         LPARAM  lParam;
196 } APPBARDATA, *PAPPBARDATA;
197
198 #define SHGFI_LARGEICON         0x000000000     /* get large icon */
199 #define SHGFI_SMALLICON         0x000000001     /* get small icon */
200 #define SHGFI_OPENICON          0x000000002     /* get open icon */
201 #define SHGFI_SHELLICONSIZE     0x000000004     /* get shell size icon */
202 #define SHGFI_PIDL              0x000000008     /* pszPath is a pidl */
203 #define SHGFI_USEFILEATTRIBUTES 0x000000010     /* use passed dwFileAttribute */
204 #define SHGFI_UNKNOWN1          0x000000020
205 #define SHGFI_UNKNOWN2          0x000000040
206 #define SHGFI_UNKNOWN3          0x000000080
207 #define SHGFI_ICON              0x000000100     /* get icon */
208 #define SHGFI_DISPLAYNAME       0x000000200     /* get display name */
209 #define SHGFI_TYPENAME          0x000000400     /* get type name */
210 #define SHGFI_ATTRIBUTES        0x000000800     /* get attributes */
211 #define SHGFI_ICONLOCATION      0x000001000     /* get icon location */
212 #define SHGFI_EXETYPE           0x000002000     /* return exe type */
213 #define SHGFI_SYSICONINDEX      0x000004000     /* get system icon index */
214 #define SHGFI_LINKOVERLAY       0x000008000     /* put a link overlay on icon */
215 #define SHGFI_SELECTED          0x000010000     /* show icon in selected state */
216 #define SHGFI_ATTR_SPECIFIED    0x000020000     /* get only specified attributes */
217
218 /****************************************************************************
219 * SHChangeNotifyRegister API
220 */
221 typedef struct
222 { LPITEMIDLIST pidl;
223   DWORD unknown;
224 } IDSTRUCT;
225
226 DWORD WINAPI SHChangeNotifyRegister(HWND hwnd,LONG events1,LONG events2,DWORD msg,int count,IDSTRUCT *idlist);
227 DWORD WINAPI SHChangeNotifyDeregister(LONG x1);
228
229 /****************************************************************************
230 * SHAddToRecentDocs API
231 */
232 #define SHARD_PIDL      0x00000001L
233 #define SHARD_PATH      0x00000002L
234
235 DWORD WINAPI SHAddToRecentDocs(UINT uFlags, LPCVOID pv);
236
237 /****************************************************************************
238 * SHGetSpecialFolderLocation API
239 */
240 HRESULT WINAPI SHGetSpecialFolderLocation(HWND, INT, LPITEMIDLIST *);
241 /****************************************************************************
242 *  string and path functions
243 */
244 BOOL WINAPI PathIsRootA(LPCSTR x);
245 BOOL WINAPI PathIsRootW(LPCWSTR x);
246 #define  PathIsRoot WINELIB_NAME_AW(PathIsRoot)
247 BOOL WINAPI PathIsRootAW(LPCVOID x);
248
249 LPSTR  WINAPI PathAddBackslashA(LPSTR path);    
250 LPWSTR WINAPI PathAddBackslashW(LPWSTR path);   
251 #define  PathAddBackslash WINELIB_NAME_AW(PathAddBackslash)
252 LPVOID  WINAPI PathAddBackslashAW(LPVOID path); 
253
254 BOOL  WINAPI PathQualifyA(LPCSTR path); 
255 BOOL WINAPI PathQualifyW(LPCWSTR path); 
256 #define  PathQualify WINELIB_NAME_AW(PathQualify)
257 BOOL  WINAPI PathQualifyAW(LPCVOID path);       
258
259 LPSTR  WINAPI PathQuoteSpacesA(LPCSTR path);    
260 LPWSTR WINAPI PathQuoteSpacesW(LPCWSTR path);   
261 #define  PathQuoteSpaces WINELIB_NAME_AW(PathQuoteSpaces)
262 LPVOID  WINAPI PathQuoteSpacesAW(LPCVOID path); 
263
264 LPSTR  WINAPI PathCombineA(LPSTR szDest, LPCSTR lpszDir, LPCSTR lpszFile);
265 LPWSTR WINAPI PathCombineW(LPWSTR szDest, LPCWSTR lpszDir, LPCWSTR lpszFile);
266 #define  PathCombine WINELIB_NAME_AW(PathCombine)
267 LPVOID WINAPI PathCombineAW(LPVOID szDest, LPCVOID lpszDir, LPCVOID lpszFile);
268
269 LPCSTR WINAPI PathFindExtensionA(LPCSTR path);
270 LPCWSTR WINAPI PathFindExtensionW(LPCWSTR path);
271 #define  PathFindExtension WINELIB_NAME_AW(PathFindExtension)
272 LPCVOID WINAPI PathFindExtensionAW(LPCVOID path); 
273
274 LPCSTR WINAPI PathGetExtensionA(LPCSTR path, DWORD y, DWORD x);
275 LPCWSTR WINAPI PathGetExtensionW(LPCWSTR path, DWORD y, DWORD x);
276 #define  PathGetExtension WINELIB_NAME_AW(PathGetExtension)
277 LPCVOID WINAPI PathGetExtensionAW(LPCVOID path, DWORD y, DWORD x); 
278
279 LPCSTR WINAPI PathFindFilenameA(LPCSTR path);
280 LPCWSTR WINAPI PathFindFilenameW(LPCWSTR path);
281 #define  PathFindFilename WINELIB_NAME_AW(PathFindFilename)
282 LPCVOID WINAPI PathFindFilenameAW(LPCVOID path); 
283
284 BOOL WINAPI PathMatchSpecA(LPCSTR x, LPCSTR y);
285 BOOL WINAPI PathMatchSpecW(LPCWSTR x, LPCWSTR y);
286 #define  PathMatchSpec WINELIB_NAME_AW(PathMatchSpec)
287 BOOL WINAPI PathMatchSpecAW(LPVOID x, LPVOID y);
288
289 LPSTR WINAPI PathRemoveBlanksA(LPSTR str);
290 LPWSTR WINAPI PathRemoveBlanksW(LPWSTR str);
291 #define  PathRemoveBlanks WINELIB_NAME_AW(PathRemoveBlanks)
292 LPVOID WINAPI PathRemoveBlanksAW(LPVOID str);
293
294 BOOL WINAPI PathIsRelativeA(LPCSTR str);
295 BOOL WINAPI PathIsRelativeW(LPCWSTR str);
296 #define  PathIsRelative WINELIB_NAME_AW(PathIsRelative)
297 BOOL WINAPI PathIsRelativeAW(LPCVOID str);
298
299 BOOL WINAPI PathIsUNCA(LPCSTR str);
300 BOOL WINAPI PathIsUNCW(LPCWSTR str);
301 #define  PathIsUNC WINELIB_NAME_AW(PathIsUNC)
302 BOOL WINAPI PathIsUNCAW(LPCVOID str);
303
304 BOOL WINAPI PathFindOnPathA(LPSTR sFile, LPCSTR sOtherDirs);
305 BOOL WINAPI PathFindOnPathW(LPWSTR sFile, LPCWSTR sOtherDirs);
306 #define PathFindOnPath WINELIB_NAME_AW(PathFindOnPath)
307 BOOL WINAPI PathFindOnPathAW(LPVOID sFile, LPCVOID sOtherDirs);
308
309 LPSTR WINAPI StrFormatByteSizeA ( DWORD dw, LPSTR pszBuf, UINT cchBuf );
310 LPWSTR WINAPI StrFormatByteSizeW ( DWORD dw, LPWSTR pszBuf, UINT cchBuf );
311 #define  StrFormatByteSize WINELIB_NAME_AW(StrFormatByteSize)
312
313 /****************************************************************************
314 *  other functions
315 */
316 HICON16 WINAPI ExtractIconEx16 ( LPCSTR, INT16, HICON16 *, HICON16 *, UINT16 );
317 HICON WINAPI ExtractIconExA( LPCSTR, INT, HICON *, HICON *, UINT );
318 HICON WINAPI ExtractIconExW( LPCWSTR, INT, HICON *, HICON *, UINT );
319 #define  ExtractIconEx WINELIB_NAME_AW(ExtractIconEx)
320 HICON WINAPI ExtractIconExAW(LPCVOID, INT, HICON *, HICON *, UINT );
321
322 LPVOID WINAPI SHAlloc(DWORD len);
323 DWORD WINAPI SHFree(LPVOID x);
324
325 #define SE_ERR_SHARE            26
326 #define SE_ERR_ASSOCINCOMPLETE  27
327 #define SE_ERR_DDETIMEOUT       28
328 #define SE_ERR_DDEFAIL          29
329 #define SE_ERR_DDEBUSY          30
330 #define SE_ERR_NOASSOC          31
331
332 #define CSIDL_DESKTOP           0x0000
333 #define CSIDL_PROGRAMS          0x0002
334 #define CSIDL_CONTROLS          0x0003
335 #define CSIDL_PRINTERS          0x0004
336 #define CSIDL_PERSONAL          0x0005
337 #define CSIDL_FAVORITES         0x0006
338 #define CSIDL_STARTUP           0x0007
339 #define CSIDL_RECENT            0x0008
340 #define CSIDL_SENDTO            0x0009
341 #define CSIDL_BITBUCKET         0x000a
342 #define CSIDL_STARTMENU         0x000b
343 #define CSIDL_DESKTOPDIRECTORY  0x0010
344 #define CSIDL_DRIVES            0x0011
345 #define CSIDL_NETWORK           0x0012
346 #define CSIDL_NETHOOD           0x0013
347 #define CSIDL_FONTS             0x0014
348 #define CSIDL_TEMPLATES         0x0015
349 #define CSIDL_COMMON_STARTMENU  0x0016
350 #define CSIDL_COMMON_PROGRAMS   0X0017
351 #define CSIDL_COMMON_STARTUP    0x0018
352 #define CSIDL_COMMON_DESKTOPDIRECTORY   0x0019
353 #define CSIDL_APPDATA           0x001a
354 #define CSIDL_PRINTHOOD         0x001b
355 #define CSIDL_ALTSTARTUP        0x001d
356 #define CSIDL_COMMON_ALTSTARTUP 0x001e
357 #define CSIDL_COMMON_FAVORITES  0x001f
358 #define CSIDL_INTERNET_CACHE    0x0020
359 #define CSIDL_COOKIES           0x0021
360 #define CSIDL_HISTORY           0x0022
361
362 #endif  /* __WINE_SHELL_H */