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