1 #ifndef __WINE_UNDOCSHELL_H
2 #define __WINE_UNDOCSHELL_H
10 #endif /* defined(__cplusplus) */
12 /****************************************************************************
15 LPITEMIDLIST WINAPI ILClone (LPCITEMIDLIST pidl);
16 LPITEMIDLIST WINAPI ILCloneFirst(LPCITEMIDLIST pidl);
18 LPITEMIDLIST WINAPI ILCombine(
22 DWORD WINAPI ILGetSize(LPITEMIDLIST pidl);
24 LPITEMIDLIST WINAPI ILGetNext(LPITEMIDLIST pidl);
25 LPITEMIDLIST WINAPI ILFindLastID(LPITEMIDLIST pidl);
26 BOOL WINAPI ILRemoveLastID(LPCITEMIDLIST pidl);
28 LPITEMIDLIST WINAPI ILFindChild(
32 LPITEMIDLIST WINAPI ILAppendID(
37 BOOL WINAPI ILIsEqual(
41 BOOL WINAPI ILIsParent(
42 LPCITEMIDLIST pidlParent,
43 LPCITEMIDLIST pidlChild,
46 BOOL WINAPI ILGetDisplayName(
50 DWORD WINAPI ILFree(LPITEMIDLIST pidl);
52 HRESULT WINAPI ILSaveToStream(
56 HRESULT WINAPI ILLoadFromStream(
60 LPITEMIDLIST WINAPI ILGlobalClone(LPCITEMIDLIST pidl);
61 void WINAPI ILGlobalFree(LPCITEMIDLIST pidl);
63 LPITEMIDLIST WINAPI SHSimpleIDListFromPathA (LPCSTR lpszPath);
64 LPITEMIDLIST WINAPI SHSimpleIDListFromPathW (LPCWSTR lpszPath);
65 LPITEMIDLIST WINAPI SHSimpleIDListFromPathAW (LPCVOID lpszPath);
67 HRESULT WINAPI SHILCreateFromPathA (
72 HRESULT WINAPI SHILCreateFromPathW (
77 HRESULT WINAPI SHILCreateFromPathAW (
82 LPITEMIDLIST WINAPI ILCreateFromPathA(LPCSTR path);
83 LPITEMIDLIST WINAPI ILCreateFromPathW(LPCWSTR path);
84 LPITEMIDLIST WINAPI ILCreateFromPathAW(LPCVOID path);
86 HRESULT WINAPI SHBindToParent(
90 LPCITEMIDLIST *ppidlLast);
95 HRESULT WINAPI StrRetToStrNA (
99 const ITEMIDLIST *pidl);
101 HRESULT WINAPI StrRetToStrNW (
105 const ITEMIDLIST *pidl);
107 HRESULT WINAPI StrRetToStrNAW (
111 const ITEMIDLIST *pidl);
114 /****************************************************************************
115 * SHChangeNotifyRegister API
117 #define SHCNF_ACCEPT_INTERRUPTS 0x0001
118 #define SHCNF_ACCEPT_NON_INTERRUPTS 0x0002
119 #define SHCNF_NO_PROXY 0x8001
123 LPCITEMIDLIST pidlPath;
125 } NOTIFYREGISTER, *LPNOTIFYREGISTER;
127 typedef const LPNOTIFYREGISTER LPCNOTIFYREGISTER;
136 HANDLE WINAPI SHChangeNotifyRegister(
142 LPCNOTIFYREGISTER lpItems);
144 BOOL WINAPI SHChangeNotifyDeregister(HANDLE hNotify);
146 HANDLE WINAPI SHChangeNotification_Lock(
149 LPCITEMIDLIST **lppidls,
152 BOOL WINAPI SHChangeNotification_Unlock(HANDLE hLock);
154 /****************************************************************************
155 * Shell Common Dialogs
158 BOOL WINAPI PickIconDlg(
162 LPDWORD lpdwIconIndex);
164 /* RunFileDlg flags */
165 #define RFF_NOBROWSE 0x01
166 #define RFF_NODEFAULT 0x02
167 #define RFF_CALCDIRECTORY 0x04
168 #define RFF_NOLABEL 0x08
169 #define RFF_NOSEPARATEMEM 0x20 /* NT only */
171 /* RunFileFlg notification structure */
178 } NM_RUNFILEDLG, * LPNM_RUNFILEDLG;
180 /* RunFileDlg notification return values */
182 #define RF_CANCEL 0x01
183 #define RF_RETRY 0x02
185 void WINAPI RunFileDlg(
188 LPCSTR lpstrDirectory,
190 LPCSTR lpstrDescription,
193 void WINAPI ExitWindowsDialog(HWND hwndOwner);
195 int WINAPI RestartDialog(
200 BOOL WINAPI GetFileNameFromBrowse(
204 LPCSTR lpstrInitialDir,
209 BOOL WINAPI SHFindFiles(
210 LPCITEMIDLIST pidlRoot,
211 LPCITEMIDLIST pidlSavedSearch);
213 BOOL WINAPI SHFindComputer(
214 LPCITEMIDLIST pidlRoot,
215 LPCITEMIDLIST pidlSavedSearch);
217 /* SHObjectProperties flags */
218 #define OPF_PRINTERNAME 0x01
219 #define OPF_PATHNAME 0x02
221 BOOL WINAPI SHObjectProperties(
225 LPCSTR lpstrParameters);
227 void WINAPI SHHandleDiskFull(HWND hwndOwner,
230 int WINAPI SHOutOfMemoryMessageBox(
235 DWORD WINAPI SHNetConnectionDialog(
237 LPCSTR lpstrRemoteName,
240 int WINAPIV ShellMessageBoxA(
248 int WINAPIV ShellMessageBoxW(
256 #define ShellMessageBox WINELIB_NAME_AW(ShellMessageBox)
258 /****************************************************************************
262 LPVOID WINAPI SHAlloc(ULONG cb);
263 void WINAPI SHFree(LPVOID pv);
265 HANDLE WINAPI SHAllocShared(
270 BOOL WINAPI SHFreeShared(
274 LPVOID WINAPI SHLockShared(
278 BOOL WINAPI SHUnlockShared(LPVOID pv);
280 /****************************************************************************
281 * Cabinet Window Messages
284 #define CWM_SETPATH (WM_USER + 2)
285 #define CWM_WANTIDLE (WM_USER + 3)
286 #define CWM_GETSETCURRENTINFO (WM_USER + 4)
287 #define CWM_SELECTITEM (WM_USER + 5)
288 #define CWM_SELECTITEMSTR (WM_USER + 6)
289 #define CWM_GETISHELLBROWSER (WM_USER + 7)
290 #define CWM_TESTPATH (WM_USER + 9)
291 #define CWM_STATECHANGE (WM_USER + 10)
292 #define CWM_GETPATH (WM_USER + 12)
294 /* CWM_TESTPATH types */
295 #define CWTP_ISEQUAL 0
296 #define CWTP_ISCHILD 1
298 /* CWM_TESTPATH structure */
303 } CWTESTPATHSTRUCT,* LPCWTESTPATHSTRUCT;
305 /****************************************************************************
306 * System Imagelist Routines
309 int WINAPI Shell_GetCachedImageIndex(
314 BOOL WINAPI Shell_GetImageLists(
315 HIMAGELIST *lphimlLarge,
316 HIMAGELIST *lphimlSmall);
318 HICON WINAPI SHGetFileIcon(
321 DWORD dwFileAttributes,
324 int WINAPI SHMapPIDLToSystemImageListIndex(
329 BOOL WINAPI FileIconInit(BOOL bFullInit);
331 /****************************************************************************
334 /* FileMenu_Create nSelHeight constants */
335 #define FM_DEFAULT_SELHEIGHT -1
336 #define FM_FULL_SELHEIGHT 0
338 /* FileMenu_Create flags */
339 #define FMF_SMALL_ICONS 0x00
340 #define FMF_LARGE_ICONS 0x08
341 #define FMF_NO_COLUMN_BREAK 0x10
343 HMENU WINAPI FileMenu_Create(
344 COLORREF crBorderColor,
350 void WINAPI FileMenu_Destroy(HMENU hMenu);
352 /* FileMenu_AppendItem constants */
353 #define FM_SEPARATOR (LPCSTR)1
354 #define FM_BLANK_ICON -1
355 #define FM_DEFAULT_HEIGHT 0
357 BOOL WINAPI FileMenu_AppendItem(
365 /* FileMenu_InsertUsingPidl flags */
366 #define FMF_NO_EMPTY_ITEM 0x01
367 #define FMF_NO_PROGRAM_GROUPS 0x04
369 /* FileMenu_InsertUsingPidl callback function */
370 typedef void CALLBACK (*LPFNFMCALLBACK)(LPCITEMIDLIST pidlFolder, LPCITEMIDLIST pidlFile);
372 int WINAPI FileMenu_InsertUsingPidl(
378 LPFNFMCALLBACK lpfnCallback);
380 int WINAPI FileMenu_ReplaceUsingPidl(
385 LPFNFMCALLBACK lpfnCallback);
387 void WINAPI FileMenu_Invalidate(HMENU hMenu);
389 HMENU WINAPI FileMenu_FindSubMenuByPidl(
393 BOOL WINAPI FileMenu_TrackPopupMenuEx(
401 BOOL WINAPI FileMenu_GetLastSelectedItemPidls(
403 LPITEMIDLIST *ppidlFolder,
404 LPITEMIDLIST *ppidlItem);
406 LRESULT WINAPI FileMenu_MeasureItem(
408 LPMEASUREITEMSTRUCT lpmis);
410 LRESULT WINAPI FileMenu_DrawItem(
412 LPDRAWITEMSTRUCT lpdis);
414 BOOL WINAPI FileMenu_InitMenuPopup(HMENU hMenu);
416 void WINAPI FileMenu_AbortInitMenu(void);
418 LRESULT WINAPI FileMenu_HandleMenuChar(
422 BOOL WINAPI FileMenu_DeleteAllItems(HMENU hMenu);
424 BOOL WINAPI FileMenu_DeleteItemByCmd(
428 BOOL WINAPI FileMenu_DeleteItemByIndex(
432 BOOL WINAPI FileMenu_DeleteMenuItemByFirstID(
436 BOOL WINAPI FileMenu_DeleteSeparator(HMENU hMenu);
438 BOOL WINAPI FileMenu_EnableItemByCmd(
443 DWORD WINAPI FileMenu_GetItemExtent(
447 int WINAPI FileMenu_AppendFilesForPidl(
452 int WINAPI FileMenu_AddFilesForPidl(
459 LPFNFMCALLBACK lpfnCallback);
461 /****************************************************************************
462 * Drag And Drop Routines
464 HRESULT WINAPI SHLoadOLE(DWORD dwFlags);
466 HRESULT WINAPI SHRegisterDragDrop(
468 LPDROPTARGET lpDropTarget);
470 HRESULT WINAPI SHRevokeDragDrop(HWND hWnd);
472 HRESULT WINAPI SHDoDragDrop(
474 LPDATAOBJECT lpDataObject,
475 LPDROPSOURCE lpDropSource,
479 BOOL WINAPI DAD_DragEnter(HWND hWnd);
481 BOOL WINAPI DAD_DragEnterEx(
485 BOOL WINAPI DAD_DragMove(POINT pt);
487 /* DAD_AutoScroll return values */
488 #define DAD_SCROLL_UP 1
489 #define DAD_SCROLL_DOWN 2
490 #define DAD_SCROLL_LEFT 4
491 #define DAD_SCROLL_RIGHT 8
493 /* DAD_AutoScroll sample structure */
499 POINT aptPositions[3];
501 } SCROLLSAMPLES, *LPSCROLLSAMPLES;
503 DWORD WINAPI DAD_AutoScroll(HWND hWnd,
504 LPSCROLLSAMPLES lpSamples,
507 BOOL WINAPI DAD_DragLeave();
509 BOOL WINAPI DAD_SetDragImageFromListView(
513 BOOL WINAPI DAD_SetDragImage(
514 HIMAGELIST himlTrack,
517 BOOL WINAPI DAD_ShowDragImage(BOOL bShow);
519 HRESULT WINAPI SHCreateStdEnumFmtEtc(
521 const FORMATETC *lpFormats,
522 LPENUMFORMATETC *ppenumFormatetc);
524 HRESULT WINAPI CIDLData_CreateFromIDArray(
525 LPCITEMIDLIST pidlFolder,
527 LPCITEMIDLIST *lppidlFiles,
528 LPDATAOBJECT *ppdataObject);
530 /****************************************************************************
531 * Path Manipulation Routines
534 BOOL WINAPI PathAppendAW(LPVOID lpszPath1, LPCVOID lpszPath2);
536 LPVOID WINAPI PathCombineAW(LPVOID szDest, LPCVOID lpszDir, LPCVOID lpszFile);
538 LPVOID WINAPI PathAddBackslashAW(LPVOID path);
540 LPVOID WINAPI PathBuildRootAW(LPVOID lpszPath, int drive);
542 LPVOID WINAPI PathFindExtensionAW(LPCVOID path);
544 LPVOID WINAPI PathFindFileNameAW(LPCVOID path);
546 LPVOID WINAPI PathGetExtensionAW(LPCVOID lpszPath, DWORD void1, DWORD void2);
548 LPVOID WINAPI PathGetArgsAW(LPVOID lpszPath);
550 BOOL WINAPI PathRemoveFileSpecAW(LPVOID lpszPath);
552 LPVOID WINAPI PathGetShortPathAW(LPVOID lpszPath);
554 void WINAPI PathRemoveBlanksAW(LPVOID lpszPath);
556 LPVOID WINAPI PathQuoteSpacesAW(LPVOID path);
558 void WINAPI PathUnquoteSpacesAW(LPVOID lpszPath);
560 BOOL WINAPI PathIsUNCAW(LPCVOID lpszPath);
562 BOOL WINAPI PathIsRelativeAW(LPCVOID lpszPath);
564 BOOL WINAPI PathIsRootAW(LPCVOID x);
566 BOOL WINAPI PathIsExeAW(LPCVOID lpszPath);
568 BOOL WINAPI PathIsDirectoryAW(LPCVOID lpszPath);
570 BOOL WINAPI PathFileExistsAW(LPCVOID lpszPath);
572 BOOL WINAPI PathMatchSpecAW(LPVOID lpszPath, LPVOID lpszSpec);
574 BOOL WINAPI PathMakeUniqueNameAW(
577 LPCVOID lpszShortName,
578 LPCVOID lpszLongName,
579 LPCVOID lpszPathName);
581 BOOL WINAPI PathYetAnotherMakeUniqueNameA(
584 LPCSTR lpszShortName,
585 LPCSTR lpszLongName);
587 /* PathCleanupSpec return values */
588 #define PCS_REPLACEDCHARS 0x00000001
589 #define PCS_REMOVEDCHARS 0x00000002
590 #define PCS_SHORTENED 0x00000004
591 #define PCS_PATHTOOLONG 0x80000008
593 DWORD WINAPI PathCleanupSpecAW(LPCVOID lpszPath, LPVOID lpszFile);
595 BOOL WINAPI PathQualifyA(LPCSTR path);
596 BOOL WINAPI PathQualifyW(LPCWSTR path);
597 #define PathQualify WINELIB_NAME_AW(PathQualify)
598 BOOL WINAPI PathQualifyAW(LPCVOID path);
601 /* PathResolve flags */
602 #define PRF_CHECKEXISTANCE 0x01
603 #define PRF_EXECUTABLE 0x02
604 #define PRF_QUALIFYONPATH 0x04
605 #define PRF_WINDOWS31 0x08
607 BOOL WINAPI PathResolveAW(LPVOID lpszPath, LPCVOID *alpszPaths, DWORD dwFlags);
609 BOOL WINAPI PathSetDlgItemPathAW(HWND hDlg, int nIDDlgItem, LPCVOID lpszPath);
611 /* PathProcessCommand flags */
612 #define PPCF_QUOTEPATH 0x01 /* implies PPCF_INCLUDEARGS */
613 #define PPCF_INCLUDEARGS 0x02
614 #define PPCF_NODIRECTORIES 0x10
615 #define PPCF_DONTRESOLVE 0x20
616 #define PPCF_PATHISRELATIVE 0x40
618 HRESULT WINAPI PathProcessCommandAW(LPCVOID lpszPath, LPVOID lpszBuff,
619 DWORD dwBuffSize, DWORD dwFlags);
621 void WINAPI PathStripPathAW(LPVOID lpszPath);
623 BOOL WINAPI PathStripToRootAW(LPVOID lpszPath);
625 void WINAPI PathRemoveArgsAW(LPVOID lpszPath);
627 void WINAPI PathRemoveExtensionAW(LPVOID lpszPath);
629 int WINAPI PathParseIconLocationAW(LPVOID lpszPath);
631 BOOL WINAPI PathIsSameRootAW(LPCVOID lpszPath1, LPCVOID lpszPath2);
633 BOOL WINAPI PathFindOnPathAW(LPVOID sFile, LPCVOID sOtherDirs);
635 /****************************************************************************
636 * Shell Namespace Routines
639 /* SHCreateShellFolderViewEx callback function */
640 typedef HRESULT CALLBACK (*LPFNSFVCALLBACK)(
648 /* SHCreateShellFolderViewEx structure */
654 LPCITEMIDLIST pidlFolder;
656 LPFNSFVCALLBACK lpfnCallback;
658 } SHELLFOLDERVIEWINFO, * LPSHELLFOLDERVIEWINFO;
659 typedef const SHELLFOLDERVIEWINFO * LPCSHELLFOLDERVIEWINFO;
661 HRESULT WINAPI SHCreateShellFolderViewEx(
662 LPCSHELLFOLDERVIEWINFO pshfvi,
665 /* SHCreateShellFolderViewEx callback messages */
666 #define SFVCB_ADDTOMENU 0x0001
667 #define SFVCB_INVOKECOMMAND 0x0002
668 #define SFVCB_GETMENUHELP 0x0003
669 #define SFVCB_GETTOOLBARTIP 0x0004
670 #define SFVCB_GETTOOLBARINFO 0x0005
671 #define SFVCB_ADDTOOLBARITEMS 0x0006
672 #define SFVCB_INITMENUPOPUP 0x0007
673 #define SFVCB_SELECTIONCHANGED 0x0008
674 #define SFVCB_DRAWMENUITEM 0x0009
675 #define SFVCB_MEASUREMENUITEM 0x000A
676 #define SFVCB_EXITMENULOOP 0x000B
677 #define SFVCB_VIEWRELEASE 0x000C
678 #define SFVCB_GETNAMELENGTH 0x000D
679 #define SFVCB_CHANGENOTIFY 0x000E
680 #define SFVCB_WINDOWCREATED 0x000F
681 #define SFVCB_WINDOWCLOSING 0x0010
682 #define SFVCB_LISTREFRESHED 0x0011
683 #define SFVCB_WINDOWFOCUSED 0x0012
684 #define SFVCB_REGISTERCOPYHOOK 0x0014
685 #define SFVCB_COPYHOOKCALLBACK 0x0015
686 #define SFVCB_GETDETAILSOF 0x0017
687 #define SFVCB_COLUMNCLICK 0x0018
688 #define SFVCB_GETCHANGENOTIFYPIDL 0x0019
689 #define SFVCB_GETESTIMATEDCOUNT 0x001A
690 #define SFVCB_ADJUSTVIEWMODE 0x001B
691 #define SFVCB_REMOVEFROMMENU 0x001C
692 #define SFVCB_ADDINGOBJECT 0x001D
693 #define SFVCB_REMOVINGOBJECT 0x001E
694 #define SFVCB_UPDATESTATUSBAR 0x001F
695 #define SFVCB_ISSLOWREFRESH 0x0020
696 #define SFVCB_GETCOMMANDDIR 0x0021
697 #define SFVCB_GETCOLUMNSTREAM 0x0022
698 #define SFVCB_CANSELECTALL 0x0023
699 #define SFVCB_DRAGSUCCEEDED 0x0024
700 #define SFVCB_ISSTRICTREFRESH 0x0025
701 #define SFVCB_ISCHILDOBJECT 0x0026
703 /* Generic structure used by several messages */
710 } SFVCBINFO, * LPSFVCBINFO;
711 typedef const SFVCBINFO * LPCSFVCBINFO;
713 /* SFVCB_ADDTOMENU structure */
720 } SFVMENUINFO, * LPSFVMENUINFO;
722 /* SFVCB_GETTOOLBARINFO structure */
727 } SFVTOOLBARINFO, * LPSFVTOOLBARINFO;
729 /* SFVTOOLBARINFO flags */
733 SFVTI_ADDTOFRONT = 1,
737 /* SFVCB_SELECTIONCHANGED structure */
744 } SFVSELECTSTATE, * LPSFVSELECTSTATE;
745 typedef const SFVSELECTSTATE * LPCSFVSELECTSTATE;
747 /* SFVCB_COPYHOOKCALLBACK structure */
757 } SFVCOPYHOOKINFO, * LPSFVCOPYHOOKINFO;
758 typedef const SFVCOPYHOOKINFO * LPCSFVCOPYHOOKINFO;
760 /* SFVCB_GETDETAILSOF structure */
767 } SFVCOLUMNINFO, * LPSFVCOLUMNINFO;
769 int WINAPI SHShellFolderView_Message(
774 /* SHShellFolderView_Message messages */
775 #define SFVM_REARRANGE 0x0001
776 #define SFVM_GETARRANGECOLUMN 0x0002
777 #define SFVM_ADDOBJECT 0x0003
778 #define SFVM_GETITEMCOUNT 0x0004
779 #define SFVM_GETITEMPIDL 0x0005
780 #define SFVM_REMOVEOBJECT 0x0006
781 #define SFVM_UPDATEOBJECT 0x0007
782 #define SFVM_SETREDRAW 0x0008
783 #define SFVM_GETSELECTEDOBJECTS 0x0009
784 #define SFVM_ISDROPONSOURCE 0x000A
785 #define SFVM_MOVEICONS 0x000B
786 #define SFVM_GETDRAGPOINT 0x000C
787 #define SFVM_GETDROPPOINT 0x000D
788 #define SFVM_SETOBJECTPOS 0x000E
789 #define SFVM_ISDROPONBACKGROUND 0x000F
790 #define SFVM_CUTOBJECTS 0x0010
791 #define SFVM_TOGGLEAUTOARRANGE 0x0011
792 #define SFVM_LINEUPICONS 0x0012
793 #define SFVM_GETAUTOARRANGE 0x0013
794 #define SFVM_GETSELECTEDCOUNT 0x0014
795 #define SFVM_GETITEMSPACING 0x0015
796 #define SFVM_REFRESHOBJECT 0x0016
797 #define SFVM_SETCLIPBOARDPOINTS 0x0017
799 /****************************************************************************
803 /* SHWaitForFileToOpen flags */
804 #define SHWFF_ADD 0x01
805 #define SHWFF_REMOVE 0x02
806 #define SHWFF_WAIT 0x04
808 BOOL WINAPI SHWaitForFileToOpen(
813 WORD WINAPI ArrangeWindows(
818 CONST HWND * lpKids);
820 /* RegisterShellHook types */
821 #define RSH_DEREGISTER 0
822 #define RSH_REGISTER 1
823 #define RSH_REGISTER_PROGMAN 2
824 #define RSH_REGISTER_TASKMAN 3
826 BOOL WINAPI RegisterShellHook(
830 /* SHCreateDefClassObject callback function */
831 typedef HRESULT CALLBACK (*LPFNCDCOCALLBACK)(
836 HRESULT WINAPI SHCreateDefClassObject(
839 LPFNCDCOCALLBACK lpfnCallback,
843 HRESULT WINAPI SHCoCreateInstance(
850 void WINAPI SHFreeUnusedLibraries();
852 /* SHCreateLinks flags */
853 #define SHCLF_PREFIXNAME 0x01
854 #define SHCLF_CREATEONDESKTOP 0x02
856 HRESULT WINAPI SHCreateLinks(
859 LPDATAOBJECT lpDataObject,
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(
875 BOOL WINAPI SHGetNewLinkInfoW(
881 #define SHGetNewLinkInfo WINELIB_NAME_AW(SHGetNewLinkInfo)
883 /* policy functions */
884 BOOL WINAPI SHInitRestricted(LPSTR, LPSTR);
888 #endif /* defined(__cplusplus) */
890 #endif /* __WINE_UNDOCSHELL_H */