Fix the case of product and company names.
[wine] / include / shlobj.h
1 /*
2  * Copyright (C) the Wine project
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2.1 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with this library; if not, write to the Free Software
16  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
17  */
18
19 #ifndef __WINE_SHLOBJ_H
20 #define __WINE_SHLOBJ_H
21
22 #include <ole2.h>
23 #include <commctrl.h>
24 #include <prsht.h>
25 #include <shlguid.h>
26
27 #ifdef __cplusplus
28 extern "C" {
29 #endif /* defined(__cplusplus) */
30
31 #include <pshpack1.h>
32
33 #include <shtypes.h>
34 #include <shobjidl.h>
35
36
37 BOOL WINAPI SHGetPathFromIDListA (LPCITEMIDLIST pidl,LPSTR pszPath);
38 BOOL WINAPI SHGetPathFromIDListW (LPCITEMIDLIST pidl,LPWSTR pszPath);
39 #define     SHGetPathFromIDList WINELIB_NAME_AW(SHGetPathFromIDList)
40
41
42 #include <wine/obj_shellfolder.h>
43 #include <wine/obj_contextmenu.h>
44 #include <wine/obj_extracticon.h>
45 #include <wine/obj_commdlgbrowser.h>
46 #include <wine/obj_dockingwindowframe.h>
47 #include <wine/obj_dragdrophelper.h>
48
49 /*****************************************************************************
50  * Predeclare interfaces
51  */
52 typedef struct IShellIcon IShellIcon, *LPSHELLICON;
53
54
55 /*****************************************************************************
56  * IContextMenu interface
57  */
58
59
60 /* DATAOBJECT_InitShellIDList*/
61 #define CFSTR_SHELLIDLIST       "Shell IDList Array"      /* CF_IDLIST */
62
63 extern UINT cfShellIDList;
64
65 typedef struct
66 {       UINT cidl;
67         UINT aoffset[1];
68 } CIDA, *LPIDA;
69
70 #define CFSTR_SHELLIDLISTOFFSET "Shell Object Offsets"    /* CF_OBJECTPOSITIONS */
71 #define CFSTR_NETRESOURCES      "Net Resource"            /* CF_NETRESOURCE */
72
73 /* DATAOBJECT_InitFileGroupDesc */
74 #define CFSTR_FILEDESCRIPTORA   "FileGroupDescriptor"     /* CF_FILEGROUPDESCRIPTORA */
75 extern UINT cfFileGroupDesc;
76
77 #define CFSTR_FILEDESCRIPTORW   "FileGroupDescriptorW"    /* CF_FILEGROUPDESCRIPTORW */
78
79 /* DATAOBJECT_InitFileContents*/
80 #define CFSTR_FILECONTENTS      "FileContents"            /* CF_FILECONTENTS */
81 extern UINT cfFileContents;
82
83 #define CFSTR_FILENAMEA         "FileName"                /* CF_FILENAMEA */
84 #define CFSTR_FILENAMEW         "FileNameW"               /* CF_FILENAMEW */
85 #define CFSTR_PRINTERGROUP      "PrinterFriendlyName"     /* CF_PRINTERS */
86 #define CFSTR_FILENAMEMAPA      "FileNameMap"             /* CF_FILENAMEMAPA */
87 #define CFSTR_FILENAMEMAPW      "FileNameMapW"            /* CF_FILENAMEMAPW */
88 #define CFSTR_SHELLURL          "UniformResourceLocator"
89 #define CFSTR_PREFERREDDROPEFFECT "Preferred DropEffect"
90 #define CFSTR_PERFORMEDDROPEFFECT "Performed DropEffect"
91 #define CFSTR_PASTESUCCEEDED    "Paste Succeeded"
92 #define CFSTR_INDRAGLOOP        "InShellDragLoop"
93
94 #define CFSTR_FILENAME WINELIB_NAME_AW(CFSTR_FILENAME)
95
96
97 /************************************************************************
98 * IShellView interface
99 */
100
101 typedef GUID SHELLVIEWID;
102 #define SV_CLASS_NAME   ("SHELLDLL_DefView")
103
104 #define FCIDM_SHVIEWFIRST       0x0000
105 /* undocumented */
106 #define FCIDM_SHVIEW_ARRANGE    0x7001
107 #define FCIDM_SHVIEW_DELETE     0x7011
108 #define FCIDM_SHVIEW_PROPERTIES 0x7013
109 #define FCIDM_SHVIEW_CUT        0x7018
110 #define FCIDM_SHVIEW_COPY       0x7019
111 #define FCIDM_SHVIEW_INSERT     0x701A
112 #define FCIDM_SHVIEW_UNDO       0x701B
113 #define FCIDM_SHVIEW_INSERTLINK 0x701C
114 #define FCIDM_SHVIEW_SELECTALL  0x7021
115 #define FCIDM_SHVIEW_INVERTSELECTION 0x7022
116
117 #define FCIDM_SHVIEW_BIGICON    0x7029
118 #define FCIDM_SHVIEW_SMALLICON  0x702A
119 #define FCIDM_SHVIEW_LISTVIEW   0x702B
120 #define FCIDM_SHVIEW_REPORTVIEW 0x702C
121 /* 0x7030-0x703f are used by the shellbrowser */
122 #define FCIDM_SHVIEW_AUTOARRANGE 0x7031
123 #define FCIDM_SHVIEW_SNAPTOGRID 0x7032
124
125 #define FCIDM_SHVIEW_HELP       0x7041
126 #define FCIDM_SHVIEW_RENAME     0x7050
127 #define FCIDM_SHVIEW_CREATELINK 0x7051
128 #define FCIDM_SHVIEW_NEWLINK    0x7052
129 #define FCIDM_SHVIEW_NEWFOLDER  0x7053
130
131 #define FCIDM_SHVIEW_REFRESH    0x7100 /* FIXME */
132 #define FCIDM_SHVIEW_EXPLORE    0x7101 /* FIXME */
133 #define FCIDM_SHVIEW_OPEN       0x7102 /* FIXME */
134
135 #define FCIDM_SHVIEWLAST        0x7fff
136 #define FCIDM_BROWSERFIRST      0xA000
137 /* undocumented toolbar items from stddlg's*/
138 #define FCIDM_TB_UPFOLDER       0xA001
139 #define FCIDM_TB_NEWFOLDER      0xA002
140 #define FCIDM_TB_SMALLICON      0xA003
141 #define FCIDM_TB_REPORTVIEW     0xA004
142 #define FCIDM_TB_DESKTOP        0xA005  /* FIXME */
143
144 #define FCIDM_BROWSERLAST       0xbf00
145 #define FCIDM_GLOBALFIRST       0x8000
146 #define FCIDM_GLOBALLAST        0x9fff
147
148 /*
149 * Global submenu IDs and separator IDs
150 */
151 #define FCIDM_MENU_FILE             (FCIDM_GLOBALFIRST+0x0000)
152 #define FCIDM_MENU_EDIT             (FCIDM_GLOBALFIRST+0x0040)
153 #define FCIDM_MENU_VIEW             (FCIDM_GLOBALFIRST+0x0080)
154 #define FCIDM_MENU_VIEW_SEP_OPTIONS (FCIDM_GLOBALFIRST+0x0081)
155 #define FCIDM_MENU_TOOLS            (FCIDM_GLOBALFIRST+0x00c0)
156 #define FCIDM_MENU_TOOLS_SEP_GOTO   (FCIDM_GLOBALFIRST+0x00c1)
157 #define FCIDM_MENU_HELP             (FCIDM_GLOBALFIRST+0x0100)
158 #define FCIDM_MENU_FIND             (FCIDM_GLOBALFIRST+0x0140)
159 #define FCIDM_MENU_EXPLORE          (FCIDM_GLOBALFIRST+0x0150)
160 #define FCIDM_MENU_FAVORITES        (FCIDM_GLOBALFIRST+0x0170)
161
162 /* control IDs known to the view */
163 #define FCIDM_TOOLBAR      (FCIDM_BROWSERFIRST + 0)
164 #define FCIDM_STATUS       (FCIDM_BROWSERFIRST + 1)
165
166
167 /****************************************************************************
168  * IShellIcon interface
169  */
170
171 #define INTERFACE IShellIcon
172 #define IShellIcon_METHODS \
173     IUnknown_METHODS \
174     STDMETHOD(GetIconOf)(THIS_ LPCITEMIDLIST pidl, UINT flags, LPINT lpIconIndex) PURE;
175 ICOM_DEFINE(IShellIcon, IUnknown)
176 #undef INTERFACE
177
178 #ifdef COBJMACROS
179 /*** IUnknown methods ***/
180 #define IShellIcon_QueryInterface(p,a,b)      (p)->lpVtbl->QueryInterface(p,a,b)
181 #define IShellIcon_AddRef(p)                  (p)->lpVtbl->AddRef(p)
182 #define IShellIcon_Release(p)                 (p)->lpVtbl->Release(p)
183 /*** IShellIcon methods ***/
184 #define IShellIcon_GetIconOf(p,a,b,c)         (p)->lpVtbl->GetIconOf(p,a,b,c)
185 #endif
186
187 /****************************************************************************
188 * SHAddToRecentDocs API
189 */
190 #define SHARD_PIDL      0x00000001L
191 #define SHARD_PATHA     0x00000002L
192 #define SHARD_PATHW     0x00000003L
193 #define SHARD_PATH WINELIB_NAME_AW(SHARD_PATH)
194
195 DWORD WINAPI SHAddToRecentDocs(UINT uFlags, LPCVOID pv);
196
197 /****************************************************************************
198  * Shell Execute API
199  */
200 #define SE_ERR_FNF              2       /* file not found */
201 #define SE_ERR_PNF              3       /* path not found */
202 #define SE_ERR_ACCESSDENIED     5       /* access denied */
203 #define SE_ERR_OOM              8       /* out of memory */
204 #define SE_ERR_DLLNOTFOUND      32
205 #define SE_ERR_SHARE                    26
206 #define SE_ERR_ASSOCINCOMPLETE          27
207 #define SE_ERR_DDETIMEOUT               28
208 #define SE_ERR_DDEFAIL                  29
209 #define SE_ERR_DDEBUSY                  30
210 #define SE_ERR_NOASSOC                  31
211
212 #define SEE_MASK_CLASSNAME        0x00000001
213 #define SEE_MASK_CLASSKEY         0x00000003
214 #define SEE_MASK_IDLIST           0x00000004
215 #define SEE_MASK_INVOKEIDLIST     0x0000000c
216 #define SEE_MASK_ICON             0x00000010
217 #define SEE_MASK_HOTKEY           0x00000020
218 #define SEE_MASK_NOCLOSEPROCESS   0x00000040
219 #define SEE_MASK_CONNECTNETDRV    0x00000080
220 #define SEE_MASK_FLAG_DDEWAIT     0x00000100
221 #define SEE_MASK_DOENVSUBST       0x00000200
222 #define SEE_MASK_FLAG_NO_UI       0x00000400
223 #define SEE_MASK_UNICODE          0x00004000
224 #define SEE_MASK_NO_CONSOLE       0x00008000
225 #define SEE_MASK_ASYNCOK          0x00100000
226 #define SEE_MASK_HMONITOR         0x00200000
227
228 typedef struct _SHELLEXECUTEINFOA
229 {       DWORD cbSize;
230         ULONG fMask;
231         HWND hwnd;
232         LPCSTR   lpVerb;
233         LPCSTR   lpFile;
234         LPCSTR   lpParameters;
235         LPCSTR   lpDirectory;
236        INT nShow;
237         HINSTANCE hInstApp;
238         /* Optional fields */
239         LPVOID lpIDList;
240         LPCSTR   lpClass;
241         HKEY hkeyClass;
242         DWORD dwHotKey;
243         union
244         { HANDLE hIcon;
245           HANDLE hMonitor;
246         } DUMMYUNIONNAME;
247         HANDLE hProcess;
248 } SHELLEXECUTEINFOA, *LPSHELLEXECUTEINFOA;
249
250 typedef struct _SHELLEXECUTEINFOW
251 {       DWORD cbSize;
252         ULONG fMask;
253         HWND hwnd;
254         LPCWSTR  lpVerb;
255         LPCWSTR  lpFile;
256         LPCWSTR  lpParameters;
257         LPCWSTR  lpDirectory;
258        INT nShow;
259         HINSTANCE hInstApp;
260         /* Optional fields*/
261         LPVOID lpIDList;
262         LPCWSTR  lpClass;
263         HKEY hkeyClass;
264         DWORD dwHotKey;
265         union
266         { HANDLE hIcon;
267           HANDLE hMonitor;
268         } DUMMYUNIONNAME;
269         HANDLE hProcess;
270 } SHELLEXECUTEINFOW, *LPSHELLEXECUTEINFOW;
271
272 #define SHELLEXECUTEINFO   WINELIB_NAME_AW(SHELLEXECUTEINFO)
273 #define LPSHELLEXECUTEINFO WINELIB_NAME_AW(LPSHELLEXECUTEINFO)
274
275 BOOL WINAPI ShellExecuteExA(LPSHELLEXECUTEINFOA lpExecInfo);
276 BOOL WINAPI ShellExecuteExW(LPSHELLEXECUTEINFOW lpExecInfo);
277 #define ShellExecuteEx  WINELIB_NAME_AW(ShellExecuteEx)
278
279 void WINAPI WinExecErrorA(HWND hwnd,INT error, LPCSTR lpstrFileName, LPCSTR lpstrTitle);
280 void WINAPI WinExecErrorW(HWND hwnd,INT error, LPCWSTR lpstrFileName, LPCWSTR lpstrTitle);
281 #define WinExecError  WINELIB_NAME_AW(WinExecError)
282
283
284
285 /****************************************************************************
286  * SHBrowseForFolder API
287  */
288 typedef INT (CALLBACK *BFFCALLBACK)(HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData);
289
290 typedef struct tagBROWSEINFOA {
291     HWND        hwndOwner;
292     LPCITEMIDLIST pidlRoot;
293     LPSTR         pszDisplayName;
294     LPCSTR        lpszTitle;
295     UINT        ulFlags;
296     BFFCALLBACK   lpfn;
297     LPARAM        lParam;
298     INT         iImage;
299 } BROWSEINFOA, *PBROWSEINFOA, *LPBROWSEINFOA;
300
301 typedef struct tagBROWSEINFOW {
302     HWND        hwndOwner;
303     LPCITEMIDLIST pidlRoot;
304     LPWSTR        pszDisplayName;
305     LPCWSTR       lpszTitle;
306     UINT        ulFlags;
307     BFFCALLBACK   lpfn;
308     LPARAM        lParam;
309     INT         iImage;
310 } BROWSEINFOW, *PBROWSEINFOW, *LPBROWSEINFOW;
311
312 #define BROWSEINFO   WINELIB_NAME_AW(BROWSEINFO)
313 #define PBROWSEINFO  WINELIB_NAME_AW(PBROWSEINFO)
314 #define LPBROWSEINFO WINELIB_NAME_AW(LPBROWSEINFO)
315
316 /* Browsing for directory. */
317 #define BIF_RETURNONLYFSDIRS   0x0001
318 #define BIF_DONTGOBELOWDOMAIN  0x0002
319 #define BIF_STATUSTEXT         0x0004
320 #define BIF_RETURNFSANCESTORS  0x0008
321 #define BIF_EDITBOX            0x0010
322 #define BIF_VALIDATE           0x0020
323 #define BIF_NEWDIALOGSTYLE     0x0040   
324
325 #define BIF_BROWSEFORCOMPUTER  0x1000
326 #define BIF_BROWSEFORPRINTER   0x2000
327 #define BIF_BROWSEINCLUDEFILES 0x4000
328
329 /* message from browser */
330 #define BFFM_INITIALIZED        1
331 #define BFFM_SELCHANGED         2
332 #define BFFM_VALIDATEFAILEDA    3   /* lParam:szPath ret:1(cont),0(EndDialog) */
333 #define BFFM_VALIDATEFAILEDW    4   /* lParam:wzPath ret:1(cont),0(EndDialog) */
334
335 /* messages to browser */
336 #define BFFM_SETSTATUSTEXTA     (WM_USER+100)
337 #define BFFM_ENABLEOK           (WM_USER+101)
338 #define BFFM_SETSELECTIONA      (WM_USER+102)
339 #define BFFM_SETSELECTIONW      (WM_USER+103)
340 #define BFFM_SETSTATUSTEXTW     (WM_USER+104)
341 #define BFFM_SETOKTEXT          (WM_USER+105)
342 #define BFFM_SETEXPANDED        (WM_USER+106)
343
344 LPITEMIDLIST WINAPI SHBrowseForFolderA(LPBROWSEINFOA lpbi);
345 LPITEMIDLIST WINAPI SHBrowseForFolderW(LPBROWSEINFOW lpbi);
346 #define SHBrowseForFolder        WINELIB_NAME_AW(SHBrowseForFolder)
347 #define BFFM_SETSTATUSTEXT  WINELIB_NAME_AW(BFFM_SETSTATUSTEXT)
348 #define BFFM_SETSELECTION   WINELIB_NAME_AW(BFFM_SETSELECTION)
349 #define BFFM_VALIDATEFAILED WINELIB_NAME_AW(BFFM_VALIDATEFAILED)
350
351 /****************************************************************************
352 *       SHGetDataFromIDList API
353 */
354 #define SHGDFIL_FINDDATA        1
355 #define SHGDFIL_NETRESOURCE     2
356 #define SHGDFIL_DESCRIPTIONID   3
357
358 #define SHDID_ROOT_REGITEM          1
359 #define SHDID_FS_FILE               2
360 #define SHDID_FS_DIRECTORY          3
361 #define SHDID_FS_OTHER              4
362 #define SHDID_COMPUTER_DRIVE35      5
363 #define SHDID_COMPUTER_DRIVE525     6
364 #define SHDID_COMPUTER_REMOVABLE    7
365 #define SHDID_COMPUTER_FIXED        8
366 #define SHDID_COMPUTER_NETDRIVE     9
367 #define SHDID_COMPUTER_CDROM        10
368 #define SHDID_COMPUTER_RAMDISK      11
369 #define SHDID_COMPUTER_OTHER        12
370 #define SHDID_NET_DOMAIN            13
371 #define SHDID_NET_SERVER            14
372 #define SHDID_NET_SHARE             15
373 #define SHDID_NET_RESTOFNET         16
374 #define SHDID_NET_OTHER             17
375 #define SHDID_COMPUTER_IMAGING      18
376 #define SHDID_COMPUTER_AUDIO        19
377 #define SHDID_COMPUTER_SHAREDDOCS   20
378
379 typedef struct _SHDESCRIPTIONID
380 {   DWORD   dwDescriptionId;
381     CLSID   clsid;
382 } SHDESCRIPTIONID, *LPSHDESCRIPTIONID;
383
384 HRESULT WINAPI SHGetDataFromIDListA(LPSHELLFOLDER psf, LPCITEMIDLIST pidl, int nFormat, LPVOID pv, int cb);
385 HRESULT WINAPI SHGetDataFromIDListW(LPSHELLFOLDER psf, LPCITEMIDLIST pidl, int nFormat, LPVOID pv, int cb);
386 #define  SHGetDataFromIDList WINELIB_NAME_AW(SHGetDataFromIDList)
387
388 BOOL WINAPI SHGetSpecialFolderPathA (HWND hwndOwner, LPSTR szPath, int nFolder, BOOL bCreate);
389 BOOL WINAPI SHGetSpecialFolderPathW (HWND hwndOwner, LPWSTR szPath, int nFolder, BOOL bCreate);
390 #define  SHGetSpecialFolderPath WINELIB_NAME_AW(SHGetSpecialFolderPath)
391
392 /****************************************************************************
393 * shlview structures
394 */
395
396 /*
397 * IShellFolderViewCallback Callback
398 *  This "callback" is called by the shells default IShellView implementation (that
399 *  we got using SHCreateShellViewEx()), to notify us of the various things that
400 *  are happening to the shellview (and ask for things too).
401 *
402 *  You don't have to support anything here - anything you don't want to
403 *  handle, the shell will do itself if you just return E_NOTIMPL. This parameters
404 *  that the shell passes to this function are entirely undocumented.
405 *
406 *  HOWEVER, as the cabview sample as originally written used this callback, the
407 *  writers implemented the callback mechanism on top of their own IShellView.
408 *  Look there for some clues on what to do here.
409 */
410
411 typedef HRESULT (CALLBACK *SHELLVIEWPROC)(DWORD dwUserParam,LPSHELLFOLDER psf,
412                          HWND hwnd,UINT uMsg,UINT wParam,LPARAM lParam);
413
414 /* NF valid values for the "viewmode" item of the SHELLTEMPLATE*/
415 #define NF_INHERITVIEW    0x0000
416 #define NF_LOCALVIEW        0x0001
417
418 typedef struct _SHELLVIEWDATA   /* idl */
419 { DWORD           dwSize;
420   LPSHELLFOLDER   pShellFolder;
421   DWORD           dwUserParam;
422   LPCITEMIDLIST   pidl;
423   DWORD           v3;        /* always 0 */
424   SHELLVIEWPROC   pCallBack;
425   DWORD           viewmode;  /* NF_* enum */
426 } SHELLVIEWDATA, * LPSHELLVIEWDATA;
427
428 HRESULT WINAPI SHGetMalloc(LPMALLOC *lpmal) ;
429
430 /**********************************************************************
431  * SHGetSetSettings ()
432  */
433
434 typedef struct
435 {
436     BOOL fShowAllObjects : 1;
437     BOOL fShowExtensions : 1;
438     BOOL fNoConfirmRecycle : 1;
439
440     BOOL fShowSysFiles : 1;
441     BOOL fShowCompColor : 1;
442     BOOL fDoubleClickInWebView : 1;
443     BOOL fDesktopHTML : 1;
444     BOOL fWin95Classic : 1;
445     BOOL fDontPrettyPath : 1;
446     BOOL fShowAttribCol : 1;
447     BOOL fMapNetDrvBtn : 1;
448     BOOL fShowInfoTip : 1;
449     BOOL fHideIcons : 1;
450     BOOL fWebView : 1;
451     BOOL fFilter : 1;
452     BOOL fShowSuperHidden : 1;
453     BOOL fNoNetCrawling : 1;
454
455     DWORD dwWin95Unused;
456     UINT  uWin95Unused;
457     LONG   lParamSort;
458     int    iSortDirection;
459     UINT   version;
460     UINT uNotUsed;
461     BOOL fSepProcess: 1;
462     BOOL fStartPanelOn: 1;
463     BOOL fShowStartPage: 1;
464     UINT fSpareFlags : 13;
465 } SHELLSTATE, *LPSHELLSTATE;
466
467 /**********************************************************************
468  * SHGetSettings ()
469  */
470 typedef struct
471 {       BOOL fShowAllObjects : 1;
472         BOOL fShowExtensions : 1;
473         BOOL fNoConfirmRecycle : 1;
474         BOOL fShowSysFiles : 1;
475
476         BOOL fShowCompColor : 1;
477         BOOL fDoubleClickInWebView : 1;
478         BOOL fDesktopHTML : 1;
479         BOOL fWin95Classic : 1;
480
481         BOOL fDontPrettyPath : 1;
482         BOOL fShowAttribCol : 1;
483         BOOL fMapNetDrvBtn : 1;
484         BOOL fShowInfoTip : 1;
485
486         BOOL fHideIcons : 1;
487         UINT fRestFlags : 3;
488 } SHELLFLAGSTATE, * LPSHELLFLAGSTATE;
489
490 VOID WINAPI SHGetSettings(LPSHELLFLAGSTATE lpsfs, DWORD dwMask);
491
492 #define SSF_SHOWALLOBJECTS              0x0001
493 #define SSF_SHOWEXTENSIONS              0x0002
494 #define SSF_SHOWCOMPCOLOR               0x0008
495 #define SSF_SHOWSYSFILES                0x0020
496 #define SSF_DOUBLECLICKINWEBVIEW        0x0080
497 #define SSF_SHOWATTRIBCOL               0x0100
498 #define SSF_DESKTOPHTML                 0x0200
499 #define SSF_WIN95CLASSIC                0x0400
500 #define SSF_DONTPRETTYPATH              0x0800
501 #define SSF_SHOWINFOTIP                 0x2000
502 #define SSF_MAPNETDRVBUTTON             0x1000
503 #define SSF_NOCONFIRMRECYCLE            0x8000
504 #define SSF_HIDEICONS                   0x4000
505
506 /**********************************************************************
507  * SHChangeNotify
508  */
509 #define SHCNE_RENAMEITEM        0x00000001
510 #define SHCNE_CREATE            0x00000002
511 #define SHCNE_DELETE            0x00000004
512 #define SHCNE_MKDIR             0x00000008
513 #define SHCNE_RMDIR             0x00000010
514 #define SHCNE_MEDIAINSERTED     0x00000020
515 #define SHCNE_MEDIAREMOVED      0x00000040
516 #define SHCNE_DRIVEREMOVED      0x00000080
517 #define SHCNE_DRIVEADD          0x00000100
518 #define SHCNE_NETSHARE          0x00000200
519 #define SHCNE_NETUNSHARE        0x00000400
520 #define SHCNE_ATTRIBUTES        0x00000800
521 #define SHCNE_UPDATEDIR         0x00001000
522 #define SHCNE_UPDATEITEM        0x00002000
523 #define SHCNE_SERVERDISCONNECT  0x00004000
524 #define SHCNE_UPDATEIMAGE       0x00008000
525 #define SHCNE_DRIVEADDGUI       0x00010000
526 #define SHCNE_RENAMEFOLDER      0x00020000
527 #define SHCNE_FREESPACE         0x00040000
528
529 #define SHCNE_EXTENDED_EVENT    0x04000000
530 #define SHCNE_ASSOCCHANGED      0x08000000
531 #define SHCNE_DISKEVENTS        0x0002381F
532 #define SHCNE_GLOBALEVENTS      0x0C0581E0
533 #define SHCNE_ALLEVENTS         0x7FFFFFFF
534 #define SHCNE_INTERRUPT         0x80000000
535
536 #define SHCNEE_ORDERCHANGED     0x00000002
537
538 #define SHCNF_IDLIST            0x0000
539 #define SHCNF_PATHA             0x0001
540 #define SHCNF_PRINTERA          0x0002
541 #define SHCNF_DWORD             0x0003
542 #define SHCNF_PATHW             0x0005
543 #define SHCNF_PRINTERW          0x0006
544 #define SHCNF_TYPE              0x00FF
545 #define SHCNF_FLUSH             0x1000
546 #define SHCNF_FLUSHNOWAIT       0x2000
547
548 void WINAPI SHChangeNotify(LONG wEventId, UINT uFlags, LPCVOID dwItem1, LPCVOID dwItem2);
549
550 /****************************************************************************
551 * SHCreateDirectory API
552 */
553 DWORD WINAPI SHCreateDirectory(HWND, LPCVOID);
554 DWORD WINAPI SHCreateDirectoryExA(HWND, LPCSTR, LPSECURITY_ATTRIBUTES);
555 DWORD WINAPI SHCreateDirectoryExW(HWND, LPCWSTR, LPSECURITY_ATTRIBUTES);
556
557 /****************************************************************************
558 * SHGetSpecialFolderLocation API
559 */
560 HRESULT WINAPI SHGetSpecialFolderLocation(HWND hwndOwner, int nFolder, LPITEMIDLIST * ppidl);
561 HRESULT WINAPI SHGetFolderLocation(HWND hwndOwner, int nFolder, HANDLE hToken, DWORD dwReserved, LPITEMIDLIST *ppidl);
562
563 #define CSIDL_DESKTOP           0x0000
564 #define CSIDL_INTERNET          0x0001
565 #define CSIDL_PROGRAMS          0x0002
566 #define CSIDL_CONTROLS          0x0003
567 #define CSIDL_PRINTERS          0x0004
568 #define CSIDL_PERSONAL          0x0005
569 #define CSIDL_FAVORITES         0x0006
570 #define CSIDL_STARTUP           0x0007
571 #define CSIDL_RECENT            0x0008
572 #define CSIDL_SENDTO            0x0009
573 #define CSIDL_BITBUCKET         0x000a
574 #define CSIDL_STARTMENU         0x000b
575 #define CSIDL_MYDOCUMENTS       0x000c
576 #define CSIDL_MYMUSIC           0x000d
577 #define CSIDL_MYVIDEO           0x000e
578 #define CSIDL_DESKTOPDIRECTORY  0x0010
579 #define CSIDL_DRIVES            0x0011
580 #define CSIDL_NETWORK           0x0012
581 #define CSIDL_NETHOOD           0x0013
582 #define CSIDL_FONTS             0x0014
583 #define CSIDL_TEMPLATES         0x0015
584 #define CSIDL_COMMON_STARTMENU  0x0016
585 #define CSIDL_COMMON_PROGRAMS   0X0017
586 #define CSIDL_COMMON_STARTUP    0x0018
587 #define CSIDL_COMMON_DESKTOPDIRECTORY   0x0019
588 #define CSIDL_APPDATA           0x001a
589 #define CSIDL_PRINTHOOD         0x001b
590 #define CSIDL_LOCAL_APPDATA     0x001c
591 #define CSIDL_ALTSTARTUP        0x001d
592 #define CSIDL_COMMON_ALTSTARTUP 0x001e
593 #define CSIDL_COMMON_FAVORITES  0x001f
594 #define CSIDL_INTERNET_CACHE    0x0020
595 #define CSIDL_COOKIES           0x0021
596 #define CSIDL_HISTORY           0x0022
597 #define CSIDL_COMMON_APPDATA    0x0023
598 #define CSIDL_WINDOWS           0x0024
599 #define CSIDL_SYSTEM            0x0025
600 #define CSIDL_PROGRAM_FILES     0x0026
601 #define CSIDL_MYPICTURES        0x0027
602 #define CSIDL_PROFILE           0x0028
603 #define CSIDL_SYSTEMX86         0x0029
604 #define CSIDL_PROGRAM_FILESX86  0x002a
605 #define CSIDL_PROGRAM_FILES_COMMON      0x002b
606 #define CSIDL_PROGRAM_FILES_COMMONX86   0x002c
607 #define CSIDL_COMMON_TEMPLATES  0x002d
608 #define CSIDL_COMMON_DOCUMENTS  0x002e
609 #define CSIDL_COMMON_ADMINTOOLS 0x002f
610 #define CSIDL_ADMINTOOLS        0x0030
611 #define CSIDL_CONNECTIONS       0x0031
612 #define CSIDL_COMMON_MUSIC      0x0035
613 #define CSIDL_COMMON_PICTURES   0x0036
614 #define CSIDL_COMMON_VIDEO      0x0037
615 #define CSIDL_RESOURCES         0x0038
616 #define CSIDL_RESOURCES_LOCALIZED 0x0039
617 #define CSIDL_COMMON_OEM_LINKS  0x003a
618 #define CSIDL_CDBURN_AREA       0x003b
619 #define CSIDL_COMPUTERSNEARME   0x003d
620 #define CSIDL_PROFILES          0x003e
621 #define CSIDL_FOLDER_MASK       0x00ff
622 #define CSIDL_FLAG_PER_USER_INIT 0x0800
623 #define CSIDL_FLAG_NO_ALIAS     0x1000
624 #define CSIDL_FLAG_DONT_VERIFY  0x4000
625 #define CSIDL_FLAG_CREATE       0x8000
626
627 #define CSIDL_FLAG_MASK         0xff00
628
629 /****************************************************************************
630  * SHGetDesktopFolder API
631  */
632 DWORD WINAPI SHGetDesktopFolder(IShellFolder * *);
633
634 /****************************************************************************
635  * SHBindToParent API
636  */
637 HRESULT WINAPI SHBindToParent(LPCITEMIDLIST pidl, REFIID riid, LPVOID *ppv, LPCITEMIDLIST *ppidlLast);
638
639 /****************************************************************************
640 * SHDefExtractIcon API
641 */
642 HRESULT WINAPI SHDefExtractIconA(LPCSTR pszIconFile, int iIndex, UINT uFlags,
643                                  HICON* phiconLarge, HICON* phiconSmall, UINT nIconSize);
644 HRESULT WINAPI SHDefExtractIconW(LPCWSTR pszIconFile, int iIndex, UINT uFlags,
645                                  HICON* phiconLarge, HICON* phiconSmall, UINT nIconSize);
646 #define        SHDefExtractIcon WINELIB_NAME_AW(SHDefExtractIcon)
647
648 /*
649  * DROPFILES for CF_HDROP and CF_PRINTERS
650  */
651 typedef struct _DROPFILES
652 {
653   DWORD pFiles;
654   POINT pt;
655   BOOL  fNC;
656   BOOL  fWide;
657 } DROPFILES, *LPDROPFILES;
658
659 #include <poppack.h> 
660
661 #ifdef __cplusplus
662 } /* extern "C" */
663 #endif /* defined(__cplusplus) */
664
665 #endif /* __WINE_SHLOBJ_H */