Implement A->W call for GetNamedSecurityInfo.
[wine] / dlls / shell32 / undocshell.h
1 /*
2  * Copyright 1999, 2000 Juergen Schmied
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_UNDOCSHELL_H
20 #define __WINE_UNDOCSHELL_H
21
22 #include <stdarg.h>
23
24 #include "windef.h"
25 #include "winbase.h"
26 #include "winuser.h"
27 #include "commctrl.h"
28 #include "shlobj.h"
29
30 #ifdef __cplusplus
31 extern "C" {
32 #endif /* defined(__cplusplus) */
33
34 /****************************************************************************
35  *      IDList Functions
36  */
37 BOOL WINAPI ILGetDisplayName(
38         LPCITEMIDLIST pidl,
39         LPVOID path);
40
41 /* type parameter for ILGetDisplayNameEx() */
42 #define ILGDN_FORPARSING  0
43 #define ILGDN_NORMAL      1
44 #define ILGDN_INFOLDER    2
45
46 BOOL WINAPI ILGetDisplayNameEx(
47         LPSHELLFOLDER psf,
48         LPCITEMIDLIST pidl,
49         LPVOID path,
50         DWORD type);
51
52 HRESULT WINAPI ILSaveToStream(
53         LPSTREAM pstrm,
54         LPCITEMIDLIST pidl);
55
56 HRESULT WINAPI ILLoadFromStream(
57         LPSTREAM pstrm,
58         LPITEMIDLIST *ppidl);
59
60 LPITEMIDLIST WINAPI ILGlobalClone(LPCITEMIDLIST pidl);
61 void WINAPI ILGlobalFree(LPITEMIDLIST pidl);
62
63 LPITEMIDLIST WINAPI SHSimpleIDListFromPathA (LPCSTR lpszPath);
64 LPITEMIDLIST WINAPI SHSimpleIDListFromPathW (LPCWSTR lpszPath);
65
66 HRESULT WINAPI SHILCreateFromPathA (
67         LPCSTR path,
68         LPITEMIDLIST * ppidl,
69         DWORD *attributes);
70
71 HRESULT WINAPI SHILCreateFromPathW (
72         LPCWSTR path,
73         LPITEMIDLIST * ppidl,
74         DWORD *attributes);
75
76 LPITEMIDLIST WINAPI ILCreateFromPathA(LPCSTR path);
77 LPITEMIDLIST WINAPI ILCreateFromPathW(LPCWSTR path);
78
79 /*
80         string functions
81 */
82 BOOL WINAPI StrRetToStrNA(LPSTR,DWORD,LPSTRRET,const ITEMIDLIST*);
83 BOOL WINAPI StrRetToStrNW(LPWSTR,DWORD,LPSTRRET,const ITEMIDLIST*);
84
85
86 /****************************************************************************
87 * SHChangeNotifyRegister API
88 */
89 #define SHCNRF_InterruptLevel           0x0001
90 #define SHCNRF_ShellLevel               0x0002
91 #define SHCNRF_RecursiveInterrupt       0x1000  /* Must be combined with SHCNRF_InterruptLevel */
92 #define SHCNRF_NewDelivery              0x8000  /* Messages use shared memory */
93
94 /****************************************************************************
95  * Shell Common Dialogs
96  */
97
98 BOOL WINAPI PickIconDlg(
99         HWND hwndOwner,
100         LPSTR lpstrFile,
101         DWORD nMaxFile,
102         LPDWORD lpdwIconIndex);
103
104 /* RunFileDlg flags */
105 #define RFF_NOBROWSE       0x01
106 #define RFF_NODEFAULT      0x02
107 #define RFF_CALCDIRECTORY  0x04
108 #define RFF_NOLABEL        0x08
109 #define RFF_NOSEPARATEMEM  0x20  /* NT only */
110
111 /* RunFileFlg notification structure */
112 typedef struct
113 {
114   NMHDR   hdr;
115   LPCSTR  lpFile;
116   LPCSTR  lpDirectory;
117   int     nShow;
118 } NM_RUNFILEDLG, * LPNM_RUNFILEDLG;
119
120 /* RunFileDlg notification return values */
121 #define RF_OK      0x00
122 #define RF_CANCEL  0x01
123 #define RF_RETRY   0x02
124
125 void WINAPI RunFileDlg(
126         HWND hwndOwner,
127         HICON hIcon,
128         LPCSTR lpstrDirectory,
129         LPCSTR lpstrTitle,
130         LPCSTR lpstrDescription,
131         UINT uFlags);
132
133 void WINAPI ExitWindowsDialog(HWND hwndOwner);
134
135 BOOL WINAPI GetFileNameFromBrowse(
136         HWND hwndOwner,
137         LPSTR lpstrFile,
138         DWORD nMaxFile,
139         LPCSTR lpstrInitialDir,
140         LPCSTR lpstrDefExt,
141         LPCSTR lpstrFilter,
142         LPCSTR lpstrTitle);
143
144 BOOL WINAPI SHFindComputer(
145         LPCITEMIDLIST pidlRoot,
146         LPCITEMIDLIST pidlSavedSearch);
147
148 void WINAPI SHHandleDiskFull(HWND hwndOwner,
149         UINT uDrive);
150
151 int  WINAPI SHOutOfMemoryMessageBox(
152         HWND hwndOwner,
153         LPCSTR lpCaption,
154         UINT uType);
155
156 DWORD WINAPI SHNetConnectionDialog(
157         HWND hwndOwner,
158         LPCSTR lpstrRemoteName,
159         DWORD dwType);
160
161 /****************************************************************************
162  * Memory Routines
163  */
164
165 HANDLE WINAPI SHAllocShared(
166         LPVOID pv,
167         ULONG cb,
168         DWORD pid);
169
170 BOOL WINAPI SHFreeShared(
171         HANDLE hMem,
172         DWORD pid);
173
174 LPVOID WINAPI SHLockShared(
175         HANDLE hMem,
176         DWORD pid);
177
178 BOOL WINAPI SHUnlockShared(LPVOID pv);
179
180 /****************************************************************************
181  * Cabinet Window Messages
182  */
183
184 #define CWM_SETPATH           (WM_USER + 2)
185 #define CWM_WANTIDLE          (WM_USER + 3)
186 #define CWM_GETSETCURRENTINFO (WM_USER + 4)
187 #define CWM_SELECTITEM        (WM_USER + 5)
188 #define CWM_SELECTITEMSTR     (WM_USER + 6)
189 #define CWM_GETISHELLBROWSER  (WM_USER + 7)
190 #define CWM_TESTPATH          (WM_USER + 9)
191 #define CWM_STATECHANGE       (WM_USER + 10)
192 #define CWM_GETPATH           (WM_USER + 12)
193
194 /* CWM_TESTPATH types */
195 #define CWTP_ISEQUAL  0
196 #define CWTP_ISCHILD  1
197
198 /* CWM_TESTPATH structure */
199 typedef struct
200 {
201         DWORD dwType;
202         ITEMIDLIST idl;
203 } CWTESTPATHSTRUCT,* LPCWTESTPATHSTRUCT;
204
205 /****************************************************************************
206  * System Imagelist Routines
207  */
208
209 int WINAPI Shell_GetCachedImageIndex(
210         LPCSTR lpszFileName,
211         UINT nIconIndex,
212         BOOL bSimulateDoc);
213
214 BOOL WINAPI Shell_GetImageLists(
215         HIMAGELIST *lphimlLarge,
216         HIMAGELIST *lphimlSmall);
217
218 HICON WINAPI SHGetFileIcon(
219         DWORD dwReserved,
220         LPCSTR lpszPath,
221         DWORD dwFileAttributes,
222         UINT uFlags);
223
224 BOOL WINAPI FileIconInit(BOOL bFullInit);
225
226 /****************************************************************************
227  * File Menu Routines
228  */
229 /* FileMenu_Create nSelHeight constants */
230 #define FM_DEFAULT_SELHEIGHT  -1
231 #define FM_FULL_SELHEIGHT     0
232
233 /* FileMenu_Create flags */
234 #define FMF_SMALL_ICONS      0x00
235 #define FMF_LARGE_ICONS      0x08
236 #define FMF_NO_COLUMN_BREAK  0x10
237
238 HMENU WINAPI FileMenu_Create(
239         COLORREF crBorderColor,
240         int nBorderWidth,
241         HBITMAP hBorderBmp,
242         int nSelHeight,
243         UINT uFlags);
244
245 void WINAPI FileMenu_Destroy(HMENU hMenu);
246
247 /* FileMenu_AppendItem constants */
248 #define FM_SEPARATOR       (LPCSTR)1
249 #define FM_BLANK_ICON      -1
250 #define FM_DEFAULT_HEIGHT  0
251
252 BOOL WINAPI FileMenu_AppendItem(
253         HMENU hMenu,
254         LPCSTR lpszText,
255         UINT uID,
256         int iIcon,
257         HMENU hMenuPopup,
258         int nItemHeight);
259
260 /* FileMenu_InsertUsingPidl flags */
261 #define FMF_NO_EMPTY_ITEM      0x01
262 #define FMF_NO_PROGRAM_GROUPS  0x04
263
264 /* FileMenu_InsertUsingPidl callback function */
265 typedef void (CALLBACK *LPFNFMCALLBACK)(LPCITEMIDLIST pidlFolder, LPCITEMIDLIST pidlFile);
266
267 int WINAPI FileMenu_InsertUsingPidl(
268         HMENU hMenu,
269         UINT uID,
270         LPCITEMIDLIST pidl,
271         UINT uFlags,
272         UINT uEnumFlags,
273         LPFNFMCALLBACK lpfnCallback);
274
275 int WINAPI FileMenu_ReplaceUsingPidl(
276         HMENU hMenu,
277         UINT uID,
278         LPCITEMIDLIST pidl,
279         UINT uEnumFlags,
280         LPFNFMCALLBACK lpfnCallback);
281
282 void WINAPI FileMenu_Invalidate(HMENU hMenu);
283
284 HMENU WINAPI FileMenu_FindSubMenuByPidl(
285         HMENU hMenu,
286         LPCITEMIDLIST pidl);
287
288 BOOL WINAPI FileMenu_TrackPopupMenuEx(
289         HMENU hMenu,
290         UINT uFlags,
291         int x,
292         int y,
293         HWND hWnd,
294         LPTPMPARAMS lptpm);
295
296 BOOL WINAPI FileMenu_GetLastSelectedItemPidls(
297         UINT uReserved,
298         LPCITEMIDLIST *ppidlFolder,
299         LPCITEMIDLIST *ppidlItem);
300
301 LRESULT WINAPI FileMenu_MeasureItem(
302         HWND hWnd,
303         LPMEASUREITEMSTRUCT lpmis);
304
305 LRESULT WINAPI FileMenu_DrawItem(
306         HWND hWnd,
307         LPDRAWITEMSTRUCT lpdis);
308
309 BOOL WINAPI FileMenu_InitMenuPopup(HMENU hMenu);
310
311 void WINAPI FileMenu_AbortInitMenu(void);
312
313 LRESULT WINAPI FileMenu_HandleMenuChar(
314         HMENU hMenu,
315         WPARAM wParam);
316
317 BOOL WINAPI FileMenu_DeleteAllItems(HMENU hMenu);
318
319 BOOL WINAPI FileMenu_DeleteItemByCmd(
320         HMENU hMenu,
321         UINT uID);
322
323 BOOL WINAPI FileMenu_DeleteItemByIndex(
324         HMENU hMenu,
325         UINT uPos);
326
327 BOOL WINAPI FileMenu_DeleteMenuItemByFirstID(
328         HMENU hMenu,
329         UINT uID);
330
331 BOOL WINAPI FileMenu_DeleteSeparator(HMENU hMenu);
332
333 BOOL WINAPI FileMenu_EnableItemByCmd(
334         HMENU hMenu,
335         UINT uID,
336         BOOL bEnable);
337
338 DWORD WINAPI FileMenu_GetItemExtent(
339         HMENU hMenu,
340         UINT uPos);
341
342 int WINAPI FileMenu_AppendFilesForPidl(
343         HMENU hMenu,
344         LPCITEMIDLIST pidl,
345         BOOL bAddSeparator);
346
347 int WINAPI FileMenu_AddFilesForPidl(
348         HMENU hMenu,
349         UINT uReserved,
350         UINT uID,
351         LPCITEMIDLIST pidl,
352         UINT uFlags,
353         UINT uEnumFlags,
354         LPFNFMCALLBACK lpfnCallback);
355
356 /****************************************************************************
357  * Drag And Drop Routines
358  */
359 HRESULT WINAPI SHLoadOLE(DWORD dwFlags);
360
361 HRESULT WINAPI SHRegisterDragDrop(
362         HWND hWnd,
363         LPDROPTARGET lpDropTarget);
364
365 HRESULT WINAPI SHRevokeDragDrop(HWND hWnd);
366
367 BOOL WINAPI DAD_DragEnter(HWND hWnd);
368
369 BOOL WINAPI DAD_SetDragImageFromListView(
370         HWND hWnd,
371         POINT pt);
372
373 BOOL WINAPI DAD_ShowDragImage(BOOL bShow);
374
375 HRESULT WINAPI CIDLData_CreateFromIDArray(
376         LPCITEMIDLIST pidlFolder,
377         DWORD cpidlFiles,
378         LPCITEMIDLIST *lppidlFiles,
379         LPDATAOBJECT *ppdataObject);
380
381 /****************************************************************************
382  * Path Manipulation Routines
383  */
384
385 BOOL WINAPI PathAppendAW(LPVOID lpszPath1, LPCVOID lpszPath2);
386
387 LPVOID WINAPI PathCombineAW(LPVOID szDest, LPCVOID lpszDir, LPCVOID lpszFile);
388
389 LPVOID  WINAPI PathAddBackslashAW(LPVOID path);
390
391 LPVOID WINAPI PathBuildRootAW(LPVOID lpszPath, int drive);
392
393 LPVOID WINAPI PathFindExtensionAW(LPCVOID path);
394
395 LPVOID WINAPI PathFindFileNameAW(LPCVOID path);
396
397 LPVOID WINAPI PathGetExtensionAW(LPCVOID lpszPath,  DWORD void1, DWORD void2);
398
399 LPVOID WINAPI PathGetArgsAW(LPVOID lpszPath);
400
401 BOOL WINAPI PathRemoveFileSpecAW(LPVOID lpszPath);
402
403 void WINAPI PathRemoveBlanksAW(LPVOID lpszPath);
404
405 VOID  WINAPI PathQuoteSpacesAW(LPVOID path);
406
407 void WINAPI PathUnquoteSpacesAW(LPVOID lpszPath);
408
409 BOOL WINAPI PathIsUNCAW(LPCVOID lpszPath);
410
411 BOOL WINAPI PathIsRelativeAW(LPCVOID lpszPath);
412
413 BOOL WINAPI PathIsRootAW(LPCVOID x);
414
415 BOOL WINAPI PathIsExeAW(LPCVOID lpszPath);
416
417 BOOL WINAPI PathIsDirectoryAW(LPCVOID lpszPath);
418
419 BOOL WINAPI PathFileExistsAW(LPCVOID lpszPath);
420
421 BOOL WINAPI PathMatchSpecAW(LPVOID lpszPath, LPVOID lpszSpec);
422
423 BOOL WINAPI PathMakeUniqueNameAW(
424         LPVOID lpszBuffer,
425         DWORD dwBuffSize,
426         LPCVOID lpszShortName,
427         LPCVOID lpszLongName,
428         LPCVOID lpszPathName);
429
430 BOOL WINAPI PathYetAnotherMakeUniqueName(
431         LPWSTR lpszBuffer,
432         LPCWSTR lpszPathName,
433         LPCWSTR lpszShortName,
434         LPCWSTR lpszLongName);
435
436 /* PathCleanupSpec return values */
437 #define PCS_REPLACEDCHARS  0x00000001
438 #define PCS_REMOVEDCHARS   0x00000002
439 #define PCS_SHORTENED      0x00000004
440 #define PCS_PATHTOOLONG    0x80000008
441
442 DWORD WINAPI PathCleanupSpecAW(LPCVOID lpszPath, LPVOID lpszFile);
443
444 BOOL WINAPI PathQualifyA(LPCSTR path);
445 BOOL WINAPI PathQualifyW(LPCWSTR path);
446 #define PathQualify WINELIB_NAME_AW(PathQualify)
447 BOOL  WINAPI PathQualifyAW(LPCVOID path);
448
449
450 /* PathResolve flags */
451 #define PRF_CHECKEXISTANCE  0x01
452 #define PRF_EXECUTABLE      0x02
453 #define PRF_QUALIFYONPATH   0x04
454 #define PRF_WINDOWS31       0x08
455
456 BOOL WINAPI PathResolveAW(LPVOID lpszPath, LPCVOID *alpszPaths, DWORD dwFlags);
457
458 VOID WINAPI PathSetDlgItemPathAW(HWND hDlg, int nIDDlgItem, LPCVOID lpszPath);
459
460 /* PathProcessCommand flags */
461 #define PPCF_QUOTEPATH        0x01 /* implies PPCF_INCLUDEARGS */
462 #define PPCF_INCLUDEARGS      0x02
463 #define PPCF_NODIRECTORIES    0x10
464 #define PPCF_DONTRESOLVE      0x20
465 #define PPCF_PATHISRELATIVE   0x40
466
467 HRESULT WINAPI PathProcessCommandAW(LPCVOID lpszPath, LPVOID lpszBuff,
468                                 DWORD dwBuffSize, DWORD dwFlags);
469
470 void WINAPI PathStripPathAW(LPVOID lpszPath);
471
472 BOOL WINAPI PathStripToRootAW(LPVOID lpszPath);
473
474 void WINAPI PathRemoveArgsAW(LPVOID lpszPath);
475
476 void WINAPI PathRemoveExtensionAW(LPVOID lpszPath);
477
478 int WINAPI PathParseIconLocationAW(LPVOID lpszPath);
479
480 BOOL WINAPI PathIsSameRootAW(LPCVOID lpszPath1, LPCVOID lpszPath2);
481
482 BOOL WINAPI PathFindOnPathAW(LPVOID sFile, LPCVOID sOtherDirs);
483
484 /****************************************************************************
485  * Shell Namespace Routines
486  */
487
488 /* SHCreateShellFolderViewEx callback function */
489 typedef HRESULT (CALLBACK *LPFNSFVCALLBACK)(
490         DWORD dwUser,
491         LPSHELLFOLDER pshf,
492         HWND hWnd,
493         UINT uMsg,
494         WPARAM wParam,
495         LPARAM lParam);
496
497 /* SHCreateShellFolderViewEx structure */
498 typedef struct
499 {
500   DWORD            dwSize;
501   LPSHELLFOLDER    pshf;
502   DWORD            dwUser;
503   LPCITEMIDLIST    pidlFolder;
504   DWORD            dwEventId;
505   LPFNSFVCALLBACK  lpfnCallback;
506   UINT             uViewMode;
507 } SHELLFOLDERVIEWINFO, * LPSHELLFOLDERVIEWINFO;
508 typedef const SHELLFOLDERVIEWINFO * LPCSHELLFOLDERVIEWINFO;
509
510 HRESULT WINAPI SHCreateShellFolderViewEx(
511         LPCSHELLFOLDERVIEWINFO pshfvi,
512         LPSHELLVIEW *ppshv);
513
514 /* SHCreateShellFolderViewEx callback messages */
515 #define SFVCB_ADDTOMENU           0x0001
516 #define SFVCB_INVOKECOMMAND       0x0002
517 #define SFVCB_GETMENUHELP         0x0003
518 #define SFVCB_GETTOOLBARTIP       0x0004
519 #define SFVCB_GETTOOLBARINFO      0x0005
520 #define SFVCB_ADDTOOLBARITEMS     0x0006
521 #define SFVCB_INITMENUPOPUP       0x0007
522 #define SFVCB_SELECTIONCHANGED    0x0008
523 #define SFVCB_DRAWMENUITEM        0x0009
524 #define SFVCB_MEASUREMENUITEM     0x000A
525 #define SFVCB_EXITMENULOOP        0x000B
526 #define SFVCB_VIEWRELEASE         0x000C
527 #define SFVCB_GETNAMELENGTH       0x000D
528 #define SFVCB_CHANGENOTIFY        0x000E
529 #define SFVCB_WINDOWCREATED       0x000F
530 #define SFVCB_WINDOWCLOSING       0x0010
531 #define SFVCB_LISTREFRESHED       0x0011
532 #define SFVCB_WINDOWFOCUSED       0x0012
533 #define SFVCB_REGISTERCOPYHOOK    0x0014
534 #define SFVCB_COPYHOOKCALLBACK    0x0015
535 #define SFVCB_GETDETAILSOF        0x0017
536 #define SFVCB_COLUMNCLICK         0x0018
537 #define SFVCB_GETCHANGENOTIFYPIDL 0x0019
538 #define SFVCB_GETESTIMATEDCOUNT   0x001A
539 #define SFVCB_ADJUSTVIEWMODE      0x001B
540 #define SFVCB_REMOVEFROMMENU      0x001C
541 #define SFVCB_ADDINGOBJECT        0x001D
542 #define SFVCB_REMOVINGOBJECT      0x001E
543 #define SFVCB_UPDATESTATUSBAR     0x001F
544 #define SFVCB_ISSLOWREFRESH       0x0020
545 #define SFVCB_GETCOMMANDDIR       0x0021
546 #define SFVCB_GETCOLUMNSTREAM     0x0022
547 #define SFVCB_CANSELECTALL        0x0023
548 #define SFVCB_DRAGSUCCEEDED       0x0024
549 #define SFVCB_ISSTRICTREFRESH     0x0025
550 #define SFVCB_ISCHILDOBJECT       0x0026
551
552 /* Generic structure used by several messages */
553 typedef struct
554 {
555   DWORD          dwReserved;
556   DWORD          dwReserved2;
557   LPCITEMIDLIST  pidl;
558   LPDWORD        lpdwUser;
559 } SFVCBINFO, * LPSFVCBINFO;
560 typedef const SFVCBINFO * LPCSFVCBINFO;
561
562 /* SFVCB_ADDTOMENU structure */
563 typedef struct
564 {
565   HMENU  hMenu;
566   UINT   indexMenu;
567   UINT   idCmdFirst;
568   UINT   idCmdLast;
569 } SFVMENUINFO, * LPSFVMENUINFO;
570
571 /* SFVCB_GETTOOLBARINFO structure */
572 typedef struct
573 {
574   UINT  nButtons;
575   UINT  uFlags;
576 } SFVTOOLBARINFO, * LPSFVTOOLBARINFO;
577
578 /* SFVTOOLBARINFO flags */
579 typedef enum
580 {
581   SFVTI_ADDTOEND   = 0,
582   SFVTI_ADDTOFRONT = 1,
583   SFVTI_OVERWRITE  = 2
584 } SFVTIF;
585
586 /* SFVCB_SELECTIONCHANGED structure */
587 typedef struct
588 {
589   UINT           uOldState;
590   UINT           uNewState;
591   LPCITEMIDLIST  pidl;
592   LPDWORD        lpdwUser;
593 } SFVSELECTSTATE, * LPSFVSELECTSTATE;
594 typedef const SFVSELECTSTATE * LPCSFVSELECTSTATE;
595
596 /* SFVCB_COPYHOOKCALLBACK structure */
597 typedef struct
598 {
599   HWND    hwnd;
600   UINT    wFunc;
601   UINT    wFlags;
602   LPCSTR  pszSrcFile;
603   DWORD   dwSrcAttribs;
604   LPCSTR  pszDestFile;
605   DWORD   dwDestAttribs;
606 } SFVCOPYHOOKINFO, * LPSFVCOPYHOOKINFO;
607 typedef const SFVCOPYHOOKINFO * LPCSFVCOPYHOOKINFO;
608
609 /* SFVCB_GETDETAILSOF structure */
610 typedef struct
611 {
612   LPCITEMIDLIST  pidl;
613   int            fmt;
614   int            cx;
615   STRRET         lpText;
616 } SFVCOLUMNINFO, * LPSFVCOLUMNINFO;
617
618 int WINAPI SHShellFolderView_Message(
619         HWND hwndCabinet,
620         DWORD dwMessage,
621         DWORD dwParam);
622
623 /* SHShellFolderView_Message messages */
624 #define SFVM_REARRANGE          0x0001
625 #define SFVM_GETARRANGECOLUMN   0x0002
626 #define SFVM_ADDOBJECT          0x0003
627 #define SFVM_GETITEMCOUNT       0x0004
628 #define SFVM_GETITEMPIDL        0x0005
629 #define SFVM_REMOVEOBJECT       0x0006
630 #define SFVM_UPDATEOBJECT       0x0007
631 #define SFVM_SETREDRAW          0x0008
632 #define SFVM_GETSELECTEDOBJECTS 0x0009
633 #define SFVM_ISDROPONSOURCE     0x000A
634 #define SFVM_MOVEICONS          0x000B
635 #define SFVM_GETDRAGPOINT       0x000C
636 #define SFVM_GETDROPPOINT       0x000D
637 #define SFVM_SETOBJECTPOS       0x000E
638 #define SFVM_ISDROPONBACKGROUND 0x000F
639 #define SFVM_CUTOBJECTS         0x0010
640 #define SFVM_TOGGLEAUTOARRANGE  0x0011
641 #define SFVM_LINEUPICONS        0x0012
642 #define SFVM_GETAUTOARRANGE     0x0013
643 #define SFVM_GETSELECTEDCOUNT   0x0014
644 #define SFVM_GETITEMSPACING     0x0015
645 #define SFVM_REFRESHOBJECT      0x0016
646 #define SFVM_SETCLIPBOARDPOINTS 0x0017
647
648 /****************************************************************************
649  * Misc Stuff
650  */
651
652 /* SHWaitForFileToOpen flags */
653 #define SHWFF_ADD     0x01
654 #define SHWFF_REMOVE  0x02
655 #define SHWFF_WAIT    0x04
656
657 BOOL WINAPI SHWaitForFileToOpen(
658         LPCITEMIDLIST pidl,
659         DWORD dwFlags,
660         DWORD dwTimeout);
661
662 WORD WINAPI ArrangeWindows(
663         HWND hwndParent,
664         DWORD dwReserved,
665         LPCRECT lpRect,
666         WORD cKids,
667         CONST HWND * lpKids);
668
669 /* RegisterShellHook types */
670 #define RSH_DEREGISTER        0
671 #define RSH_REGISTER          1
672 #define RSH_REGISTER_PROGMAN  2
673 #define RSH_REGISTER_TASKMAN  3
674
675 BOOL WINAPI RegisterShellHook(
676         HWND hWnd,
677         DWORD dwType);
678
679 /* SHCreateDefClassObject callback function */
680 typedef HRESULT (CALLBACK *LPFNCDCOCALLBACK)(
681         LPUNKNOWN pUnkOuter,
682         REFIID riidObject,
683         LPVOID *ppvObject);
684
685 HRESULT WINAPI SHCreateDefClassObject(
686         REFIID riidFactory,
687         LPVOID *ppvFactory,
688         LPFNCDCOCALLBACK lpfnCallback,
689         LPDWORD lpdwUsage,
690         REFIID riidObject);
691
692 DWORD WINAPI SHCLSIDFromStringA (LPCSTR clsid, CLSID *id);
693 DWORD WINAPI SHCLSIDFromStringW (LPCWSTR clsid, CLSID *id);
694
695 void WINAPI SHFreeUnusedLibraries();
696
697 /* SHCreateLinks flags */
698 #define SHCLF_PREFIXNAME       0x01
699 #define SHCLF_CREATEONDESKTOP  0x02
700
701 HRESULT WINAPI SHCreateLinks(
702         HWND hWnd,
703         LPCSTR lpszDir,
704         LPDATAOBJECT lpDataObject,
705         UINT uFlags,
706         LPITEMIDLIST *lppidlLinks);
707
708 DWORD WINAPI CheckEscapesA(LPSTR string, DWORD len);
709 DWORD WINAPI CheckEscapesW(LPWSTR string, DWORD len);
710
711 /* policy functions */
712 BOOL WINAPI SHInitRestricted(LPCVOID unused, LPCVOID inpRegKey);
713
714 #ifdef __cplusplus
715 } /* extern "C" */
716 #endif /* defined(__cplusplus) */
717
718 #endif /* __WINE_UNDOCSHELL_H */