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