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);
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 BOOL WINAPI PathFindOnPathAW(
591 /* PathCleanupSpec return values */
592 #define PCS_REPLACEDCHARS 0x00000001
593 #define PCS_REMOVEDCHARS 0x00000002
594 #define PCS_SHORTENED 0x00000004
595 #define PCS_PATHTOOLONG 0x80000008
597 DWORD WINAPI PathCleanupSpecAW(LPCVOID lpszPath, LPVOID lpszFile);
599 BOOL WINAPI PathQualifyA(LPCSTR path);
600 BOOL WINAPI PathQualifyW(LPCWSTR path);
601 #define PathQualify WINELIB_NAME_AW(PathQualify)
602 BOOL WINAPI PathQualifyAW(LPCVOID path);
605 /* PathResolve flags */
606 #define PRF_CHECKEXISTANCE 0x01
607 #define PRF_EXECUTABLE 0x02
608 #define PRF_QUALIFYONPATH 0x04
609 #define PRF_WINDOWS31 0x08
611 BOOL WINAPI PathResolveAW(LPVOID lpszPath, LPCVOID *alpszPaths, DWORD dwFlags);
613 BOOL WINAPI PathSetDlgItemPathAW(HWND hDlg, int nIDDlgItem, LPCVOID lpszPath);
615 /* PathProcessCommand flags */
616 #define PPCF_QUOTEPATH 0x01 /* implies PPCF_INCLUDEARGS */
617 #define PPCF_INCLUDEARGS 0x02
618 #define PPCF_NODIRECTORIES 0x10
619 #define PPCF_DONTRESOLVE 0x20
620 #define PPCF_PATHISRELATIVE 0x40
622 HRESULT WINAPI PathProcessCommandAW(LPCVOID lpszPath, LPVOID lpszBuff,
623 DWORD dwBuffSize, DWORD dwFlags);
625 void WINAPI PathStripPathAW(LPVOID lpszPath);
627 BOOL WINAPI PathStripToRootAW(LPVOID lpszPath);
629 void WINAPI PathRemoveArgsAW(LPVOID lpszPath);
631 void WINAPI PathRemoveExtensionAW(LPVOID lpszPath);
633 int WINAPI PathParseIconLocationAW(LPVOID lpszPath);
635 BOOL WINAPI PathIsSameRootAW(LPCVOID lpszPath1, LPCVOID lpszPath2);
637 BOOL WINAPI PathFindOnPathAW(LPVOID sFile, LPCVOID sOtherDirs);
639 /****************************************************************************
640 * Shell Namespace Routines
643 /* SHCreateShellFolderViewEx callback function */
644 typedef HRESULT CALLBACK (*LPFNSFVCALLBACK)(
652 /* SHCreateShellFolderViewEx structure */
658 LPCITEMIDLIST pidlFolder;
660 LPFNSFVCALLBACK lpfnCallback;
662 } SHELLFOLDERVIEWINFO, * LPSHELLFOLDERVIEWINFO;
663 typedef const SHELLFOLDERVIEWINFO * LPCSHELLFOLDERVIEWINFO;
665 HRESULT WINAPI SHCreateShellFolderViewEx(
666 LPCSHELLFOLDERVIEWINFO pshfvi,
669 /* SHCreateShellFolderViewEx callback messages */
670 #define SFVCB_ADDTOMENU 0x0001
671 #define SFVCB_INVOKECOMMAND 0x0002
672 #define SFVCB_GETMENUHELP 0x0003
673 #define SFVCB_GETTOOLBARTIP 0x0004
674 #define SFVCB_GETTOOLBARINFO 0x0005
675 #define SFVCB_ADDTOOLBARITEMS 0x0006
676 #define SFVCB_INITMENUPOPUP 0x0007
677 #define SFVCB_SELECTIONCHANGED 0x0008
678 #define SFVCB_DRAWMENUITEM 0x0009
679 #define SFVCB_MEASUREMENUITEM 0x000A
680 #define SFVCB_EXITMENULOOP 0x000B
681 #define SFVCB_VIEWRELEASE 0x000C
682 #define SFVCB_GETNAMELENGTH 0x000D
683 #define SFVCB_CHANGENOTIFY 0x000E
684 #define SFVCB_WINDOWCREATED 0x000F
685 #define SFVCB_WINDOWCLOSING 0x0010
686 #define SFVCB_LISTREFRESHED 0x0011
687 #define SFVCB_WINDOWFOCUSED 0x0012
688 #define SFVCB_REGISTERCOPYHOOK 0x0014
689 #define SFVCB_COPYHOOKCALLBACK 0x0015
690 #define SFVCB_GETDETAILSOF 0x0017
691 #define SFVCB_COLUMNCLICK 0x0018
692 #define SFVCB_GETCHANGENOTIFYPIDL 0x0019
693 #define SFVCB_GETESTIMATEDCOUNT 0x001A
694 #define SFVCB_ADJUSTVIEWMODE 0x001B
695 #define SFVCB_REMOVEFROMMENU 0x001C
696 #define SFVCB_ADDINGOBJECT 0x001D
697 #define SFVCB_REMOVINGOBJECT 0x001E
698 #define SFVCB_UPDATESTATUSBAR 0x001F
699 #define SFVCB_ISSLOWREFRESH 0x0020
700 #define SFVCB_GETCOMMANDDIR 0x0021
701 #define SFVCB_GETCOLUMNSTREAM 0x0022
702 #define SFVCB_CANSELECTALL 0x0023
703 #define SFVCB_DRAGSUCCEEDED 0x0024
704 #define SFVCB_ISSTRICTREFRESH 0x0025
705 #define SFVCB_ISCHILDOBJECT 0x0026
707 /* Generic structure used by several messages */
714 } SFVCBINFO, * LPSFVCBINFO;
715 typedef const SFVCBINFO * LPCSFVCBINFO;
717 /* SFVCB_ADDTOMENU structure */
724 } SFVMENUINFO, * LPSFVMENUINFO;
726 /* SFVCB_GETTOOLBARINFO structure */
731 } SFVTOOLBARINFO, * LPSFVTOOLBARINFO;
733 /* SFVTOOLBARINFO flags */
737 SFVTI_ADDTOFRONT = 1,
741 /* SFVCB_SELECTIONCHANGED structure */
748 } SFVSELECTSTATE, * LPSFVSELECTSTATE;
749 typedef const SFVSELECTSTATE * LPCSFVSELECTSTATE;
751 /* SFVCB_COPYHOOKCALLBACK structure */
761 } SFVCOPYHOOKINFO, * LPSFVCOPYHOOKINFO;
762 typedef const SFVCOPYHOOKINFO * LPCSFVCOPYHOOKINFO;
764 /* SFVCB_GETDETAILSOF structure */
771 } SFVCOLUMNINFO, * LPSFVCOLUMNINFO;
773 int WINAPI SHShellFolderView_Message(
778 /* SHShellFolderView_Message messages */
779 #define SFVM_REARRANGE 0x0001
780 #define SFVM_GETARRANGECOLUMN 0x0002
781 #define SFVM_ADDOBJECT 0x0003
782 #define SFVM_GETITEMCOUNT 0x0004
783 #define SFVM_GETITEMPIDL 0x0005
784 #define SFVM_REMOVEOBJECT 0x0006
785 #define SFVM_UPDATEOBJECT 0x0007
786 #define SFVM_SETREDRAW 0x0008
787 #define SFVM_GETSELECTEDOBJECTS 0x0009
788 #define SFVM_ISDROPONSOURCE 0x000A
789 #define SFVM_MOVEICONS 0x000B
790 #define SFVM_GETDRAGPOINT 0x000C
791 #define SFVM_GETDROPPOINT 0x000D
792 #define SFVM_SETOBJECTPOS 0x000E
793 #define SFVM_ISDROPONBACKGROUND 0x000F
794 #define SFVM_CUTOBJECTS 0x0010
795 #define SFVM_TOGGLEAUTOARRANGE 0x0011
796 #define SFVM_LINEUPICONS 0x0012
797 #define SFVM_GETAUTOARRANGE 0x0013
798 #define SFVM_GETSELECTEDCOUNT 0x0014
799 #define SFVM_GETITEMSPACING 0x0015
800 #define SFVM_REFRESHOBJECT 0x0016
801 #define SFVM_SETCLIPBOARDPOINTS 0x0017
803 /****************************************************************************
807 /* SHWaitForFileToOpen flags */
808 #define SHWFF_ADD 0x01
809 #define SHWFF_REMOVE 0x02
810 #define SHWFF_WAIT 0x04
812 BOOL WINAPI SHWaitForFileToOpen(
817 WORD WINAPI ArrangeWindows(
822 CONST HWND * lpKids);
824 /* RegisterShellHook types */
825 #define RSH_DEREGISTER 0
826 #define RSH_REGISTER 1
827 #define RSH_REGISTER_PROGMAN 2
828 #define RSH_REGISTER_TASKMAN 3
830 BOOL WINAPI RegisterShellHook(
834 /* SHCreateDefClassObject callback function */
835 typedef HRESULT CALLBACK (*LPFNCDCOCALLBACK)(
840 HRESULT WINAPI SHCreateDefClassObject(
843 LPFNCDCOCALLBACK lpfnCallback,
847 HRESULT WINAPI SHCoCreateInstance(
854 void WINAPI SHFreeUnusedLibraries();
856 /* SHCreateLinks flags */
857 #define SHCLF_PREFIXNAME 0x01
858 #define SHCLF_CREATEONDESKTOP 0x02
860 HRESULT WINAPI SHCreateLinks(
863 LPDATAOBJECT lpDataObject,
865 LPITEMIDLIST *lppidlLinks);
867 /* SHGetNewLinkInfo flags */
868 #define SHGNLI_PIDL 0x01
869 #define SHGNLI_PREFIXNAME 0x02
870 #define SHGNLI_NOUNIQUE 0x04
872 BOOL WINAPI SHGetNewLinkInfoA(
879 BOOL WINAPI SHGetNewLinkInfoW(
885 #define SHGetNewLinkInfo WINELIB_NAME_AW(SHGetNewLinkInfo)
887 /* policy functions */
888 BOOL WINAPI SHInitRestricted(LPSTR, LPSTR);
892 #endif /* defined(__cplusplus) */
894 #endif /* __WINE_UNDOCSHELL_H */