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