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
32 #endif /* defined(__cplusplus) */
34 /****************************************************************************
37 BOOL WINAPI ILGetDisplayName(
41 /* type parameter for ILGetDisplayNameEx() */
42 #define ILGDN_FORPARSING 0
43 #define ILGDN_NORMAL 1
44 #define ILGDN_INFOLDER 2
46 BOOL WINAPI ILGetDisplayNameEx(
52 HRESULT WINAPI ILSaveToStream(
56 HRESULT WINAPI ILLoadFromStream(
60 LPITEMIDLIST WINAPI ILGlobalClone(LPCITEMIDLIST pidl);
61 void WINAPI ILGlobalFree(LPITEMIDLIST pidl);
63 LPITEMIDLIST WINAPI SHSimpleIDListFromPathA (LPCSTR lpszPath);
64 LPITEMIDLIST WINAPI SHSimpleIDListFromPathW (LPCWSTR lpszPath);
66 HRESULT WINAPI SHILCreateFromPathA (
71 HRESULT WINAPI SHILCreateFromPathW (
76 LPITEMIDLIST WINAPI ILCreateFromPathA(LPCSTR path);
77 LPITEMIDLIST WINAPI ILCreateFromPathW(LPCWSTR path);
82 BOOL WINAPI StrRetToStrNA(LPSTR,DWORD,LPSTRRET,const ITEMIDLIST*);
83 BOOL WINAPI StrRetToStrNW(LPWSTR,DWORD,LPSTRRET,const ITEMIDLIST*);
86 /****************************************************************************
87 * SHChangeNotifyRegister API
89 #define SHCNRF_InterruptLevel 0x0001
90 #define SHCNRF_ShellLevel 0x0002
91 #define SHCNRF_RecursiveInterrupt 0x1000 /* Must be combined with SHCNRF_InterruptLevel */
92 #define SHCNRF_NewDelivery 0x8000 /* Messages use shared memory */
94 /****************************************************************************
95 * Shell Common Dialogs
98 BOOL WINAPI PickIconDlg(
102 LPDWORD lpdwIconIndex);
104 /* RunFileDlg flags */
105 #define RFF_NOBROWSE 0x01
106 #define RFF_NODEFAULT 0x02
107 #define RFF_CALCDIRECTORY 0x04
108 #define RFF_NOLABEL 0x08
109 #define RFF_NOSEPARATEMEM 0x20 /* NT only */
111 /* RunFileFlg notification structure */
118 } NM_RUNFILEDLG, * LPNM_RUNFILEDLG;
120 /* RunFileDlg notification return values */
122 #define RF_CANCEL 0x01
123 #define RF_RETRY 0x02
125 void WINAPI RunFileDlg(
128 LPCSTR lpstrDirectory,
130 LPCSTR lpstrDescription,
133 void WINAPI ExitWindowsDialog(HWND hwndOwner);
135 BOOL WINAPI GetFileNameFromBrowse(
139 LPCSTR lpstrInitialDir,
144 BOOL WINAPI SHFindComputer(
145 LPCITEMIDLIST pidlRoot,
146 LPCITEMIDLIST pidlSavedSearch);
148 void WINAPI SHHandleDiskFull(HWND hwndOwner,
151 int WINAPI SHOutOfMemoryMessageBox(
156 DWORD WINAPI SHNetConnectionDialog(
158 LPCSTR lpstrRemoteName,
161 /****************************************************************************
165 HANDLE WINAPI SHAllocShared(
170 BOOL WINAPI SHFreeShared(
174 LPVOID WINAPI SHLockShared(
178 BOOL WINAPI SHUnlockShared(LPVOID pv);
180 /****************************************************************************
181 * Cabinet Window Messages
184 #define CWM_SETPATH (WM_USER + 2)
185 #define CWM_WANTIDLE (WM_USER + 3)
186 #define CWM_GETSETCURRENTINFO (WM_USER + 4)
187 #define CWM_SELECTITEM (WM_USER + 5)
188 #define CWM_SELECTITEMSTR (WM_USER + 6)
189 #define CWM_GETISHELLBROWSER (WM_USER + 7)
190 #define CWM_TESTPATH (WM_USER + 9)
191 #define CWM_STATECHANGE (WM_USER + 10)
192 #define CWM_GETPATH (WM_USER + 12)
194 /* CWM_TESTPATH types */
195 #define CWTP_ISEQUAL 0
196 #define CWTP_ISCHILD 1
198 /* CWM_TESTPATH structure */
203 } CWTESTPATHSTRUCT,* LPCWTESTPATHSTRUCT;
205 /****************************************************************************
206 * System Imagelist Routines
209 int WINAPI Shell_GetCachedImageIndex(
214 BOOL WINAPI Shell_GetImageLists(
215 HIMAGELIST *lphimlLarge,
216 HIMAGELIST *lphimlSmall);
218 HICON WINAPI SHGetFileIcon(
221 DWORD dwFileAttributes,
224 BOOL WINAPI FileIconInit(BOOL bFullInit);
226 /****************************************************************************
229 /* FileMenu_Create nSelHeight constants */
230 #define FM_DEFAULT_SELHEIGHT -1
231 #define FM_FULL_SELHEIGHT 0
233 /* FileMenu_Create flags */
234 #define FMF_SMALL_ICONS 0x00
235 #define FMF_LARGE_ICONS 0x08
236 #define FMF_NO_COLUMN_BREAK 0x10
238 HMENU WINAPI FileMenu_Create(
239 COLORREF crBorderColor,
245 void WINAPI FileMenu_Destroy(HMENU hMenu);
247 /* FileMenu_AppendItem constants */
248 #define FM_SEPARATOR (LPCSTR)1
249 #define FM_BLANK_ICON -1
250 #define FM_DEFAULT_HEIGHT 0
252 BOOL WINAPI FileMenu_AppendItem(
260 /* FileMenu_InsertUsingPidl flags */
261 #define FMF_NO_EMPTY_ITEM 0x01
262 #define FMF_NO_PROGRAM_GROUPS 0x04
264 /* FileMenu_InsertUsingPidl callback function */
265 typedef void (CALLBACK *LPFNFMCALLBACK)(LPCITEMIDLIST pidlFolder, LPCITEMIDLIST pidlFile);
267 int WINAPI FileMenu_InsertUsingPidl(
273 LPFNFMCALLBACK lpfnCallback);
275 int WINAPI FileMenu_ReplaceUsingPidl(
280 LPFNFMCALLBACK lpfnCallback);
282 void WINAPI FileMenu_Invalidate(HMENU hMenu);
284 HMENU WINAPI FileMenu_FindSubMenuByPidl(
288 BOOL WINAPI FileMenu_TrackPopupMenuEx(
296 BOOL WINAPI FileMenu_GetLastSelectedItemPidls(
298 LPCITEMIDLIST *ppidlFolder,
299 LPCITEMIDLIST *ppidlItem);
301 LRESULT WINAPI FileMenu_MeasureItem(
303 LPMEASUREITEMSTRUCT lpmis);
305 LRESULT WINAPI FileMenu_DrawItem(
307 LPDRAWITEMSTRUCT lpdis);
309 BOOL WINAPI FileMenu_InitMenuPopup(HMENU hMenu);
311 void WINAPI FileMenu_AbortInitMenu(void);
313 LRESULT WINAPI FileMenu_HandleMenuChar(
317 BOOL WINAPI FileMenu_DeleteAllItems(HMENU hMenu);
319 BOOL WINAPI FileMenu_DeleteItemByCmd(
323 BOOL WINAPI FileMenu_DeleteItemByIndex(
327 BOOL WINAPI FileMenu_DeleteMenuItemByFirstID(
331 BOOL WINAPI FileMenu_DeleteSeparator(HMENU hMenu);
333 BOOL WINAPI FileMenu_EnableItemByCmd(
338 DWORD WINAPI FileMenu_GetItemExtent(
342 int WINAPI FileMenu_AppendFilesForPidl(
347 int WINAPI FileMenu_AddFilesForPidl(
354 LPFNFMCALLBACK lpfnCallback);
356 /****************************************************************************
357 * Drag And Drop Routines
359 HRESULT WINAPI SHLoadOLE(DWORD dwFlags);
361 HRESULT WINAPI SHRegisterDragDrop(
363 LPDROPTARGET lpDropTarget);
365 HRESULT WINAPI SHRevokeDragDrop(HWND hWnd);
367 BOOL WINAPI DAD_DragEnter(HWND hWnd);
369 BOOL WINAPI DAD_SetDragImageFromListView(
373 BOOL WINAPI DAD_ShowDragImage(BOOL bShow);
375 HRESULT WINAPI CIDLData_CreateFromIDArray(
376 LPCITEMIDLIST pidlFolder,
378 LPCITEMIDLIST *lppidlFiles,
379 LPDATAOBJECT *ppdataObject);
381 /****************************************************************************
382 * Path Manipulation Routines
385 BOOL WINAPI PathAppendAW(LPVOID lpszPath1, LPCVOID lpszPath2);
387 LPVOID WINAPI PathCombineAW(LPVOID szDest, LPCVOID lpszDir, LPCVOID lpszFile);
389 LPVOID WINAPI PathAddBackslashAW(LPVOID path);
391 LPVOID WINAPI PathBuildRootAW(LPVOID lpszPath, int drive);
393 LPVOID WINAPI PathFindExtensionAW(LPCVOID path);
395 LPVOID WINAPI PathFindFileNameAW(LPCVOID path);
397 LPVOID WINAPI PathGetExtensionAW(LPCVOID lpszPath, DWORD void1, DWORD void2);
399 LPVOID WINAPI PathGetArgsAW(LPVOID lpszPath);
401 BOOL WINAPI PathRemoveFileSpecAW(LPVOID lpszPath);
403 void WINAPI PathRemoveBlanksAW(LPVOID lpszPath);
405 VOID WINAPI PathQuoteSpacesAW(LPVOID path);
407 void WINAPI PathUnquoteSpacesAW(LPVOID lpszPath);
409 BOOL WINAPI PathIsUNCAW(LPCVOID lpszPath);
411 BOOL WINAPI PathIsRelativeAW(LPCVOID lpszPath);
413 BOOL WINAPI PathIsRootAW(LPCVOID x);
415 BOOL WINAPI PathIsExeAW(LPCVOID lpszPath);
417 BOOL WINAPI PathIsDirectoryAW(LPCVOID lpszPath);
419 BOOL WINAPI PathFileExistsAW(LPCVOID lpszPath);
421 BOOL WINAPI PathMatchSpecAW(LPVOID lpszPath, LPVOID lpszSpec);
423 BOOL WINAPI PathMakeUniqueNameAW(
426 LPCVOID lpszShortName,
427 LPCVOID lpszLongName,
428 LPCVOID lpszPathName);
430 BOOL WINAPI PathYetAnotherMakeUniqueName(
432 LPCWSTR lpszPathName,
433 LPCWSTR lpszShortName,
434 LPCWSTR lpszLongName);
436 /* PathCleanupSpec return values */
437 #define PCS_REPLACEDCHARS 0x00000001
438 #define PCS_REMOVEDCHARS 0x00000002
439 #define PCS_SHORTENED 0x00000004
440 #define PCS_PATHTOOLONG 0x80000008
442 DWORD WINAPI PathCleanupSpecAW(LPCVOID lpszPath, LPVOID lpszFile);
444 BOOL WINAPI PathQualifyA(LPCSTR path);
445 BOOL WINAPI PathQualifyW(LPCWSTR path);
446 #define PathQualify WINELIB_NAME_AW(PathQualify)
447 BOOL WINAPI PathQualifyAW(LPCVOID path);
450 /* PathResolve flags */
451 #define PRF_CHECKEXISTANCE 0x01
452 #define PRF_EXECUTABLE 0x02
453 #define PRF_QUALIFYONPATH 0x04
454 #define PRF_WINDOWS31 0x08
456 BOOL WINAPI PathResolveAW(LPVOID lpszPath, LPCVOID *alpszPaths, DWORD dwFlags);
458 VOID WINAPI PathSetDlgItemPathAW(HWND hDlg, int nIDDlgItem, LPCVOID lpszPath);
460 /* PathProcessCommand flags */
461 #define PPCF_QUOTEPATH 0x01 /* implies PPCF_INCLUDEARGS */
462 #define PPCF_INCLUDEARGS 0x02
463 #define PPCF_NODIRECTORIES 0x10
464 #define PPCF_DONTRESOLVE 0x20
465 #define PPCF_PATHISRELATIVE 0x40
467 HRESULT WINAPI PathProcessCommandAW(LPCVOID lpszPath, LPVOID lpszBuff,
468 DWORD dwBuffSize, DWORD dwFlags);
470 void WINAPI PathStripPathAW(LPVOID lpszPath);
472 BOOL WINAPI PathStripToRootAW(LPVOID lpszPath);
474 void WINAPI PathRemoveArgsAW(LPVOID lpszPath);
476 void WINAPI PathRemoveExtensionAW(LPVOID lpszPath);
478 int WINAPI PathParseIconLocationAW(LPVOID lpszPath);
480 BOOL WINAPI PathIsSameRootAW(LPCVOID lpszPath1, LPCVOID lpszPath2);
482 BOOL WINAPI PathFindOnPathAW(LPVOID sFile, LPCVOID sOtherDirs);
484 /****************************************************************************
485 * Shell Namespace Routines
488 /* SHCreateShellFolderViewEx callback function */
489 typedef HRESULT (CALLBACK *LPFNSFVCALLBACK)(
497 /* SHCreateShellFolderViewEx structure */
503 LPCITEMIDLIST pidlFolder;
505 LPFNSFVCALLBACK lpfnCallback;
507 } SHELLFOLDERVIEWINFO, * LPSHELLFOLDERVIEWINFO;
508 typedef const SHELLFOLDERVIEWINFO * LPCSHELLFOLDERVIEWINFO;
510 HRESULT WINAPI SHCreateShellFolderViewEx(
511 LPCSHELLFOLDERVIEWINFO pshfvi,
514 /* SHCreateShellFolderViewEx callback messages */
515 #define SFVCB_ADDTOMENU 0x0001
516 #define SFVCB_INVOKECOMMAND 0x0002
517 #define SFVCB_GETMENUHELP 0x0003
518 #define SFVCB_GETTOOLBARTIP 0x0004
519 #define SFVCB_GETTOOLBARINFO 0x0005
520 #define SFVCB_ADDTOOLBARITEMS 0x0006
521 #define SFVCB_INITMENUPOPUP 0x0007
522 #define SFVCB_SELECTIONCHANGED 0x0008
523 #define SFVCB_DRAWMENUITEM 0x0009
524 #define SFVCB_MEASUREMENUITEM 0x000A
525 #define SFVCB_EXITMENULOOP 0x000B
526 #define SFVCB_VIEWRELEASE 0x000C
527 #define SFVCB_GETNAMELENGTH 0x000D
528 #define SFVCB_CHANGENOTIFY 0x000E
529 #define SFVCB_WINDOWCREATED 0x000F
530 #define SFVCB_WINDOWCLOSING 0x0010
531 #define SFVCB_LISTREFRESHED 0x0011
532 #define SFVCB_WINDOWFOCUSED 0x0012
533 #define SFVCB_REGISTERCOPYHOOK 0x0014
534 #define SFVCB_COPYHOOKCALLBACK 0x0015
535 #define SFVCB_GETDETAILSOF 0x0017
536 #define SFVCB_COLUMNCLICK 0x0018
537 #define SFVCB_GETCHANGENOTIFYPIDL 0x0019
538 #define SFVCB_GETESTIMATEDCOUNT 0x001A
539 #define SFVCB_ADJUSTVIEWMODE 0x001B
540 #define SFVCB_REMOVEFROMMENU 0x001C
541 #define SFVCB_ADDINGOBJECT 0x001D
542 #define SFVCB_REMOVINGOBJECT 0x001E
543 #define SFVCB_UPDATESTATUSBAR 0x001F
544 #define SFVCB_ISSLOWREFRESH 0x0020
545 #define SFVCB_GETCOMMANDDIR 0x0021
546 #define SFVCB_GETCOLUMNSTREAM 0x0022
547 #define SFVCB_CANSELECTALL 0x0023
548 #define SFVCB_DRAGSUCCEEDED 0x0024
549 #define SFVCB_ISSTRICTREFRESH 0x0025
550 #define SFVCB_ISCHILDOBJECT 0x0026
552 /* Generic structure used by several messages */
559 } SFVCBINFO, * LPSFVCBINFO;
560 typedef const SFVCBINFO * LPCSFVCBINFO;
562 /* SFVCB_ADDTOMENU structure */
569 } SFVMENUINFO, * LPSFVMENUINFO;
571 /* SFVCB_GETTOOLBARINFO structure */
576 } SFVTOOLBARINFO, * LPSFVTOOLBARINFO;
578 /* SFVTOOLBARINFO flags */
582 SFVTI_ADDTOFRONT = 1,
586 /* SFVCB_SELECTIONCHANGED structure */
593 } SFVSELECTSTATE, * LPSFVSELECTSTATE;
594 typedef const SFVSELECTSTATE * LPCSFVSELECTSTATE;
596 /* SFVCB_COPYHOOKCALLBACK structure */
606 } SFVCOPYHOOKINFO, * LPSFVCOPYHOOKINFO;
607 typedef const SFVCOPYHOOKINFO * LPCSFVCOPYHOOKINFO;
609 /* SFVCB_GETDETAILSOF structure */
616 } SFVCOLUMNINFO, * LPSFVCOLUMNINFO;
618 int WINAPI SHShellFolderView_Message(
623 /* SHShellFolderView_Message messages */
624 #define SFVM_REARRANGE 0x0001
625 #define SFVM_GETARRANGECOLUMN 0x0002
626 #define SFVM_ADDOBJECT 0x0003
627 #define SFVM_GETITEMCOUNT 0x0004
628 #define SFVM_GETITEMPIDL 0x0005
629 #define SFVM_REMOVEOBJECT 0x0006
630 #define SFVM_UPDATEOBJECT 0x0007
631 #define SFVM_SETREDRAW 0x0008
632 #define SFVM_GETSELECTEDOBJECTS 0x0009
633 #define SFVM_ISDROPONSOURCE 0x000A
634 #define SFVM_MOVEICONS 0x000B
635 #define SFVM_GETDRAGPOINT 0x000C
636 #define SFVM_GETDROPPOINT 0x000D
637 #define SFVM_SETOBJECTPOS 0x000E
638 #define SFVM_ISDROPONBACKGROUND 0x000F
639 #define SFVM_CUTOBJECTS 0x0010
640 #define SFVM_TOGGLEAUTOARRANGE 0x0011
641 #define SFVM_LINEUPICONS 0x0012
642 #define SFVM_GETAUTOARRANGE 0x0013
643 #define SFVM_GETSELECTEDCOUNT 0x0014
644 #define SFVM_GETITEMSPACING 0x0015
645 #define SFVM_REFRESHOBJECT 0x0016
646 #define SFVM_SETCLIPBOARDPOINTS 0x0017
648 /****************************************************************************
652 /* SHWaitForFileToOpen flags */
653 #define SHWFF_ADD 0x01
654 #define SHWFF_REMOVE 0x02
655 #define SHWFF_WAIT 0x04
657 BOOL WINAPI SHWaitForFileToOpen(
662 WORD WINAPI ArrangeWindows(
667 CONST HWND * lpKids);
669 /* RegisterShellHook types */
670 #define RSH_DEREGISTER 0
671 #define RSH_REGISTER 1
672 #define RSH_REGISTER_PROGMAN 2
673 #define RSH_REGISTER_TASKMAN 3
675 BOOL WINAPI RegisterShellHook(
679 /* SHCreateDefClassObject callback function */
680 typedef HRESULT (CALLBACK *LPFNCDCOCALLBACK)(
685 HRESULT WINAPI SHCreateDefClassObject(
688 LPFNCDCOCALLBACK lpfnCallback,
692 DWORD WINAPI SHCLSIDFromStringA (LPCSTR clsid, CLSID *id);
693 DWORD WINAPI SHCLSIDFromStringW (LPCWSTR clsid, CLSID *id);
695 void WINAPI SHFreeUnusedLibraries();
697 /* SHCreateLinks flags */
698 #define SHCLF_PREFIXNAME 0x01
699 #define SHCLF_CREATEONDESKTOP 0x02
701 HRESULT WINAPI SHCreateLinks(
704 LPDATAOBJECT lpDataObject,
706 LPITEMIDLIST *lppidlLinks);
708 DWORD WINAPI CheckEscapesA(LPSTR string, DWORD len);
709 DWORD WINAPI CheckEscapesW(LPWSTR string, DWORD len);
711 /* policy functions */
712 BOOL WINAPI SHInitRestricted(LPCVOID unused, LPCVOID inpRegKey);
716 #endif /* defined(__cplusplus) */
718 #endif /* __WINE_UNDOCSHELL_H */