Added tracking support and fixed loading of resource strings.
[wine] / include / shell.h
1 /*
2  *                              Shell Library definitions
3  */
4 #ifndef __WINE_SHELL_H
5 #define __WINE_SHELL_H
6
7 #include "windows.h"
8 #include "winreg.h"
9 #include "imagelist.h"
10
11 #ifndef MAX_PATH
12 #define MAX_PATH 260
13 #endif
14
15 /****************************************************************************
16 * shell 16
17 */
18 extern void SHELL_LoadRegistry(void);
19 extern void SHELL_SaveRegistry(void);
20 extern void SHELL_Init(void);
21
22 /* global functions used from shell32 */
23 extern HINSTANCE32 SHELL_FindExecutable(LPCSTR,LPCSTR ,LPSTR);
24 extern HGLOBAL16 WINAPI InternalExtractIcon(HINSTANCE16,LPCSTR,UINT16,WORD);
25
26 /****************************************************************************
27 * shell 32
28 */
29 /****************************************************************************
30 * common return codes 
31 */
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
41
42 /****************************************************************************
43 * common shell file structures 
44 */
45 #define FO_MOVE           0x0001
46 #define FO_COPY           0x0002
47 #define FO_DELETE         0x0003
48 #define FO_RENAME         0x0004
49
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  
61
62 typedef WORD FILEOP_FLAGS;
63
64 #define PO_DELETE       0x0013  
65 #define PO_RENAME       0x0014  
66 #define PO_PORTCHANGE   0x0020  
67
68 typedef WORD PRINTEROP_FLAGS;
69
70 /******************************
71 * DROPFILESTRUCT
72 */
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; 
79
80 /****************************************************************************
81 * NOTIFYICONDATA 
82 */
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;
92
93 /****************************************************************************
94 * SHITEMID, ITEMIDLIST, PIDL API 
95 */
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;
101
102 typedef struct 
103 { SHITEMID mkid; /* first itemid in list */
104 } ITEMIDLIST,*LPITEMIDLIST,*LPCITEMIDLIST;
105 #pragma pack(4)
106
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);
112
113 DWORD WINAPI SHGetPathFromIDList32A (LPCITEMIDLIST pidl,LPSTR pszPath);
114 DWORD WINAPI SHGetPathFromIDList32W (LPCITEMIDLIST pidl,LPWSTR pszPath);
115 #define  SHGetPathFromIDList WINELIB_NAME_AW(SHGetPathFromIDList)
116
117 /****************************************************************************
118 * SHFILEINFO API 
119 */
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;
127
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;
135
136 DECL_WINELIB_TYPE_AW(SHFILEINFO)
137
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)
141
142 /****************************************************************************
143 * SHFILEOPSTRUCT API 
144 */
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;
155
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;
166
167 #define  SHFILEOPSTRUCT WINELIB_NAME_AW(SHFILEOPSTRUCT)
168 #define  LPSHFILEOPSTRUCT WINELIB_NAME_AW(LPSHFILEOPSTRUCT)
169
170 DWORD WINAPI SHFileOperation32(LPSHFILEOPSTRUCT32A lpFileOp);
171
172 /****************************************************************************
173 * APPBARDATA 
174 */
175 typedef struct _AppBarData {
176         DWORD   cbSize;
177         HWND32  hWnd;
178         UINT32  uCallbackMessage;
179         UINT32  uEdge;
180         RECT32  rc;
181         LPARAM  lParam;
182 } APPBARDATA, *PAPPBARDATA;
183
184 #define SHGFI_ICON              0x000000100     /* get icon */
185 #define SHGFI_DISPLAYNAME       0x000000200     /* get display name */
186 #define SHGFI_TYPENAME          0x000000400     /* get type name */
187 #define SHGFI_ATTRIBUTES        0x000000800     /* get attributes */
188 #define SHGFI_ICONLOCATION      0x000001000     /* get icon location */
189 #define SHGFI_EXETYPE           0x000002000     /* return exe type */
190 #define SHGFI_SYSICONINDEX      0x000004000     /* get system icon index */
191 #define SHGFI_LINKOVERLAY       0x000008000     /* put a link overlay on icon */
192 #define SHGFI_SELECTED          0x000010000     /* show icon in selected state */
193 #define SHGFI_LARGEICON         0x000000000     /* get large icon */
194 #define SHGFI_SMALLICON         0x000000001     /* get small icon */
195 #define SHGFI_OPENICON          0x000000002     /* get open icon */
196 #define SHGFI_SHELLICONSIZE     0x000000004     /* get shell size icon */
197 #define SHGFI_PIDL              0x000000008     /* pszPath is a pidl */
198 #define SHGFI_USEFILEATTRIBUTES 0x000000010     /* use passed dwFileAttribute */
199
200 /****************************************************************************
201 * SHChangeNotifyRegister API
202 */
203 typedef struct
204 { LPITEMIDLIST pidl;
205   DWORD unknown;
206 } IDSTRUCT;
207
208 DWORD WINAPI SHChangeNotifyRegister(HWND32 hwnd,LONG events1,LONG events2,DWORD msg,int count,IDSTRUCT *idlist);
209 DWORD WINAPI SHChangeNotifyDeregister(LONG x1,LONG x2);
210
211 /****************************************************************************
212 * SHAddToRecentDocs API
213 */
214 #define SHARD_PIDL      0x00000001L
215 #define SHARD_PATH      0x00000002L
216
217 DWORD WINAPI SHAddToRecentDocs(UINT32 uFlags, LPCVOID pv);
218
219 /****************************************************************************
220 * SHGetSpecialFolderLocation API
221 */
222 HRESULT WINAPI SHGetSpecialFolderLocation(HWND32, INT32, LPITEMIDLIST *);
223 /****************************************************************************
224 *  string and path functions
225 */
226 LPSTR WINAPI PathAddBackslash(LPSTR path);      
227 LPSTR WINAPI PathCombine(LPSTR szDest, LPCSTR lpszDir, LPCSTR lpszFile);
228 LPSTR WINAPI PathRemoveBlanks(LPSTR str);
229 LPSTR WINAPI PathFindFilename(LPSTR fn);
230 /****************************************************************************
231 *  other functions
232 */
233 LPVOID WINAPI SHAlloc(DWORD len);
234 DWORD WINAPI SHFree(LPVOID x);
235
236 #define SE_ERR_SHARE            26
237 #define SE_ERR_ASSOCINCOMPLETE  27
238 #define SE_ERR_DDETIMEOUT       28
239 #define SE_ERR_DDEFAIL          29
240 #define SE_ERR_DDEBUSY          30
241 #define SE_ERR_NOASSOC          31
242
243 #define CSIDL_DESKTOP           0x0000
244 #define CSIDL_PROGRAMS          0x0002
245 #define CSIDL_CONTROLS          0x0003
246 #define CSIDL_PRINTERS          0x0004
247 #define CSIDL_PERSONAL          0x0005
248 #define CSIDL_FAVORITES         0x0006
249 #define CSIDL_STARTUP           0x0007
250 #define CSIDL_RECENT            0x0008
251 #define CSIDL_SENDTO            0x0009
252 #define CSIDL_BITBUCKET         0x000a
253 #define CSIDL_STARTMENU         0x000b
254 #define CSIDL_DESKTOPDIRECTORY  0x0010
255 #define CSIDL_DRIVES            0x0011
256 #define CSIDL_NETWORK           0x0012
257 #define CSIDL_NETHOOD           0x0013
258 #define CSIDL_FONTS             0x0014
259 #define CSIDL_TEMPLATES         0x0015
260
261
262 #endif  /* __WINE_SHELL_H */