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 int WINAPI
RestartDialog(
140 BOOL WINAPI
GetFileNameFromBrowse(
144 LPCSTR lpstrInitialDir
,
149 BOOL WINAPI
SHFindComputer(
150 LPCITEMIDLIST pidlRoot
,
151 LPCITEMIDLIST pidlSavedSearch
);
153 void WINAPI
SHHandleDiskFull(HWND hwndOwner
,
156 int WINAPI
SHOutOfMemoryMessageBox(
161 DWORD WINAPI
SHNetConnectionDialog(
163 LPCSTR lpstrRemoteName
,
166 /****************************************************************************
170 HANDLE WINAPI
SHAllocShared(
175 BOOL WINAPI
SHFreeShared(
179 LPVOID WINAPI
SHLockShared(
183 BOOL WINAPI
SHUnlockShared(LPVOID pv
);
185 /****************************************************************************
186 * Cabinet Window Messages
189 #define CWM_SETPATH (WM_USER + 2)
190 #define CWM_WANTIDLE (WM_USER + 3)
191 #define CWM_GETSETCURRENTINFO (WM_USER + 4)
192 #define CWM_SELECTITEM (WM_USER + 5)
193 #define CWM_SELECTITEMSTR (WM_USER + 6)
194 #define CWM_GETISHELLBROWSER (WM_USER + 7)
195 #define CWM_TESTPATH (WM_USER + 9)
196 #define CWM_STATECHANGE (WM_USER + 10)
197 #define CWM_GETPATH (WM_USER + 12)
199 /* CWM_TESTPATH types */
200 #define CWTP_ISEQUAL 0
201 #define CWTP_ISCHILD 1
203 /* CWM_TESTPATH structure */
208 } CWTESTPATHSTRUCT
,* LPCWTESTPATHSTRUCT
;
210 /****************************************************************************
211 * System Imagelist Routines
214 int WINAPI
Shell_GetCachedImageIndex(
219 BOOL WINAPI
Shell_GetImageLists(
220 HIMAGELIST
*lphimlLarge
,
221 HIMAGELIST
*lphimlSmall
);
223 HICON WINAPI
SHGetFileIcon(
226 DWORD dwFileAttributes
,
229 BOOL WINAPI
FileIconInit(BOOL bFullInit
);
231 /****************************************************************************
234 /* FileMenu_Create nSelHeight constants */
235 #define FM_DEFAULT_SELHEIGHT -1
236 #define FM_FULL_SELHEIGHT 0
238 /* FileMenu_Create flags */
239 #define FMF_SMALL_ICONS 0x00
240 #define FMF_LARGE_ICONS 0x08
241 #define FMF_NO_COLUMN_BREAK 0x10
243 HMENU WINAPI
FileMenu_Create(
244 COLORREF crBorderColor
,
250 void WINAPI
FileMenu_Destroy(HMENU hMenu
);
252 /* FileMenu_AppendItem constants */
253 #define FM_SEPARATOR (LPCSTR)1
254 #define FM_BLANK_ICON -1
255 #define FM_DEFAULT_HEIGHT 0
257 BOOL WINAPI
FileMenu_AppendItem(
265 /* FileMenu_InsertUsingPidl flags */
266 #define FMF_NO_EMPTY_ITEM 0x01
267 #define FMF_NO_PROGRAM_GROUPS 0x04
269 /* FileMenu_InsertUsingPidl callback function */
270 typedef void (CALLBACK
*LPFNFMCALLBACK
)(LPCITEMIDLIST pidlFolder
, LPCITEMIDLIST pidlFile
);
272 int WINAPI
FileMenu_InsertUsingPidl(
278 LPFNFMCALLBACK lpfnCallback
);
280 int WINAPI
FileMenu_ReplaceUsingPidl(
285 LPFNFMCALLBACK lpfnCallback
);
287 void WINAPI
FileMenu_Invalidate(HMENU hMenu
);
289 HMENU WINAPI
FileMenu_FindSubMenuByPidl(
293 BOOL WINAPI
FileMenu_TrackPopupMenuEx(
301 BOOL WINAPI
FileMenu_GetLastSelectedItemPidls(
303 LPCITEMIDLIST
*ppidlFolder
,
304 LPCITEMIDLIST
*ppidlItem
);
306 LRESULT WINAPI
FileMenu_MeasureItem(
308 LPMEASUREITEMSTRUCT lpmis
);
310 LRESULT WINAPI
FileMenu_DrawItem(
312 LPDRAWITEMSTRUCT lpdis
);
314 BOOL WINAPI
FileMenu_InitMenuPopup(HMENU hMenu
);
316 void WINAPI
FileMenu_AbortInitMenu(void);
318 LRESULT WINAPI
FileMenu_HandleMenuChar(
322 BOOL WINAPI
FileMenu_DeleteAllItems(HMENU hMenu
);
324 BOOL WINAPI
FileMenu_DeleteItemByCmd(
328 BOOL WINAPI
FileMenu_DeleteItemByIndex(
332 BOOL WINAPI
FileMenu_DeleteMenuItemByFirstID(
336 BOOL WINAPI
FileMenu_DeleteSeparator(HMENU hMenu
);
338 BOOL WINAPI
FileMenu_EnableItemByCmd(
343 DWORD WINAPI
FileMenu_GetItemExtent(
347 int WINAPI
FileMenu_AppendFilesForPidl(
352 int WINAPI
FileMenu_AddFilesForPidl(
359 LPFNFMCALLBACK lpfnCallback
);
361 /****************************************************************************
362 * Drag And Drop Routines
364 HRESULT WINAPI
SHLoadOLE(DWORD dwFlags
);
366 HRESULT WINAPI
SHRegisterDragDrop(
368 LPDROPTARGET lpDropTarget
);
370 HRESULT WINAPI
SHRevokeDragDrop(HWND hWnd
);
372 BOOL WINAPI
DAD_DragEnter(HWND hWnd
);
374 BOOL WINAPI
DAD_SetDragImageFromListView(
378 BOOL WINAPI
DAD_ShowDragImage(BOOL bShow
);
380 HRESULT WINAPI
CIDLData_CreateFromIDArray(
381 LPCITEMIDLIST pidlFolder
,
383 LPCITEMIDLIST
*lppidlFiles
,
384 LPDATAOBJECT
*ppdataObject
);
386 /****************************************************************************
387 * Path Manipulation Routines
390 BOOL WINAPI
PathAppendAW(LPVOID lpszPath1
, LPCVOID lpszPath2
);
392 LPVOID WINAPI
PathCombineAW(LPVOID szDest
, LPCVOID lpszDir
, LPCVOID lpszFile
);
394 LPVOID WINAPI
PathAddBackslashAW(LPVOID path
);
396 LPVOID WINAPI
PathBuildRootAW(LPVOID lpszPath
, int drive
);
398 LPVOID WINAPI
PathFindExtensionAW(LPCVOID path
);
400 LPVOID WINAPI
PathFindFileNameAW(LPCVOID path
);
402 LPVOID WINAPI
PathGetExtensionAW(LPCVOID lpszPath
, DWORD void1
, DWORD void2
);
404 LPVOID WINAPI
PathGetArgsAW(LPVOID lpszPath
);
406 BOOL WINAPI
PathRemoveFileSpecAW(LPVOID lpszPath
);
408 void WINAPI
PathRemoveBlanksAW(LPVOID lpszPath
);
410 VOID WINAPI
PathQuoteSpacesAW(LPVOID path
);
412 void WINAPI
PathUnquoteSpacesAW(LPVOID lpszPath
);
414 BOOL WINAPI
PathIsUNCAW(LPCVOID lpszPath
);
416 BOOL WINAPI
PathIsRelativeAW(LPCVOID lpszPath
);
418 BOOL WINAPI
PathIsRootAW(LPCVOID x
);
420 BOOL WINAPI
PathIsExeAW(LPCVOID lpszPath
);
422 BOOL WINAPI
PathIsDirectoryAW(LPCVOID lpszPath
);
424 BOOL WINAPI
PathFileExistsAW(LPCVOID lpszPath
);
426 BOOL WINAPI
PathMatchSpecAW(LPVOID lpszPath
, LPVOID lpszSpec
);
428 BOOL WINAPI
PathMakeUniqueNameAW(
431 LPCVOID lpszShortName
,
432 LPCVOID lpszLongName
,
433 LPCVOID lpszPathName
);
435 BOOL WINAPI
PathYetAnotherMakeUniqueName(
437 LPCWSTR lpszPathName
,
438 LPCWSTR lpszShortName
,
439 LPCWSTR lpszLongName
);
441 /* PathCleanupSpec return values */
442 #define PCS_REPLACEDCHARS 0x00000001
443 #define PCS_REMOVEDCHARS 0x00000002
444 #define PCS_SHORTENED 0x00000004
445 #define PCS_PATHTOOLONG 0x80000008
447 DWORD WINAPI
PathCleanupSpecAW(LPCVOID lpszPath
, LPVOID lpszFile
);
449 BOOL WINAPI
PathQualifyA(LPCSTR path
);
450 BOOL WINAPI
PathQualifyW(LPCWSTR path
);
451 #define PathQualify WINELIB_NAME_AW(PathQualify)
452 BOOL WINAPI
PathQualifyAW(LPCVOID path
);
455 /* PathResolve flags */
456 #define PRF_CHECKEXISTANCE 0x01
457 #define PRF_EXECUTABLE 0x02
458 #define PRF_QUALIFYONPATH 0x04
459 #define PRF_WINDOWS31 0x08
461 BOOL WINAPI
PathResolveAW(LPVOID lpszPath
, LPCVOID
*alpszPaths
, DWORD dwFlags
);
463 VOID WINAPI
PathSetDlgItemPathAW(HWND hDlg
, int nIDDlgItem
, LPCVOID lpszPath
);
465 /* PathProcessCommand flags */
466 #define PPCF_QUOTEPATH 0x01 /* implies PPCF_INCLUDEARGS */
467 #define PPCF_INCLUDEARGS 0x02
468 #define PPCF_NODIRECTORIES 0x10
469 #define PPCF_DONTRESOLVE 0x20
470 #define PPCF_PATHISRELATIVE 0x40
472 HRESULT WINAPI
PathProcessCommandAW(LPCVOID lpszPath
, LPVOID lpszBuff
,
473 DWORD dwBuffSize
, DWORD dwFlags
);
475 void WINAPI
PathStripPathAW(LPVOID lpszPath
);
477 BOOL WINAPI
PathStripToRootAW(LPVOID lpszPath
);
479 void WINAPI
PathRemoveArgsAW(LPVOID lpszPath
);
481 void WINAPI
PathRemoveExtensionAW(LPVOID lpszPath
);
483 int WINAPI
PathParseIconLocationAW(LPVOID lpszPath
);
485 BOOL WINAPI
PathIsSameRootAW(LPCVOID lpszPath1
, LPCVOID lpszPath2
);
487 BOOL WINAPI
PathFindOnPathAW(LPVOID sFile
, LPCVOID sOtherDirs
);
489 /****************************************************************************
490 * Shell Namespace Routines
493 /* SHCreateShellFolderViewEx callback function */
494 typedef HRESULT (CALLBACK
*LPFNSFVCALLBACK
)(
502 /* SHCreateShellFolderViewEx structure */
508 LPCITEMIDLIST pidlFolder
;
510 LPFNSFVCALLBACK lpfnCallback
;
512 } SHELLFOLDERVIEWINFO
, * LPSHELLFOLDERVIEWINFO
;
513 typedef const SHELLFOLDERVIEWINFO
* LPCSHELLFOLDERVIEWINFO
;
515 HRESULT WINAPI
SHCreateShellFolderViewEx(
516 LPCSHELLFOLDERVIEWINFO pshfvi
,
519 /* SHCreateShellFolderViewEx callback messages */
520 #define SFVCB_ADDTOMENU 0x0001
521 #define SFVCB_INVOKECOMMAND 0x0002
522 #define SFVCB_GETMENUHELP 0x0003
523 #define SFVCB_GETTOOLBARTIP 0x0004
524 #define SFVCB_GETTOOLBARINFO 0x0005
525 #define SFVCB_ADDTOOLBARITEMS 0x0006
526 #define SFVCB_INITMENUPOPUP 0x0007
527 #define SFVCB_SELECTIONCHANGED 0x0008
528 #define SFVCB_DRAWMENUITEM 0x0009
529 #define SFVCB_MEASUREMENUITEM 0x000A
530 #define SFVCB_EXITMENULOOP 0x000B
531 #define SFVCB_VIEWRELEASE 0x000C
532 #define SFVCB_GETNAMELENGTH 0x000D
533 #define SFVCB_CHANGENOTIFY 0x000E
534 #define SFVCB_WINDOWCREATED 0x000F
535 #define SFVCB_WINDOWCLOSING 0x0010
536 #define SFVCB_LISTREFRESHED 0x0011
537 #define SFVCB_WINDOWFOCUSED 0x0012
538 #define SFVCB_REGISTERCOPYHOOK 0x0014
539 #define SFVCB_COPYHOOKCALLBACK 0x0015
540 #define SFVCB_GETDETAILSOF 0x0017
541 #define SFVCB_COLUMNCLICK 0x0018
542 #define SFVCB_GETCHANGENOTIFYPIDL 0x0019
543 #define SFVCB_GETESTIMATEDCOUNT 0x001A
544 #define SFVCB_ADJUSTVIEWMODE 0x001B
545 #define SFVCB_REMOVEFROMMENU 0x001C
546 #define SFVCB_ADDINGOBJECT 0x001D
547 #define SFVCB_REMOVINGOBJECT 0x001E
548 #define SFVCB_UPDATESTATUSBAR 0x001F
549 #define SFVCB_ISSLOWREFRESH 0x0020
550 #define SFVCB_GETCOMMANDDIR 0x0021
551 #define SFVCB_GETCOLUMNSTREAM 0x0022
552 #define SFVCB_CANSELECTALL 0x0023
553 #define SFVCB_DRAGSUCCEEDED 0x0024
554 #define SFVCB_ISSTRICTREFRESH 0x0025
555 #define SFVCB_ISCHILDOBJECT 0x0026
557 /* Generic structure used by several messages */
564 } SFVCBINFO
, * LPSFVCBINFO
;
565 typedef const SFVCBINFO
* LPCSFVCBINFO
;
567 /* SFVCB_ADDTOMENU structure */
574 } SFVMENUINFO
, * LPSFVMENUINFO
;
576 /* SFVCB_GETTOOLBARINFO structure */
581 } SFVTOOLBARINFO
, * LPSFVTOOLBARINFO
;
583 /* SFVTOOLBARINFO flags */
587 SFVTI_ADDTOFRONT
= 1,
591 /* SFVCB_SELECTIONCHANGED structure */
598 } SFVSELECTSTATE
, * LPSFVSELECTSTATE
;
599 typedef const SFVSELECTSTATE
* LPCSFVSELECTSTATE
;
601 /* SFVCB_COPYHOOKCALLBACK structure */
611 } SFVCOPYHOOKINFO
, * LPSFVCOPYHOOKINFO
;
612 typedef const SFVCOPYHOOKINFO
* LPCSFVCOPYHOOKINFO
;
614 /* SFVCB_GETDETAILSOF structure */
621 } SFVCOLUMNINFO
, * LPSFVCOLUMNINFO
;
623 int WINAPI
SHShellFolderView_Message(
628 /* SHShellFolderView_Message messages */
629 #define SFVM_REARRANGE 0x0001
630 #define SFVM_GETARRANGECOLUMN 0x0002
631 #define SFVM_ADDOBJECT 0x0003
632 #define SFVM_GETITEMCOUNT 0x0004
633 #define SFVM_GETITEMPIDL 0x0005
634 #define SFVM_REMOVEOBJECT 0x0006
635 #define SFVM_UPDATEOBJECT 0x0007
636 #define SFVM_SETREDRAW 0x0008
637 #define SFVM_GETSELECTEDOBJECTS 0x0009
638 #define SFVM_ISDROPONSOURCE 0x000A
639 #define SFVM_MOVEICONS 0x000B
640 #define SFVM_GETDRAGPOINT 0x000C
641 #define SFVM_GETDROPPOINT 0x000D
642 #define SFVM_SETOBJECTPOS 0x000E
643 #define SFVM_ISDROPONBACKGROUND 0x000F
644 #define SFVM_CUTOBJECTS 0x0010
645 #define SFVM_TOGGLEAUTOARRANGE 0x0011
646 #define SFVM_LINEUPICONS 0x0012
647 #define SFVM_GETAUTOARRANGE 0x0013
648 #define SFVM_GETSELECTEDCOUNT 0x0014
649 #define SFVM_GETITEMSPACING 0x0015
650 #define SFVM_REFRESHOBJECT 0x0016
651 #define SFVM_SETCLIPBOARDPOINTS 0x0017
653 /****************************************************************************
657 /* SHWaitForFileToOpen flags */
658 #define SHWFF_ADD 0x01
659 #define SHWFF_REMOVE 0x02
660 #define SHWFF_WAIT 0x04
662 BOOL WINAPI
SHWaitForFileToOpen(
667 WORD WINAPI
ArrangeWindows(
672 CONST HWND
* lpKids
);
674 /* RegisterShellHook types */
675 #define RSH_DEREGISTER 0
676 #define RSH_REGISTER 1
677 #define RSH_REGISTER_PROGMAN 2
678 #define RSH_REGISTER_TASKMAN 3
680 BOOL WINAPI
RegisterShellHook(
684 /* SHCreateDefClassObject callback function */
685 typedef HRESULT (CALLBACK
*LPFNCDCOCALLBACK
)(
690 HRESULT WINAPI
SHCreateDefClassObject(
693 LPFNCDCOCALLBACK lpfnCallback
,
697 DWORD WINAPI
SHCLSIDFromStringA (LPCSTR clsid
, CLSID
*id
);
698 DWORD WINAPI
SHCLSIDFromStringW (LPCWSTR clsid
, CLSID
*id
);
700 void WINAPI
SHFreeUnusedLibraries();
702 /* SHCreateLinks flags */
703 #define SHCLF_PREFIXNAME 0x01
704 #define SHCLF_CREATEONDESKTOP 0x02
706 HRESULT WINAPI
SHCreateLinks(
709 LPDATAOBJECT lpDataObject
,
711 LPITEMIDLIST
*lppidlLinks
);
713 DWORD WINAPI
CheckEscapesA(LPSTR string
, DWORD len
);
714 DWORD WINAPI
CheckEscapesW(LPWSTR string
, DWORD len
);
716 /* policy functions */
717 BOOL WINAPI
SHInitRestricted(LPCVOID unused
, LPCVOID inpRegKey
);
721 #endif /* defined(__cplusplus) */
723 #endif /* __WINE_UNDOCSHELL_H */