Add trailing '\n's to ok() calls.
[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 LPITEMIDLIST WINAPI ILClone (LPCITEMIDLIST pidl);
38 LPITEMIDLIST WINAPI ILCloneFirst(LPCITEMIDLIST pidl);
39
40 LPITEMIDLIST WINAPI ILCombine(
41         LPCITEMIDLIST iil1,
42         LPCITEMIDLIST iil2);
43
44 DWORD WINAPI ILGetSize(LPCITEMIDLIST pidl);
45
46 LPITEMIDLIST WINAPI ILGetNext(LPCITEMIDLIST pidl);
47 LPITEMIDLIST WINAPI ILFindLastID(LPCITEMIDLIST pidl);
48 BOOL WINAPI ILRemoveLastID(LPCITEMIDLIST pidl);
49
50 LPITEMIDLIST WINAPI ILFindChild(
51         LPCITEMIDLIST pidl1,
52         LPCITEMIDLIST pidl2);
53
54 LPITEMIDLIST WINAPI ILAppendID(
55         LPITEMIDLIST pidl,
56         LPCSHITEMID lpItemID,
57         BOOL bAddToEnd);
58
59 BOOL WINAPI ILIsEqual(
60         LPCITEMIDLIST pidl1,
61         LPCITEMIDLIST pidl2);
62
63 BOOL WINAPI ILIsParent(
64         LPCITEMIDLIST pidlParent,
65         LPCITEMIDLIST pidlChild,
66         BOOL bImmediate);
67
68 BOOL WINAPI ILGetDisplayName(
69         LPCITEMIDLIST pidl,
70         LPVOID path);
71
72 /* type parameter for ILGetDisplayNameEx() */
73 #define ILGDN_FORPARSING  0
74 #define ILGDN_NORMAL      1
75 #define ILGDN_INFOLDER    2
76
77 BOOL WINAPI ILGetDisplayNameEx(
78         LPSHELLFOLDER psf,
79         LPCITEMIDLIST pidl,
80         LPVOID path,
81         DWORD type);
82
83 DWORD WINAPI ILFree(LPITEMIDLIST pidl);
84
85 HRESULT WINAPI ILSaveToStream(
86         LPSTREAM pstrm,
87         LPCITEMIDLIST pidl);
88
89 HRESULT WINAPI ILLoadFromStream(
90         LPSTREAM pstrm,
91         LPITEMIDLIST *ppidl);
92
93 LPITEMIDLIST WINAPI ILGlobalClone(LPCITEMIDLIST pidl);
94 void WINAPI ILGlobalFree(LPITEMIDLIST pidl);
95
96 LPITEMIDLIST WINAPI SHSimpleIDListFromPathA (LPCSTR lpszPath);
97 LPITEMIDLIST WINAPI SHSimpleIDListFromPathW (LPCWSTR lpszPath);
98 LPITEMIDLIST WINAPI SHSimpleIDListFromPathAW (LPCVOID lpszPath);
99
100 HRESULT WINAPI SHILCreateFromPathA (
101         LPCSTR path,
102         LPITEMIDLIST * ppidl,
103         DWORD *attributes);
104
105 HRESULT WINAPI SHILCreateFromPathW (
106         LPCWSTR path,
107         LPITEMIDLIST * ppidl,
108         DWORD *attributes);
109
110 HRESULT WINAPI SHILCreateFromPathAW (
111         LPCVOID path,
112         LPITEMIDLIST * ppidl,
113         DWORD *attributes);
114
115 LPITEMIDLIST WINAPI ILCreateFromPathA(LPCSTR path);
116 LPITEMIDLIST WINAPI ILCreateFromPathW(LPCWSTR path);
117 LPITEMIDLIST WINAPI ILCreateFromPathAW(LPCVOID path);
118
119 /*
120         string functions
121 */
122 HRESULT WINAPI StrRetToStrNA (
123         LPVOID dest,
124         DWORD len,
125         LPSTRRET src,
126         const ITEMIDLIST *pidl);
127
128 HRESULT WINAPI StrRetToStrNW (
129         LPVOID dest,
130         DWORD len,
131         LPSTRRET src,
132         const ITEMIDLIST *pidl);
133
134 HRESULT WINAPI StrRetToStrNAW (
135         LPVOID dest,
136         DWORD len,
137         LPSTRRET src,
138         const ITEMIDLIST *pidl);
139
140
141 /****************************************************************************
142 * SHChangeNotifyRegister API
143 */
144 #define SHCNRF_InterruptLevel           0x0001
145 #define SHCNRF_ShellLevel               0x0002
146 #define SHCNRF_RecursiveInterrupt       0x1000  /* Must be combined with SHCNRF_InterruptLevel */
147 #define SHCNRF_NewDelivery              0x8000  /* Messages use shared memory */
148
149 /****************************************************************************
150  * Shell Common Dialogs
151  */
152
153 BOOL WINAPI PickIconDlg(
154         HWND hwndOwner,
155         LPSTR lpstrFile,
156         DWORD nMaxFile,
157         LPDWORD lpdwIconIndex);
158
159 /* RunFileDlg flags */
160 #define RFF_NOBROWSE       0x01
161 #define RFF_NODEFAULT      0x02
162 #define RFF_CALCDIRECTORY  0x04
163 #define RFF_NOLABEL        0x08
164 #define RFF_NOSEPARATEMEM  0x20  /* NT only */
165
166 /* RunFileFlg notification structure */
167 typedef struct
168 {
169   NMHDR   hdr;
170   LPCSTR  lpFile;
171   LPCSTR  lpDirectory;
172   int     nShow;
173 } NM_RUNFILEDLG, * LPNM_RUNFILEDLG;
174
175 /* RunFileDlg notification return values */
176 #define RF_OK      0x00
177 #define RF_CANCEL  0x01
178 #define RF_RETRY   0x02
179
180 void WINAPI RunFileDlg(
181         HWND hwndOwner,
182         HICON hIcon,
183         LPCSTR lpstrDirectory,
184         LPCSTR lpstrTitle,
185         LPCSTR lpstrDescription,
186         UINT uFlags);
187
188 void WINAPI ExitWindowsDialog(HWND hwndOwner);
189
190 int  WINAPI RestartDialog(
191         HWND hwndOwner,
192         LPCSTR lpstrReason,
193         UINT uFlags);
194
195 BOOL WINAPI GetFileNameFromBrowse(
196         HWND hwndOwner,
197         LPSTR lpstrFile,
198         DWORD nMaxFile,
199         LPCSTR lpstrInitialDir,
200         LPCSTR lpstrDefExt,
201         LPCSTR lpstrFilter,
202         LPCSTR lpstrTitle);
203
204 BOOL WINAPI SHFindFiles(
205         LPCITEMIDLIST pidlRoot,
206         LPCITEMIDLIST pidlSavedSearch);
207
208 BOOL WINAPI SHFindComputer(
209         LPCITEMIDLIST pidlRoot,
210         LPCITEMIDLIST pidlSavedSearch);
211
212 /* SHObjectProperties flags */
213 #define OPF_PRINTERNAME  0x01
214 #define OPF_PATHNAME     0x02
215
216 BOOL WINAPI SHObjectProperties(
217         HWND hwndOwner,
218         UINT uFlags,
219         LPCSTR lpstrName,
220         LPCSTR lpstrParameters);
221
222 void WINAPI SHHandleDiskFull(HWND hwndOwner,
223         UINT uDrive);
224
225 int  WINAPI SHOutOfMemoryMessageBox(
226         HWND hwndOwner,
227         LPCSTR lpCaption,
228         UINT uType);
229
230 DWORD WINAPI SHNetConnectionDialog(
231         HWND hwndOwner,
232         LPCSTR lpstrRemoteName,
233         DWORD dwType);
234
235 int WINAPIV ShellMessageBoxA(
236         HINSTANCE hInstance,
237         HWND hWnd,
238         LPCSTR lpText,
239         LPCSTR lpCaption,
240         UINT uType,
241         ...);
242
243 int WINAPIV ShellMessageBoxW(
244         HINSTANCE hInstance,
245         HWND hWnd,
246         LPCWSTR lpText,
247         LPCWSTR lpCaption,
248         UINT uType,
249         ...);
250
251 #define ShellMessageBox WINELIB_NAME_AW(ShellMessageBox)
252
253 /****************************************************************************
254  * Memory Routines
255  */
256
257 LPVOID WINAPI SHAlloc(ULONG cb);
258 void WINAPI SHFree(LPVOID pv);
259
260 HANDLE WINAPI SHAllocShared(
261         LPVOID pv,
262         ULONG cb,
263         DWORD pid);
264
265 BOOL WINAPI SHFreeShared(
266         HANDLE hMem,
267         DWORD pid);
268
269 LPVOID WINAPI SHLockShared(
270         HANDLE hMem,
271         DWORD pid);
272
273 BOOL WINAPI SHUnlockShared(LPVOID pv);
274
275 /****************************************************************************
276  * Cabinet Window Messages
277  */
278
279 #define CWM_SETPATH           (WM_USER + 2)
280 #define CWM_WANTIDLE          (WM_USER + 3)
281 #define CWM_GETSETCURRENTINFO (WM_USER + 4)
282 #define CWM_SELECTITEM        (WM_USER + 5)
283 #define CWM_SELECTITEMSTR     (WM_USER + 6)
284 #define CWM_GETISHELLBROWSER  (WM_USER + 7)
285 #define CWM_TESTPATH          (WM_USER + 9)
286 #define CWM_STATECHANGE       (WM_USER + 10)
287 #define CWM_GETPATH           (WM_USER + 12)
288
289 /* CWM_TESTPATH types */
290 #define CWTP_ISEQUAL  0
291 #define CWTP_ISCHILD  1
292
293 /* CWM_TESTPATH structure */
294 typedef struct
295 {
296         DWORD dwType;
297         ITEMIDLIST idl;
298 } CWTESTPATHSTRUCT,* LPCWTESTPATHSTRUCT;
299
300 /****************************************************************************
301  * System Imagelist Routines
302  */
303
304 int WINAPI Shell_GetCachedImageIndex(
305         LPCSTR lpszFileName,
306         UINT nIconIndex,
307         BOOL bSimulateDoc);
308
309 BOOL WINAPI Shell_GetImageLists(
310         HIMAGELIST *lphimlLarge,
311         HIMAGELIST *lphimlSmall);
312
313 HICON WINAPI SHGetFileIcon(
314         DWORD dwReserved,
315         LPCSTR lpszPath,
316         DWORD dwFileAttributes,
317         UINT uFlags);
318
319 int WINAPI SHMapPIDLToSystemImageListIndex(
320         LPSHELLFOLDER psf,
321         LPCITEMIDLIST pidl,
322         UINT * pOpenIndex);
323
324 BOOL WINAPI FileIconInit(BOOL bFullInit);
325
326 /****************************************************************************
327  * File Menu Routines
328  */
329 /* FileMenu_Create nSelHeight constants */
330 #define FM_DEFAULT_SELHEIGHT  -1
331 #define FM_FULL_SELHEIGHT     0
332
333 /* FileMenu_Create flags */
334 #define FMF_SMALL_ICONS      0x00
335 #define FMF_LARGE_ICONS      0x08
336 #define FMF_NO_COLUMN_BREAK  0x10
337
338 HMENU WINAPI FileMenu_Create(
339         COLORREF crBorderColor,
340         int nBorderWidth,
341         HBITMAP hBorderBmp,
342         int nSelHeight,
343         UINT uFlags);
344
345 void WINAPI FileMenu_Destroy(HMENU hMenu);
346
347 /* FileMenu_AppendItem constants */
348 #define FM_SEPARATOR       (LPCSTR)1
349 #define FM_BLANK_ICON      -1
350 #define FM_DEFAULT_HEIGHT  0
351
352 BOOL WINAPI FileMenu_AppendItem(
353         HMENU hMenu,
354         LPCSTR lpszText,
355         UINT uID,
356         int iIcon,
357         HMENU hMenuPopup,
358         int nItemHeight);
359
360 /* FileMenu_InsertUsingPidl flags */
361 #define FMF_NO_EMPTY_ITEM      0x01
362 #define FMF_NO_PROGRAM_GROUPS  0x04
363
364 /* FileMenu_InsertUsingPidl callback function */
365 typedef void (CALLBACK *LPFNFMCALLBACK)(LPCITEMIDLIST pidlFolder, LPCITEMIDLIST pidlFile);
366
367 int WINAPI FileMenu_InsertUsingPidl(
368         HMENU hMenu,
369         UINT uID,
370         LPCITEMIDLIST pidl,
371         UINT uFlags,
372         UINT uEnumFlags,
373         LPFNFMCALLBACK lpfnCallback);
374
375 int WINAPI FileMenu_ReplaceUsingPidl(
376         HMENU hMenu,
377         UINT uID,
378         LPCITEMIDLIST pidl,
379         UINT uEnumFlags,
380         LPFNFMCALLBACK lpfnCallback);
381
382 void WINAPI FileMenu_Invalidate(HMENU hMenu);
383
384 HMENU WINAPI FileMenu_FindSubMenuByPidl(
385         HMENU hMenu,
386         LPCITEMIDLIST pidl);
387
388 BOOL WINAPI FileMenu_TrackPopupMenuEx(
389         HMENU hMenu,
390         UINT uFlags,
391         int x,
392         int y,
393         HWND hWnd,
394         LPTPMPARAMS lptpm);
395
396 BOOL WINAPI FileMenu_GetLastSelectedItemPidls(
397         UINT uReserved,
398         LPCITEMIDLIST *ppidlFolder,
399         LPCITEMIDLIST *ppidlItem);
400
401 LRESULT WINAPI FileMenu_MeasureItem(
402         HWND hWnd,
403         LPMEASUREITEMSTRUCT lpmis);
404
405 LRESULT WINAPI FileMenu_DrawItem(
406         HWND hWnd,
407         LPDRAWITEMSTRUCT lpdis);
408
409 BOOL WINAPI FileMenu_InitMenuPopup(HMENU hMenu);
410
411 void WINAPI FileMenu_AbortInitMenu(void);
412
413 LRESULT WINAPI FileMenu_HandleMenuChar(
414         HMENU hMenu,
415         WPARAM wParam);
416
417 BOOL WINAPI FileMenu_DeleteAllItems(HMENU hMenu);
418
419 BOOL WINAPI FileMenu_DeleteItemByCmd(
420         HMENU hMenu,
421         UINT uID);
422
423 BOOL WINAPI FileMenu_DeleteItemByIndex(
424         HMENU hMenu,
425         UINT uPos);
426
427 BOOL WINAPI FileMenu_DeleteMenuItemByFirstID(
428         HMENU hMenu,
429         UINT uID);
430
431 BOOL WINAPI FileMenu_DeleteSeparator(HMENU hMenu);
432
433 BOOL WINAPI FileMenu_EnableItemByCmd(
434         HMENU hMenu,
435         UINT uID,
436         BOOL bEnable);
437
438 DWORD WINAPI FileMenu_GetItemExtent(
439         HMENU hMenu,
440         UINT uPos);
441
442 int WINAPI FileMenu_AppendFilesForPidl(
443         HMENU hMenu,
444         LPCITEMIDLIST pidl,
445         BOOL bAddSeparator);
446
447 int WINAPI FileMenu_AddFilesForPidl(
448         HMENU hMenu,
449         UINT uReserved,
450         UINT uID,
451         LPCITEMIDLIST pidl,
452         UINT uFlags,
453         UINT uEnumFlags,
454         LPFNFMCALLBACK lpfnCallback);
455
456 /****************************************************************************
457  * Drag And Drop Routines
458  */
459 HRESULT WINAPI SHLoadOLE(DWORD dwFlags);
460
461 HRESULT WINAPI SHRegisterDragDrop(
462         HWND hWnd,
463         LPDROPTARGET lpDropTarget);
464
465 HRESULT WINAPI SHRevokeDragDrop(HWND hWnd);
466
467 HRESULT WINAPI SHDoDragDrop(
468         HWND hWnd,
469         LPDATAOBJECT lpDataObject,
470         LPDROPSOURCE lpDropSource,
471         DWORD dwOKEffect,
472         LPDWORD pdwEffect);
473
474 BOOL WINAPI DAD_DragEnter(HWND hWnd);
475
476 BOOL WINAPI DAD_DragEnterEx(
477         HWND hWnd,
478         POINT pt);
479
480 BOOL WINAPI DAD_DragMove(POINT pt);
481
482 /* DAD_AutoScroll return values */
483 #define DAD_SCROLL_UP    1
484 #define DAD_SCROLL_DOWN  2
485 #define DAD_SCROLL_LEFT  4
486 #define DAD_SCROLL_RIGHT 8
487
488 /* DAD_AutoScroll sample structure */
489 typedef struct
490 {
491         DWORD  dwCount;
492         DWORD  dwLastTime;
493         BOOL   bWrapped;
494         POINT  aptPositions[3];
495         DWORD  adwTimes[3];
496 } SCROLLSAMPLES, *LPSCROLLSAMPLES;
497
498 DWORD WINAPI DAD_AutoScroll(HWND hWnd,
499         LPSCROLLSAMPLES lpSamples,
500         LPPOINT lppt);
501
502 BOOL WINAPI DAD_DragLeave();
503
504 BOOL WINAPI DAD_SetDragImageFromListView(
505         HWND hWnd,
506         POINT pt);
507
508 BOOL WINAPI DAD_SetDragImage(
509         HIMAGELIST himlTrack,
510         LPPOINT lppt);
511
512 BOOL WINAPI DAD_ShowDragImage(BOOL bShow);
513
514 HRESULT WINAPI SHCreateStdEnumFmtEtc(
515         DWORD cFormats,
516         const FORMATETC *lpFormats,
517         LPENUMFORMATETC *ppenumFormatetc);
518
519 HRESULT WINAPI CIDLData_CreateFromIDArray(
520         LPCITEMIDLIST pidlFolder,
521         DWORD cpidlFiles,
522         LPCITEMIDLIST *lppidlFiles,
523         LPDATAOBJECT *ppdataObject);
524
525 /****************************************************************************
526  * Path Manipulation Routines
527  */
528
529 BOOL WINAPI PathAppendAW(LPVOID lpszPath1, LPCVOID lpszPath2);
530
531 LPVOID WINAPI PathCombineAW(LPVOID szDest, LPCVOID lpszDir, LPCVOID lpszFile);
532
533 LPVOID  WINAPI PathAddBackslashAW(LPVOID path);
534
535 LPVOID WINAPI PathBuildRootAW(LPVOID lpszPath, int drive);
536
537 LPVOID WINAPI PathFindExtensionAW(LPCVOID path);
538
539 LPVOID WINAPI PathFindFileNameAW(LPCVOID path);
540
541 LPVOID WINAPI PathGetExtensionAW(LPCVOID lpszPath,  DWORD void1, DWORD void2);
542
543 LPVOID WINAPI PathGetArgsAW(LPVOID lpszPath);
544
545 BOOL WINAPI PathRemoveFileSpecAW(LPVOID lpszPath);
546
547 void WINAPI PathRemoveBlanksAW(LPVOID lpszPath);
548
549 VOID  WINAPI PathQuoteSpacesAW(LPVOID path);
550
551 void WINAPI PathUnquoteSpacesAW(LPVOID lpszPath);
552
553 BOOL WINAPI PathIsUNCAW(LPCVOID lpszPath);
554
555 BOOL WINAPI PathIsRelativeAW(LPCVOID lpszPath);
556
557 BOOL WINAPI PathIsRootAW(LPCVOID x);
558
559 BOOL WINAPI PathIsExeAW(LPCVOID lpszPath);
560
561 BOOL WINAPI PathIsDirectoryAW(LPCVOID lpszPath);
562
563 BOOL WINAPI PathFileExistsAW(LPCVOID lpszPath);
564
565 BOOL WINAPI PathMatchSpecAW(LPVOID lpszPath, LPVOID lpszSpec);
566
567 BOOL WINAPI PathMakeUniqueNameAW(
568         LPVOID lpszBuffer,
569         DWORD dwBuffSize,
570         LPCVOID lpszShortName,
571         LPCVOID lpszLongName,
572         LPCVOID lpszPathName);
573
574 BOOL WINAPI PathYetAnotherMakeUniqueName(
575         LPWSTR lpszBuffer,
576         LPCWSTR lpszPathName,
577         LPCWSTR lpszShortName,
578         LPCWSTR lpszLongName);
579
580 /* PathCleanupSpec return values */
581 #define PCS_REPLACEDCHARS  0x00000001
582 #define PCS_REMOVEDCHARS   0x00000002
583 #define PCS_SHORTENED      0x00000004
584 #define PCS_PATHTOOLONG    0x80000008
585
586 DWORD WINAPI PathCleanupSpecAW(LPCVOID lpszPath, LPVOID lpszFile);
587
588 BOOL WINAPI PathQualifyA(LPCSTR path);
589 BOOL WINAPI PathQualifyW(LPCWSTR path);
590 #define PathQualify WINELIB_NAME_AW(PathQualify)
591 BOOL  WINAPI PathQualifyAW(LPCVOID path);
592
593
594 /* PathResolve flags */
595 #define PRF_CHECKEXISTANCE  0x01
596 #define PRF_EXECUTABLE      0x02
597 #define PRF_QUALIFYONPATH   0x04
598 #define PRF_WINDOWS31       0x08
599
600 BOOL WINAPI PathResolveAW(LPVOID lpszPath, LPCVOID *alpszPaths, DWORD dwFlags);
601
602 VOID WINAPI PathSetDlgItemPathAW(HWND hDlg, int nIDDlgItem, LPCVOID lpszPath);
603
604 /* PathProcessCommand flags */
605 #define PPCF_QUOTEPATH        0x01 /* implies PPCF_INCLUDEARGS */
606 #define PPCF_INCLUDEARGS      0x02
607 #define PPCF_NODIRECTORIES    0x10
608 #define PPCF_DONTRESOLVE      0x20
609 #define PPCF_PATHISRELATIVE   0x40
610
611 HRESULT WINAPI PathProcessCommandAW(LPCVOID lpszPath, LPVOID lpszBuff,
612                                 DWORD dwBuffSize, DWORD dwFlags);
613
614 void WINAPI PathStripPathAW(LPVOID lpszPath);
615
616 BOOL WINAPI PathStripToRootAW(LPVOID lpszPath);
617
618 void WINAPI PathRemoveArgsAW(LPVOID lpszPath);
619
620 void WINAPI PathRemoveExtensionAW(LPVOID lpszPath);
621
622 int WINAPI PathParseIconLocationAW(LPVOID lpszPath);
623
624 BOOL WINAPI PathIsSameRootAW(LPCVOID lpszPath1, LPCVOID lpszPath2);
625
626 BOOL WINAPI PathFindOnPathAW(LPVOID sFile, LPCVOID sOtherDirs);
627
628 /****************************************************************************
629  * Shell Namespace Routines
630  */
631
632 /* SHCreateShellFolderViewEx callback function */
633 typedef HRESULT (CALLBACK *LPFNSFVCALLBACK)(
634         DWORD dwUser,
635         LPSHELLFOLDER pshf,
636         HWND hWnd,
637         UINT uMsg,
638         WPARAM wParam,
639         LPARAM lParam);
640
641 /* SHCreateShellFolderViewEx structure */
642 typedef struct
643 {
644   DWORD            dwSize;
645   LPSHELLFOLDER    pshf;
646   DWORD            dwUser;
647   LPCITEMIDLIST    pidlFolder;
648   DWORD            dwEventId;
649   LPFNSFVCALLBACK  lpfnCallback;
650   UINT             uViewMode;
651 } SHELLFOLDERVIEWINFO, * LPSHELLFOLDERVIEWINFO;
652 typedef const SHELLFOLDERVIEWINFO * LPCSHELLFOLDERVIEWINFO;
653
654 HRESULT WINAPI SHCreateShellFolderViewEx(
655         LPCSHELLFOLDERVIEWINFO pshfvi,
656         LPSHELLVIEW *ppshv);
657
658 /* SHCreateShellFolderViewEx callback messages */
659 #define SFVCB_ADDTOMENU           0x0001
660 #define SFVCB_INVOKECOMMAND       0x0002
661 #define SFVCB_GETMENUHELP         0x0003
662 #define SFVCB_GETTOOLBARTIP       0x0004
663 #define SFVCB_GETTOOLBARINFO      0x0005
664 #define SFVCB_ADDTOOLBARITEMS     0x0006
665 #define SFVCB_INITMENUPOPUP       0x0007
666 #define SFVCB_SELECTIONCHANGED    0x0008
667 #define SFVCB_DRAWMENUITEM        0x0009
668 #define SFVCB_MEASUREMENUITEM     0x000A
669 #define SFVCB_EXITMENULOOP        0x000B
670 #define SFVCB_VIEWRELEASE         0x000C
671 #define SFVCB_GETNAMELENGTH       0x000D
672 #define SFVCB_CHANGENOTIFY        0x000E
673 #define SFVCB_WINDOWCREATED       0x000F
674 #define SFVCB_WINDOWCLOSING       0x0010
675 #define SFVCB_LISTREFRESHED       0x0011
676 #define SFVCB_WINDOWFOCUSED       0x0012
677 #define SFVCB_REGISTERCOPYHOOK    0x0014
678 #define SFVCB_COPYHOOKCALLBACK    0x0015
679 #define SFVCB_GETDETAILSOF        0x0017
680 #define SFVCB_COLUMNCLICK         0x0018
681 #define SFVCB_GETCHANGENOTIFYPIDL 0x0019
682 #define SFVCB_GETESTIMATEDCOUNT   0x001A
683 #define SFVCB_ADJUSTVIEWMODE      0x001B
684 #define SFVCB_REMOVEFROMMENU      0x001C
685 #define SFVCB_ADDINGOBJECT        0x001D
686 #define SFVCB_REMOVINGOBJECT      0x001E
687 #define SFVCB_UPDATESTATUSBAR     0x001F
688 #define SFVCB_ISSLOWREFRESH       0x0020
689 #define SFVCB_GETCOMMANDDIR       0x0021
690 #define SFVCB_GETCOLUMNSTREAM     0x0022
691 #define SFVCB_CANSELECTALL        0x0023
692 #define SFVCB_DRAGSUCCEEDED       0x0024
693 #define SFVCB_ISSTRICTREFRESH     0x0025
694 #define SFVCB_ISCHILDOBJECT       0x0026
695
696 /* Generic structure used by several messages */
697 typedef struct
698 {
699   DWORD          dwReserved;
700   DWORD          dwReserved2;
701   LPCITEMIDLIST  pidl;
702   LPDWORD        lpdwUser;
703 } SFVCBINFO, * LPSFVCBINFO;
704 typedef const SFVCBINFO * LPCSFVCBINFO;
705
706 /* SFVCB_ADDTOMENU structure */
707 typedef struct
708 {
709   HMENU  hMenu;
710   UINT   indexMenu;
711   UINT   idCmdFirst;
712   UINT   idCmdLast;
713 } SFVMENUINFO, * LPSFVMENUINFO;
714
715 /* SFVCB_GETTOOLBARINFO structure */
716 typedef struct
717 {
718   UINT  nButtons;
719   UINT  uFlags;
720 } SFVTOOLBARINFO, * LPSFVTOOLBARINFO;
721
722 /* SFVTOOLBARINFO flags */
723 typedef enum
724 {
725   SFVTI_ADDTOEND   = 0,
726   SFVTI_ADDTOFRONT = 1,
727   SFVTI_OVERWRITE  = 2
728 } SFVTIF;
729
730 /* SFVCB_SELECTIONCHANGED structure */
731 typedef struct
732 {
733   UINT           uOldState;
734   UINT           uNewState;
735   LPCITEMIDLIST  pidl;
736   LPDWORD        lpdwUser;
737 } SFVSELECTSTATE, * LPSFVSELECTSTATE;
738 typedef const SFVSELECTSTATE * LPCSFVSELECTSTATE;
739
740 /* SFVCB_COPYHOOKCALLBACK structure */
741 typedef struct
742 {
743   HWND    hwnd;
744   UINT    wFunc;
745   UINT    wFlags;
746   LPCSTR  pszSrcFile;
747   DWORD   dwSrcAttribs;
748   LPCSTR  pszDestFile;
749   DWORD   dwDestAttribs;
750 } SFVCOPYHOOKINFO, * LPSFVCOPYHOOKINFO;
751 typedef const SFVCOPYHOOKINFO * LPCSFVCOPYHOOKINFO;
752
753 /* SFVCB_GETDETAILSOF structure */
754 typedef struct
755 {
756   LPCITEMIDLIST  pidl;
757   int            fmt;
758   int            cx;
759   STRRET         lpText;
760 } SFVCOLUMNINFO, * LPSFVCOLUMNINFO;
761
762 int WINAPI SHShellFolderView_Message(
763         HWND hwndCabinet,
764         DWORD dwMessage,
765         DWORD dwParam);
766
767 /* SHShellFolderView_Message messages */
768 #define SFVM_REARRANGE          0x0001
769 #define SFVM_GETARRANGECOLUMN   0x0002
770 #define SFVM_ADDOBJECT          0x0003
771 #define SFVM_GETITEMCOUNT       0x0004
772 #define SFVM_GETITEMPIDL        0x0005
773 #define SFVM_REMOVEOBJECT       0x0006
774 #define SFVM_UPDATEOBJECT       0x0007
775 #define SFVM_SETREDRAW          0x0008
776 #define SFVM_GETSELECTEDOBJECTS 0x0009
777 #define SFVM_ISDROPONSOURCE     0x000A
778 #define SFVM_MOVEICONS          0x000B
779 #define SFVM_GETDRAGPOINT       0x000C
780 #define SFVM_GETDROPPOINT       0x000D
781 #define SFVM_SETOBJECTPOS       0x000E
782 #define SFVM_ISDROPONBACKGROUND 0x000F
783 #define SFVM_CUTOBJECTS         0x0010
784 #define SFVM_TOGGLEAUTOARRANGE  0x0011
785 #define SFVM_LINEUPICONS        0x0012
786 #define SFVM_GETAUTOARRANGE     0x0013
787 #define SFVM_GETSELECTEDCOUNT   0x0014
788 #define SFVM_GETITEMSPACING     0x0015
789 #define SFVM_REFRESHOBJECT      0x0016
790 #define SFVM_SETCLIPBOARDPOINTS 0x0017
791
792 /****************************************************************************
793  * Misc Stuff
794  */
795
796 /* SHWaitForFileToOpen flags */
797 #define SHWFF_ADD     0x01
798 #define SHWFF_REMOVE  0x02
799 #define SHWFF_WAIT    0x04
800
801 BOOL WINAPI SHWaitForFileToOpen(
802         LPCITEMIDLIST pidl,
803         DWORD dwFlags,
804         DWORD dwTimeout);
805
806 WORD WINAPI ArrangeWindows(
807         HWND hwndParent,
808         DWORD dwReserved,
809         LPCRECT lpRect,
810         WORD cKids,
811         CONST HWND * lpKids);
812
813 /* RegisterShellHook types */
814 #define RSH_DEREGISTER        0
815 #define RSH_REGISTER          1
816 #define RSH_REGISTER_PROGMAN  2
817 #define RSH_REGISTER_TASKMAN  3
818
819 BOOL WINAPI RegisterShellHook(
820         HWND hWnd,
821         DWORD dwType);
822
823 /* SHCreateDefClassObject callback function */
824 typedef HRESULT (CALLBACK *LPFNCDCOCALLBACK)(
825         LPUNKNOWN pUnkOuter,
826         REFIID riidObject,
827         LPVOID *ppvObject);
828
829 HRESULT WINAPI SHCreateDefClassObject(
830         REFIID riidFactory,
831         LPVOID *ppvFactory,
832         LPFNCDCOCALLBACK lpfnCallback,
833         LPDWORD lpdwUsage,
834         REFIID riidObject);
835
836 DWORD WINAPI SHCLSIDFromStringA (LPCSTR clsid, CLSID *id);
837 DWORD WINAPI SHCLSIDFromStringW (LPCWSTR clsid, CLSID *id);
838
839 void WINAPI SHFreeUnusedLibraries();
840
841 /* SHCreateLinks flags */
842 #define SHCLF_PREFIXNAME       0x01
843 #define SHCLF_CREATEONDESKTOP  0x02
844
845 HRESULT WINAPI SHCreateLinks(
846         HWND hWnd,
847         LPCSTR lpszDir,
848         LPDATAOBJECT lpDataObject,
849         UINT uFlags,
850         LPITEMIDLIST *lppidlLinks);
851
852 /* SHGetNewLinkInfo flags */
853 #define SHGNLI_PIDL        0x01
854 #define SHGNLI_PREFIXNAME  0x02
855 #define SHGNLI_NOUNIQUE    0x04
856
857 BOOL WINAPI SHGetNewLinkInfoA(
858         LPCSTR pszLinkTo,
859         LPCSTR pszDir,
860         LPSTR pszName,
861         BOOL *pfMustCopy,
862         UINT uFlags);
863
864 BOOL WINAPI SHGetNewLinkInfoW(
865         LPCWSTR pszLinkTo,
866         LPCWSTR pszDir,
867         LPWSTR pszName,
868         BOOL *pfMustCopy,
869         UINT uFlags);
870 #define SHGetNewLinkInfo WINELIB_NAME_AW(SHGetNewLinkInfo)
871
872 DWORD WINAPI CheckEscapesA(LPSTR string, DWORD len);
873 DWORD WINAPI CheckEscapesW(LPWSTR string, DWORD len);
874
875 /* policy functions */
876 BOOL WINAPI SHInitRestricted(LPCVOID unused, LPCVOID inpRegKey);
877
878 /* cabinet functions */
879
880 #include "pshpack1.h"
881
882 typedef struct {
883     WORD cLength;
884     WORD nVersion;
885     BOOL fFullPathTitle:1;
886     BOOL fSaveLocalView:1;
887     BOOL fNotShell:1;
888     BOOL fSimpleDefault:1;
889     BOOL fDontShowDescBar:1;
890     BOOL fNewWindowMode:1;
891     BOOL fShowCompColor:1;
892     BOOL fDontPrettyNames:1;
893     BOOL fAdminsCreateCommonGroups:1;
894     UINT fUnusedFlags:7;
895     UINT fMenuEnumFilter;
896 } CABINETSTATE;
897
898 #include "poppack.h"
899
900 BOOL WINAPI ReadCabinetState(CABINETSTATE *, int);
901 BOOL WINAPI WriteCabinetState(CABINETSTATE *);
902
903 #ifdef __cplusplus
904 } /* extern "C" */
905 #endif /* defined(__cplusplus) */
906
907 #endif /* __WINE_UNDOCSHELL_H */