Fixed header dependencies to be fully compatible with the Windows
[wine/multimedia.git] / dlls / shell32 / undocshell.h
blob079c9fa9343e0479667914a37b5726a089194741
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 typedef struct
153 LPITEMIDLIST pidlPath;
154 BOOL bWatchSubtree;
155 } NOTIFYREGISTER, *LPNOTIFYREGISTER;
157 typedef const LPNOTIFYREGISTER LPCNOTIFYREGISTER;
159 typedef struct
161 USHORT cb;
162 DWORD dwItem1;
163 DWORD dwItem2;
164 } DWORDITEMID;
166 HANDLE WINAPI SHChangeNotifyRegister(
167 HWND hwnd,
168 LONG dwFlags,
169 LONG wEventMask,
170 UINT uMsg,
171 int cItems,
172 LPNOTIFYREGISTER lpItems);
174 BOOL WINAPI SHChangeNotifyDeregister(HANDLE hNotify);
176 HANDLE WINAPI SHChangeNotification_Lock(
177 HANDLE hMemoryMap,
178 DWORD dwProcessId,
179 LPCITEMIDLIST **lppidls,
180 LPLONG lpwEventId);
182 BOOL WINAPI SHChangeNotification_Unlock(HANDLE hLock);
184 /****************************************************************************
185 * Shell Common Dialogs
188 BOOL WINAPI PickIconDlg(
189 HWND hwndOwner,
190 LPSTR lpstrFile,
191 DWORD nMaxFile,
192 LPDWORD lpdwIconIndex);
194 /* RunFileDlg flags */
195 #define RFF_NOBROWSE 0x01
196 #define RFF_NODEFAULT 0x02
197 #define RFF_CALCDIRECTORY 0x04
198 #define RFF_NOLABEL 0x08
199 #define RFF_NOSEPARATEMEM 0x20 /* NT only */
201 /* RunFileFlg notification structure */
202 typedef struct
204 NMHDR hdr;
205 LPCSTR lpFile;
206 LPCSTR lpDirectory;
207 int nShow;
208 } NM_RUNFILEDLG, * LPNM_RUNFILEDLG;
210 /* RunFileDlg notification return values */
211 #define RF_OK 0x00
212 #define RF_CANCEL 0x01
213 #define RF_RETRY 0x02
215 void WINAPI RunFileDlg(
216 HWND hwndOwner,
217 HICON hIcon,
218 LPCSTR lpstrDirectory,
219 LPCSTR lpstrTitle,
220 LPCSTR lpstrDescription,
221 UINT uFlags);
223 void WINAPI ExitWindowsDialog(HWND hwndOwner);
225 int WINAPI RestartDialog(
226 HWND hwndOwner,
227 LPCSTR lpstrReason,
228 UINT uFlags);
230 BOOL WINAPI GetFileNameFromBrowse(
231 HWND hwndOwner,
232 LPSTR lpstrFile,
233 DWORD nMaxFile,
234 LPCSTR lpstrInitialDir,
235 LPCSTR lpstrDefExt,
236 LPCSTR lpstrFilter,
237 LPCSTR lpstrTitle);
239 BOOL WINAPI SHFindFiles(
240 LPCITEMIDLIST pidlRoot,
241 LPCITEMIDLIST pidlSavedSearch);
243 BOOL WINAPI SHFindComputer(
244 LPCITEMIDLIST pidlRoot,
245 LPCITEMIDLIST pidlSavedSearch);
247 /* SHObjectProperties flags */
248 #define OPF_PRINTERNAME 0x01
249 #define OPF_PATHNAME 0x02
251 BOOL WINAPI SHObjectProperties(
252 HWND hwndOwner,
253 UINT uFlags,
254 LPCSTR lpstrName,
255 LPCSTR lpstrParameters);
257 void WINAPI SHHandleDiskFull(HWND hwndOwner,
258 UINT uDrive);
260 int WINAPI SHOutOfMemoryMessageBox(
261 HWND hwndOwner,
262 LPCSTR lpCaption,
263 UINT uType);
265 DWORD WINAPI SHNetConnectionDialog(
266 HWND hwndOwner,
267 LPCSTR lpstrRemoteName,
268 DWORD dwType);
270 int WINAPIV ShellMessageBoxA(
271 HINSTANCE hInstance,
272 HWND hWnd,
273 LPCSTR lpText,
274 LPCSTR lpCaption,
275 UINT uType,
276 ...);
278 int WINAPIV ShellMessageBoxW(
279 HINSTANCE hInstance,
280 HWND hWnd,
281 LPCWSTR lpText,
282 LPCWSTR lpCaption,
283 UINT uType,
284 ...);
286 #define ShellMessageBox WINELIB_NAME_AW(ShellMessageBox)
288 /****************************************************************************
289 * Memory Routines
292 LPVOID WINAPI SHAlloc(ULONG cb);
293 void WINAPI SHFree(LPVOID pv);
295 HANDLE WINAPI SHAllocShared(
296 LPVOID pv,
297 ULONG cb,
298 DWORD pid);
300 BOOL WINAPI SHFreeShared(
301 HANDLE hMem,
302 DWORD pid);
304 LPVOID WINAPI SHLockShared(
305 HANDLE hMem,
306 DWORD pid);
308 BOOL WINAPI SHUnlockShared(LPVOID pv);
310 /****************************************************************************
311 * Cabinet Window Messages
314 #define CWM_SETPATH (WM_USER + 2)
315 #define CWM_WANTIDLE (WM_USER + 3)
316 #define CWM_GETSETCURRENTINFO (WM_USER + 4)
317 #define CWM_SELECTITEM (WM_USER + 5)
318 #define CWM_SELECTITEMSTR (WM_USER + 6)
319 #define CWM_GETISHELLBROWSER (WM_USER + 7)
320 #define CWM_TESTPATH (WM_USER + 9)
321 #define CWM_STATECHANGE (WM_USER + 10)
322 #define CWM_GETPATH (WM_USER + 12)
324 /* CWM_TESTPATH types */
325 #define CWTP_ISEQUAL 0
326 #define CWTP_ISCHILD 1
328 /* CWM_TESTPATH structure */
329 typedef struct
331 DWORD dwType;
332 ITEMIDLIST idl;
333 } CWTESTPATHSTRUCT,* LPCWTESTPATHSTRUCT;
335 /****************************************************************************
336 * System Imagelist Routines
339 int WINAPI Shell_GetCachedImageIndex(
340 LPCSTR lpszFileName,
341 UINT nIconIndex,
342 BOOL bSimulateDoc);
344 BOOL WINAPI Shell_GetImageLists(
345 HIMAGELIST *lphimlLarge,
346 HIMAGELIST *lphimlSmall);
348 HICON WINAPI SHGetFileIcon(
349 DWORD dwReserved,
350 LPCSTR lpszPath,
351 DWORD dwFileAttributes,
352 UINT uFlags);
354 int WINAPI SHMapPIDLToSystemImageListIndex(
355 LPSHELLFOLDER psf,
356 LPCITEMIDLIST pidl,
357 UINT * pOpenIndex);
359 BOOL WINAPI FileIconInit(BOOL bFullInit);
361 /****************************************************************************
362 * File Menu Routines
364 /* FileMenu_Create nSelHeight constants */
365 #define FM_DEFAULT_SELHEIGHT -1
366 #define FM_FULL_SELHEIGHT 0
368 /* FileMenu_Create flags */
369 #define FMF_SMALL_ICONS 0x00
370 #define FMF_LARGE_ICONS 0x08
371 #define FMF_NO_COLUMN_BREAK 0x10
373 HMENU WINAPI FileMenu_Create(
374 COLORREF crBorderColor,
375 int nBorderWidth,
376 HBITMAP hBorderBmp,
377 int nSelHeight,
378 UINT uFlags);
380 void WINAPI FileMenu_Destroy(HMENU hMenu);
382 /* FileMenu_AppendItem constants */
383 #define FM_SEPARATOR (LPCSTR)1
384 #define FM_BLANK_ICON -1
385 #define FM_DEFAULT_HEIGHT 0
387 BOOL WINAPI FileMenu_AppendItem(
388 HMENU hMenu,
389 LPCSTR lpszText,
390 UINT uID,
391 int iIcon,
392 HMENU hMenuPopup,
393 int nItemHeight);
395 /* FileMenu_InsertUsingPidl flags */
396 #define FMF_NO_EMPTY_ITEM 0x01
397 #define FMF_NO_PROGRAM_GROUPS 0x04
399 /* FileMenu_InsertUsingPidl callback function */
400 typedef void (CALLBACK *LPFNFMCALLBACK)(LPCITEMIDLIST pidlFolder, LPCITEMIDLIST pidlFile);
402 int WINAPI FileMenu_InsertUsingPidl(
403 HMENU hMenu,
404 UINT uID,
405 LPCITEMIDLIST pidl,
406 UINT uFlags,
407 UINT uEnumFlags,
408 LPFNFMCALLBACK lpfnCallback);
410 int WINAPI FileMenu_ReplaceUsingPidl(
411 HMENU hMenu,
412 UINT uID,
413 LPCITEMIDLIST pidl,
414 UINT uEnumFlags,
415 LPFNFMCALLBACK lpfnCallback);
417 void WINAPI FileMenu_Invalidate(HMENU hMenu);
419 HMENU WINAPI FileMenu_FindSubMenuByPidl(
420 HMENU hMenu,
421 LPCITEMIDLIST pidl);
423 BOOL WINAPI FileMenu_TrackPopupMenuEx(
424 HMENU hMenu,
425 UINT uFlags,
426 int x,
427 int y,
428 HWND hWnd,
429 LPTPMPARAMS lptpm);
431 BOOL WINAPI FileMenu_GetLastSelectedItemPidls(
432 UINT uReserved,
433 LPCITEMIDLIST *ppidlFolder,
434 LPCITEMIDLIST *ppidlItem);
436 LRESULT WINAPI FileMenu_MeasureItem(
437 HWND hWnd,
438 LPMEASUREITEMSTRUCT lpmis);
440 LRESULT WINAPI FileMenu_DrawItem(
441 HWND hWnd,
442 LPDRAWITEMSTRUCT lpdis);
444 BOOL WINAPI FileMenu_InitMenuPopup(HMENU hMenu);
446 void WINAPI FileMenu_AbortInitMenu(void);
448 LRESULT WINAPI FileMenu_HandleMenuChar(
449 HMENU hMenu,
450 WPARAM wParam);
452 BOOL WINAPI FileMenu_DeleteAllItems(HMENU hMenu);
454 BOOL WINAPI FileMenu_DeleteItemByCmd(
455 HMENU hMenu,
456 UINT uID);
458 BOOL WINAPI FileMenu_DeleteItemByIndex(
459 HMENU hMenu,
460 UINT uPos);
462 BOOL WINAPI FileMenu_DeleteMenuItemByFirstID(
463 HMENU hMenu,
464 UINT uID);
466 BOOL WINAPI FileMenu_DeleteSeparator(HMENU hMenu);
468 BOOL WINAPI FileMenu_EnableItemByCmd(
469 HMENU hMenu,
470 UINT uID,
471 BOOL bEnable);
473 DWORD WINAPI FileMenu_GetItemExtent(
474 HMENU hMenu,
475 UINT uPos);
477 int WINAPI FileMenu_AppendFilesForPidl(
478 HMENU hMenu,
479 LPCITEMIDLIST pidl,
480 BOOL bAddSeparator);
482 int WINAPI FileMenu_AddFilesForPidl(
483 HMENU hMenu,
484 UINT uReserved,
485 UINT uID,
486 LPCITEMIDLIST pidl,
487 UINT uFlags,
488 UINT uEnumFlags,
489 LPFNFMCALLBACK lpfnCallback);
491 /****************************************************************************
492 * Drag And Drop Routines
494 HRESULT WINAPI SHLoadOLE(DWORD dwFlags);
496 HRESULT WINAPI SHRegisterDragDrop(
497 HWND hWnd,
498 LPDROPTARGET lpDropTarget);
500 HRESULT WINAPI SHRevokeDragDrop(HWND hWnd);
502 HRESULT WINAPI SHDoDragDrop(
503 HWND hWnd,
504 LPDATAOBJECT lpDataObject,
505 LPDROPSOURCE lpDropSource,
506 DWORD dwOKEffect,
507 LPDWORD pdwEffect);
509 BOOL WINAPI DAD_DragEnter(HWND hWnd);
511 BOOL WINAPI DAD_DragEnterEx(
512 HWND hWnd,
513 POINT pt);
515 BOOL WINAPI DAD_DragMove(POINT pt);
517 /* DAD_AutoScroll return values */
518 #define DAD_SCROLL_UP 1
519 #define DAD_SCROLL_DOWN 2
520 #define DAD_SCROLL_LEFT 4
521 #define DAD_SCROLL_RIGHT 8
523 /* DAD_AutoScroll sample structure */
524 typedef struct
526 DWORD dwCount;
527 DWORD dwLastTime;
528 BOOL bWrapped;
529 POINT aptPositions[3];
530 DWORD adwTimes[3];
531 } SCROLLSAMPLES, *LPSCROLLSAMPLES;
533 DWORD WINAPI DAD_AutoScroll(HWND hWnd,
534 LPSCROLLSAMPLES lpSamples,
535 LPPOINT lppt);
537 BOOL WINAPI DAD_DragLeave();
539 BOOL WINAPI DAD_SetDragImageFromListView(
540 HWND hWnd,
541 POINT pt);
543 BOOL WINAPI DAD_SetDragImage(
544 HIMAGELIST himlTrack,
545 LPPOINT lppt);
547 BOOL WINAPI DAD_ShowDragImage(BOOL bShow);
549 HRESULT WINAPI SHCreateStdEnumFmtEtc(
550 DWORD cFormats,
551 const FORMATETC *lpFormats,
552 LPENUMFORMATETC *ppenumFormatetc);
554 HRESULT WINAPI CIDLData_CreateFromIDArray(
555 LPCITEMIDLIST pidlFolder,
556 DWORD cpidlFiles,
557 LPCITEMIDLIST *lppidlFiles,
558 LPDATAOBJECT *ppdataObject);
560 /****************************************************************************
561 * Path Manipulation Routines
564 BOOL WINAPI PathAppendAW(LPVOID lpszPath1, LPCVOID lpszPath2);
566 LPVOID WINAPI PathCombineAW(LPVOID szDest, LPCVOID lpszDir, LPCVOID lpszFile);
568 LPVOID WINAPI PathAddBackslashAW(LPVOID path);
570 LPVOID WINAPI PathBuildRootAW(LPVOID lpszPath, int drive);
572 LPVOID WINAPI PathFindExtensionAW(LPCVOID path);
574 LPVOID WINAPI PathFindFileNameAW(LPCVOID path);
576 LPVOID WINAPI PathGetExtensionAW(LPCVOID lpszPath, DWORD void1, DWORD void2);
578 LPVOID WINAPI PathGetArgsAW(LPVOID lpszPath);
580 BOOL WINAPI PathRemoveFileSpecAW(LPVOID lpszPath);
582 LPVOID WINAPI PathGetShortPathAW(LPVOID lpszPath);
584 void WINAPI PathRemoveBlanksAW(LPVOID lpszPath);
586 VOID WINAPI PathQuoteSpacesAW(LPVOID path);
588 void WINAPI PathUnquoteSpacesAW(LPVOID lpszPath);
590 BOOL WINAPI PathIsUNCAW(LPCVOID lpszPath);
592 BOOL WINAPI PathIsRelativeAW(LPCVOID lpszPath);
594 BOOL WINAPI PathIsRootAW(LPCVOID x);
596 BOOL WINAPI PathIsExeAW(LPCVOID lpszPath);
598 BOOL WINAPI PathIsDirectoryAW(LPCVOID lpszPath);
600 BOOL WINAPI PathFileExistsAW(LPCVOID lpszPath);
602 BOOL WINAPI PathMatchSpecAW(LPVOID lpszPath, LPVOID lpszSpec);
604 BOOL WINAPI PathMakeUniqueNameAW(
605 LPVOID lpszBuffer,
606 DWORD dwBuffSize,
607 LPCVOID lpszShortName,
608 LPCVOID lpszLongName,
609 LPCVOID lpszPathName);
611 BOOL WINAPI PathYetAnotherMakeUniqueNameA(
612 LPSTR lpszBuffer,
613 LPCSTR lpszPathName,
614 LPCSTR lpszShortName,
615 LPCSTR lpszLongName);
617 /* PathCleanupSpec return values */
618 #define PCS_REPLACEDCHARS 0x00000001
619 #define PCS_REMOVEDCHARS 0x00000002
620 #define PCS_SHORTENED 0x00000004
621 #define PCS_PATHTOOLONG 0x80000008
623 DWORD WINAPI PathCleanupSpecAW(LPCVOID lpszPath, LPVOID lpszFile);
625 BOOL WINAPI PathQualifyA(LPCSTR path);
626 BOOL WINAPI PathQualifyW(LPCWSTR path);
627 #define PathQualify WINELIB_NAME_AW(PathQualify)
628 BOOL WINAPI PathQualifyAW(LPCVOID path);
631 /* PathResolve flags */
632 #define PRF_CHECKEXISTANCE 0x01
633 #define PRF_EXECUTABLE 0x02
634 #define PRF_QUALIFYONPATH 0x04
635 #define PRF_WINDOWS31 0x08
637 BOOL WINAPI PathResolveAW(LPVOID lpszPath, LPCVOID *alpszPaths, DWORD dwFlags);
639 VOID WINAPI PathSetDlgItemPathAW(HWND hDlg, int nIDDlgItem, LPCVOID lpszPath);
641 /* PathProcessCommand flags */
642 #define PPCF_QUOTEPATH 0x01 /* implies PPCF_INCLUDEARGS */
643 #define PPCF_INCLUDEARGS 0x02
644 #define PPCF_NODIRECTORIES 0x10
645 #define PPCF_DONTRESOLVE 0x20
646 #define PPCF_PATHISRELATIVE 0x40
648 HRESULT WINAPI PathProcessCommandAW(LPCVOID lpszPath, LPVOID lpszBuff,
649 DWORD dwBuffSize, DWORD dwFlags);
651 void WINAPI PathStripPathAW(LPVOID lpszPath);
653 BOOL WINAPI PathStripToRootAW(LPVOID lpszPath);
655 void WINAPI PathRemoveArgsAW(LPVOID lpszPath);
657 void WINAPI PathRemoveExtensionAW(LPVOID lpszPath);
659 int WINAPI PathParseIconLocationAW(LPVOID lpszPath);
661 BOOL WINAPI PathIsSameRootAW(LPCVOID lpszPath1, LPCVOID lpszPath2);
663 BOOL WINAPI PathFindOnPathAW(LPVOID sFile, LPCVOID sOtherDirs);
665 /****************************************************************************
666 * Shell Namespace Routines
669 /* SHCreateShellFolderViewEx callback function */
670 typedef HRESULT (CALLBACK *LPFNSFVCALLBACK)(
671 DWORD dwUser,
672 LPSHELLFOLDER pshf,
673 HWND hWnd,
674 UINT uMsg,
675 WPARAM wParam,
676 LPARAM lParam);
678 /* SHCreateShellFolderViewEx structure */
679 typedef struct
681 DWORD dwSize;
682 LPSHELLFOLDER pshf;
683 DWORD dwUser;
684 LPCITEMIDLIST pidlFolder;
685 DWORD dwEventId;
686 LPFNSFVCALLBACK lpfnCallback;
687 UINT uViewMode;
688 } SHELLFOLDERVIEWINFO, * LPSHELLFOLDERVIEWINFO;
689 typedef const SHELLFOLDERVIEWINFO * LPCSHELLFOLDERVIEWINFO;
691 HRESULT WINAPI SHCreateShellFolderViewEx(
692 LPCSHELLFOLDERVIEWINFO pshfvi,
693 LPSHELLVIEW *ppshv);
695 /* SHCreateShellFolderViewEx callback messages */
696 #define SFVCB_ADDTOMENU 0x0001
697 #define SFVCB_INVOKECOMMAND 0x0002
698 #define SFVCB_GETMENUHELP 0x0003
699 #define SFVCB_GETTOOLBARTIP 0x0004
700 #define SFVCB_GETTOOLBARINFO 0x0005
701 #define SFVCB_ADDTOOLBARITEMS 0x0006
702 #define SFVCB_INITMENUPOPUP 0x0007
703 #define SFVCB_SELECTIONCHANGED 0x0008
704 #define SFVCB_DRAWMENUITEM 0x0009
705 #define SFVCB_MEASUREMENUITEM 0x000A
706 #define SFVCB_EXITMENULOOP 0x000B
707 #define SFVCB_VIEWRELEASE 0x000C
708 #define SFVCB_GETNAMELENGTH 0x000D
709 #define SFVCB_CHANGENOTIFY 0x000E
710 #define SFVCB_WINDOWCREATED 0x000F
711 #define SFVCB_WINDOWCLOSING 0x0010
712 #define SFVCB_LISTREFRESHED 0x0011
713 #define SFVCB_WINDOWFOCUSED 0x0012
714 #define SFVCB_REGISTERCOPYHOOK 0x0014
715 #define SFVCB_COPYHOOKCALLBACK 0x0015
716 #define SFVCB_GETDETAILSOF 0x0017
717 #define SFVCB_COLUMNCLICK 0x0018
718 #define SFVCB_GETCHANGENOTIFYPIDL 0x0019
719 #define SFVCB_GETESTIMATEDCOUNT 0x001A
720 #define SFVCB_ADJUSTVIEWMODE 0x001B
721 #define SFVCB_REMOVEFROMMENU 0x001C
722 #define SFVCB_ADDINGOBJECT 0x001D
723 #define SFVCB_REMOVINGOBJECT 0x001E
724 #define SFVCB_UPDATESTATUSBAR 0x001F
725 #define SFVCB_ISSLOWREFRESH 0x0020
726 #define SFVCB_GETCOMMANDDIR 0x0021
727 #define SFVCB_GETCOLUMNSTREAM 0x0022
728 #define SFVCB_CANSELECTALL 0x0023
729 #define SFVCB_DRAGSUCCEEDED 0x0024
730 #define SFVCB_ISSTRICTREFRESH 0x0025
731 #define SFVCB_ISCHILDOBJECT 0x0026
733 /* Generic structure used by several messages */
734 typedef struct
736 DWORD dwReserved;
737 DWORD dwReserved2;
738 LPCITEMIDLIST pidl;
739 LPDWORD lpdwUser;
740 } SFVCBINFO, * LPSFVCBINFO;
741 typedef const SFVCBINFO * LPCSFVCBINFO;
743 /* SFVCB_ADDTOMENU structure */
744 typedef struct
746 HMENU hMenu;
747 UINT indexMenu;
748 UINT idCmdFirst;
749 UINT idCmdLast;
750 } SFVMENUINFO, * LPSFVMENUINFO;
752 /* SFVCB_GETTOOLBARINFO structure */
753 typedef struct
755 UINT nButtons;
756 UINT uFlags;
757 } SFVTOOLBARINFO, * LPSFVTOOLBARINFO;
759 /* SFVTOOLBARINFO flags */
760 typedef enum
762 SFVTI_ADDTOEND = 0,
763 SFVTI_ADDTOFRONT = 1,
764 SFVTI_OVERWRITE = 2
765 } SFVTIF;
767 /* SFVCB_SELECTIONCHANGED structure */
768 typedef struct
770 UINT uOldState;
771 UINT uNewState;
772 LPCITEMIDLIST pidl;
773 LPDWORD lpdwUser;
774 } SFVSELECTSTATE, * LPSFVSELECTSTATE;
775 typedef const SFVSELECTSTATE * LPCSFVSELECTSTATE;
777 /* SFVCB_COPYHOOKCALLBACK structure */
778 typedef struct
780 HWND hwnd;
781 UINT wFunc;
782 UINT wFlags;
783 LPCSTR pszSrcFile;
784 DWORD dwSrcAttribs;
785 LPCSTR pszDestFile;
786 DWORD dwDestAttribs;
787 } SFVCOPYHOOKINFO, * LPSFVCOPYHOOKINFO;
788 typedef const SFVCOPYHOOKINFO * LPCSFVCOPYHOOKINFO;
790 /* SFVCB_GETDETAILSOF structure */
791 typedef struct
793 LPCITEMIDLIST pidl;
794 int fmt;
795 int cx;
796 STRRET lpText;
797 } SFVCOLUMNINFO, * LPSFVCOLUMNINFO;
799 int WINAPI SHShellFolderView_Message(
800 HWND hwndCabinet,
801 DWORD dwMessage,
802 DWORD dwParam);
804 /* SHShellFolderView_Message messages */
805 #define SFVM_REARRANGE 0x0001
806 #define SFVM_GETARRANGECOLUMN 0x0002
807 #define SFVM_ADDOBJECT 0x0003
808 #define SFVM_GETITEMCOUNT 0x0004
809 #define SFVM_GETITEMPIDL 0x0005
810 #define SFVM_REMOVEOBJECT 0x0006
811 #define SFVM_UPDATEOBJECT 0x0007
812 #define SFVM_SETREDRAW 0x0008
813 #define SFVM_GETSELECTEDOBJECTS 0x0009
814 #define SFVM_ISDROPONSOURCE 0x000A
815 #define SFVM_MOVEICONS 0x000B
816 #define SFVM_GETDRAGPOINT 0x000C
817 #define SFVM_GETDROPPOINT 0x000D
818 #define SFVM_SETOBJECTPOS 0x000E
819 #define SFVM_ISDROPONBACKGROUND 0x000F
820 #define SFVM_CUTOBJECTS 0x0010
821 #define SFVM_TOGGLEAUTOARRANGE 0x0011
822 #define SFVM_LINEUPICONS 0x0012
823 #define SFVM_GETAUTOARRANGE 0x0013
824 #define SFVM_GETSELECTEDCOUNT 0x0014
825 #define SFVM_GETITEMSPACING 0x0015
826 #define SFVM_REFRESHOBJECT 0x0016
827 #define SFVM_SETCLIPBOARDPOINTS 0x0017
829 /****************************************************************************
830 * Misc Stuff
833 /* SHWaitForFileToOpen flags */
834 #define SHWFF_ADD 0x01
835 #define SHWFF_REMOVE 0x02
836 #define SHWFF_WAIT 0x04
838 BOOL WINAPI SHWaitForFileToOpen(
839 LPCITEMIDLIST pidl,
840 DWORD dwFlags,
841 DWORD dwTimeout);
843 WORD WINAPI ArrangeWindows(
844 HWND hwndParent,
845 DWORD dwReserved,
846 LPCRECT lpRect,
847 WORD cKids,
848 CONST HWND * lpKids);
850 /* RegisterShellHook types */
851 #define RSH_DEREGISTER 0
852 #define RSH_REGISTER 1
853 #define RSH_REGISTER_PROGMAN 2
854 #define RSH_REGISTER_TASKMAN 3
856 BOOL WINAPI RegisterShellHook(
857 HWND hWnd,
858 DWORD dwType);
860 /* SHCreateDefClassObject callback function */
861 typedef HRESULT (CALLBACK *LPFNCDCOCALLBACK)(
862 LPUNKNOWN pUnkOuter,
863 REFIID riidObject,
864 LPVOID *ppvObject);
866 HRESULT WINAPI SHCreateDefClassObject(
867 REFIID riidFactory,
868 LPVOID *ppvFactory,
869 LPFNCDCOCALLBACK lpfnCallback,
870 LPDWORD lpdwUsage,
871 REFIID riidObject);
873 DWORD WINAPI SHCLSIDFromStringA (LPCSTR clsid, CLSID *id);
874 DWORD WINAPI SHCLSIDFromStringW (LPWSTR clsid, CLSID *id);
876 HRESULT WINAPI SHCoCreateInstance(
877 LPCSTR lpszClsid,
878 REFCLSID rClsid,
879 LPUNKNOWN pUnkOuter,
880 REFIID riid,
881 LPVOID *ppv);
883 void WINAPI SHFreeUnusedLibraries();
885 /* SHCreateLinks flags */
886 #define SHCLF_PREFIXNAME 0x01
887 #define SHCLF_CREATEONDESKTOP 0x02
889 HRESULT WINAPI SHCreateLinks(
890 HWND hWnd,
891 LPCSTR lpszDir,
892 LPDATAOBJECT lpDataObject,
893 UINT uFlags,
894 LPITEMIDLIST *lppidlLinks);
896 /* SHGetNewLinkInfo flags */
897 #define SHGNLI_PIDL 0x01
898 #define SHGNLI_PREFIXNAME 0x02
899 #define SHGNLI_NOUNIQUE 0x04
901 BOOL WINAPI SHGetNewLinkInfoA(
902 LPCSTR pszLinkTo,
903 LPCSTR pszDir,
904 LPSTR pszName,
905 BOOL *pfMustCopy,
906 UINT uFlags);
908 BOOL WINAPI SHGetNewLinkInfoW(
909 LPCWSTR pszLinkTo,
910 LPCWSTR pszDir,
911 LPWSTR pszName,
912 BOOL *pfMustCopy,
913 UINT uFlags);
914 #define SHGetNewLinkInfo WINELIB_NAME_AW(SHGetNewLinkInfo)
916 DWORD WINAPI CheckEscapesA(LPSTR string, DWORD len);
917 DWORD WINAPI CheckEscapesW(LPWSTR string, DWORD len);
919 /* policy functions */
920 BOOL WINAPI SHInitRestricted(LPCVOID unused, LPCVOID inpRegKey);
921 DWORD WINAPI SHRestricted (DWORD policy);
923 /* cabinet functions */
925 #include "pshpack1.h"
927 typedef struct {
928 WORD cLength;
929 WORD nVersion;
930 BOOL fFullPathTitle:1;
931 BOOL fSaveLocalView:1;
932 BOOL fNotShell:1;
933 BOOL fSimpleDefault:1;
934 BOOL fDontShowDescBar:1;
935 BOOL fNewWindowMode:1;
936 BOOL fShowCompColor:1;
937 BOOL fDontPrettyNames:1;
938 BOOL fAdminsCreateCommonGroups:1;
939 UINT fUnusedFlags:7;
940 UINT fMenuEnumFilter;
941 } CABINETSTATE;
943 #include "poppack.h"
945 BOOL WINAPI ReadCabinetState(CABINETSTATE *, int);
946 BOOL WINAPI WriteCabinetState(CABINETSTATE *);
948 #ifdef __cplusplus
949 } /* extern "C" */
950 #endif /* defined(__cplusplus) */
952 #endif /* __WINE_UNDOCSHELL_H */