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