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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, 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 LPITEMIDLIST WINAPI
ILGlobalClone(LPCITEMIDLIST pidl
);
53 void WINAPI
ILGlobalFree(LPITEMIDLIST pidl
);
54 LPITEMIDLIST WINAPI
SHSimpleIDListFromPathA (LPCSTR lpszPath
); //FIXME
55 LPITEMIDLIST WINAPI
SHSimpleIDListFromPathW (LPCWSTR lpszPath
);
57 HRESULT WINAPI
SHILCreateFromPathA (
62 HRESULT WINAPI
SHILCreateFromPathW (
70 BOOL WINAPI
StrRetToStrNA(LPSTR
,DWORD
,LPSTRRET
,const ITEMIDLIST
*);
71 BOOL WINAPI
StrRetToStrNW(LPWSTR
,DWORD
,LPSTRRET
,const ITEMIDLIST
*);
74 /****************************************************************************
75 * SHChangeNotifyRegister API
77 #define SHCNRF_InterruptLevel 0x0001
78 #define SHCNRF_ShellLevel 0x0002
79 #define SHCNRF_RecursiveInterrupt 0x1000 /* Must be combined with SHCNRF_InterruptLevel */
80 #define SHCNRF_NewDelivery 0x8000 /* Messages use shared memory */
83 /****************************************************************************
84 * Shell Common Dialogs
87 /* RunFileDlg flags */
88 #define RFF_NOBROWSE 0x01
89 #define RFF_NODEFAULT 0x02
90 #define RFF_CALCDIRECTORY 0x04
91 #define RFF_NOLABEL 0x08
92 #define RFF_NOSEPARATEMEM 0x20 /* NT only */
94 #define DE_SAMEFILE 0x71
96 /* RunFileFlg notification structure */
103 } NM_RUNFILEDLG
, * LPNM_RUNFILEDLG
;
105 /* RunFileDlg notification return values */
107 #define RF_CANCEL 0x01
108 #define RF_RETRY 0x02
110 void WINAPI
RunFileDlg(
113 LPCWSTR lpstrDirectory
,
115 LPCWSTR lpstrDescription
,
118 void WINAPI
ExitWindowsDialog(HWND hwndOwner
);
120 BOOL WINAPI
SHFindComputer(
121 LPCITEMIDLIST pidlRoot
,
122 LPCITEMIDLIST pidlSavedSearch
);
124 void WINAPI
SHHandleDiskFull(HWND hwndOwner
,
127 int WINAPI
SHOutOfMemoryMessageBox(
132 DWORD WINAPI
SHNetConnectionDialog(
134 LPCWSTR lpstrRemoteName
,
137 /****************************************************************************
138 * Cabinet Window Messages
141 #define CWM_SETPATH (WM_USER + 2)
142 #define CWM_WANTIDLE (WM_USER + 3)
143 #define CWM_GETSETCURRENTINFO (WM_USER + 4)
144 #define CWM_SELECTITEM (WM_USER + 5)
145 #define CWM_SELECTITEMSTR (WM_USER + 6)
146 #define CWM_GETISHELLBROWSER (WM_USER + 7)
147 #define CWM_TESTPATH (WM_USER + 9)
148 #define CWM_STATECHANGE (WM_USER + 10)
149 #define CWM_GETPATH (WM_USER + 12)
151 /* CWM_TESTPATH types */
152 #define CWTP_ISEQUAL 0
153 #define CWTP_ISCHILD 1
155 /* CWM_TESTPATH structure */
160 } CWTESTPATHSTRUCT
,* LPCWTESTPATHSTRUCT
;
162 /****************************************************************************
163 * System Imagelist Routines
166 int WINAPI
Shell_GetCachedImageIndexA(
171 BOOL WINAPI
Shell_GetImageLists(
172 HIMAGELIST
*lphimlLarge
,
173 HIMAGELIST
*lphimlSmall
);
175 HICON WINAPI
SHGetFileIcon(
178 DWORD dwFileAttributes
,
181 BOOL WINAPI
FileIconInit(BOOL bFullInit
);
183 /****************************************************************************
186 /* FileMenu_Create nSelHeight constants */
187 #define FM_DEFAULT_SELHEIGHT -1
188 #define FM_FULL_SELHEIGHT 0
190 /* FileMenu_Create flags */
191 #define FMF_SMALL_ICONS 0x00
192 #define FMF_LARGE_ICONS 0x08
193 #define FMF_NO_COLUMN_BREAK 0x10
195 HMENU WINAPI
FileMenu_Create(
196 COLORREF crBorderColor
,
202 void WINAPI
FileMenu_Destroy(HMENU hMenu
);
204 /* FileMenu_AppendItem constants */
205 #define FM_SEPARATOR (LPCSTR)1
206 #define FM_BLANK_ICON -1
207 #define FM_DEFAULT_HEIGHT 0
209 BOOL WINAPI
FileMenu_AppendItem(
217 /* FileMenu_InsertUsingPidl flags */
218 #define FMF_NO_EMPTY_ITEM 0x01
219 #define FMF_NO_PROGRAM_GROUPS 0x04
221 /* FileMenu_InsertUsingPidl callback function */
222 typedef void (CALLBACK
*LPFNFMCALLBACK
)(LPCITEMIDLIST pidlFolder
, LPCITEMIDLIST pidlFile
);
224 int WINAPI
FileMenu_InsertUsingPidl(
230 LPFNFMCALLBACK lpfnCallback
);
232 int WINAPI
FileMenu_ReplaceUsingPidl(
237 LPFNFMCALLBACK lpfnCallback
);
239 void WINAPI
FileMenu_Invalidate(HMENU hMenu
);
241 HMENU WINAPI
FileMenu_FindSubMenuByPidl(
245 BOOL WINAPI
FileMenu_TrackPopupMenuEx(
253 BOOL WINAPI
FileMenu_GetLastSelectedItemPidls(
255 LPCITEMIDLIST
*ppidlFolder
,
256 LPCITEMIDLIST
*ppidlItem
);
258 LRESULT WINAPI
FileMenu_MeasureItem(
260 LPMEASUREITEMSTRUCT lpmis
);
262 LRESULT WINAPI
FileMenu_DrawItem(
264 LPDRAWITEMSTRUCT lpdis
);
266 BOOL WINAPI
FileMenu_InitMenuPopup(HMENU hMenu
);
268 void WINAPI
FileMenu_AbortInitMenu(void);
270 LRESULT WINAPI
FileMenu_HandleMenuChar(
274 BOOL WINAPI
FileMenu_DeleteAllItems(HMENU hMenu
);
276 BOOL WINAPI
FileMenu_DeleteItemByCmd(
280 BOOL WINAPI
FileMenu_DeleteItemByIndex(
284 BOOL WINAPI
FileMenu_DeleteMenuItemByFirstID(
288 BOOL WINAPI
FileMenu_DeleteSeparator(HMENU hMenu
);
290 BOOL WINAPI
FileMenu_EnableItemByCmd(
295 DWORD WINAPI
FileMenu_GetItemExtent(
299 int WINAPI
FileMenu_AppendFilesForPidl(
304 int WINAPI
FileMenu_AddFilesForPidl(
311 LPFNFMCALLBACK lpfnCallback
);
313 /****************************************************************************
314 * Drag And Drop Routines
317 HRESULT WINAPI
SHRegisterDragDrop(
319 LPDROPTARGET lpDropTarget
);
321 HRESULT WINAPI
SHRevokeDragDrop(HWND hWnd
);
323 BOOL WINAPI
DAD_DragEnter(HWND hWnd
);
325 BOOL WINAPI
DAD_SetDragImageFromListView(
329 BOOL WINAPI
DAD_ShowDragImage(BOOL bShow
);
331 /****************************************************************************
332 * Path Manipulation Routines
335 BOOL WINAPI
PathAppendAW(LPVOID lpszPath1
, LPCVOID lpszPath2
);
337 LPVOID WINAPI
PathCombineAW(LPVOID szDest
, LPCVOID lpszDir
, LPCVOID lpszFile
);
339 LPVOID WINAPI
PathAddBackslashAW(LPVOID path
);
341 LPVOID WINAPI
PathBuildRootAW(LPVOID lpszPath
, int drive
);
343 LPVOID WINAPI
PathFindExtensionAW(LPCVOID path
);
345 LPVOID WINAPI
PathFindFileNameAW(LPCVOID path
);
347 LPVOID WINAPI
PathGetExtensionAW(LPCVOID lpszPath
, DWORD void1
, DWORD void2
);
349 LPVOID WINAPI
PathGetArgsAW(LPVOID lpszPath
);
351 BOOL WINAPI
PathRemoveFileSpecAW(LPVOID lpszPath
);
353 void WINAPI
PathRemoveBlanksAW(LPVOID lpszPath
);
355 VOID WINAPI
PathQuoteSpacesAW(LPVOID path
);
357 void WINAPI
PathUnquoteSpacesAW(LPVOID lpszPath
);
359 BOOL WINAPI
PathIsUNCAW(LPCVOID lpszPath
);
361 BOOL WINAPI
PathIsRelativeAW(LPCVOID lpszPath
);
363 BOOL WINAPI
PathIsRootAW(LPCVOID x
);
365 BOOL WINAPI
PathIsExeAW(LPCVOID lpszPath
);
367 BOOL WINAPI
PathIsDirectoryAW(LPCVOID lpszPath
);
369 BOOL WINAPI
PathFileExistsAW(LPCVOID lpszPath
);
371 BOOL WINAPI
PathMatchSpecAW(LPVOID lpszPath
, LPVOID lpszSpec
);
373 BOOL WINAPI
PathMakeUniqueNameAW(
376 LPCVOID lpszShortName
,
377 LPCVOID lpszLongName
,
378 LPCVOID lpszPathName
);
380 BOOL WINAPI
PathYetAnotherMakeUniqueName(
382 LPCWSTR lpszPathName
,
383 LPCWSTR lpszShortName
,
384 LPCWSTR lpszLongName
);
386 BOOL WINAPI
PathQualifyAW(LPCVOID path
);
389 /* PathResolve flags */
390 #define PRF_CHECKEXISTANCE 0x01
391 #define PRF_EXECUTABLE 0x02
392 #define PRF_QUALIFYONPATH 0x04
393 #define PRF_WINDOWS31 0x08
395 BOOL WINAPI
PathResolveAW(LPVOID lpszPath
, LPCVOID
*alpszPaths
, DWORD dwFlags
);
397 VOID WINAPI
PathSetDlgItemPathAW(HWND hDlg
, int nIDDlgItem
, LPCVOID lpszPath
);
399 /* PathProcessCommand flags */
400 #define PPCF_QUOTEPATH 0x01 /* implies PPCF_INCLUDEARGS */
401 #define PPCF_INCLUDEARGS 0x02
402 //#define PPCF_NODIRECTORIES 0x10 move to shlobj
403 #define PPCF_DONTRESOLVE 0x20
404 #define PPCF_PATHISRELATIVE 0x40
406 HRESULT WINAPI
PathProcessCommandAW(LPCVOID lpszPath
, LPVOID lpszBuff
,
407 DWORD dwBuffSize
, DWORD dwFlags
);
409 void WINAPI
PathStripPathAW(LPVOID lpszPath
);
411 BOOL WINAPI
PathStripToRootAW(LPVOID lpszPath
);
413 void WINAPI
PathRemoveArgsAW(LPVOID lpszPath
);
415 void WINAPI
PathRemoveExtensionAW(LPVOID lpszPath
);
417 int WINAPI
PathParseIconLocationAW(LPVOID lpszPath
);
419 BOOL WINAPI
PathIsSameRootAW(LPCVOID lpszPath1
, LPCVOID lpszPath2
);
421 BOOL WINAPI
PathFindOnPathAW(LPVOID sFile
, LPCVOID
*sOtherDirs
);
423 /****************************************************************************
424 * Shell Namespace Routines
427 /* Generic structure used by several messages */
434 } SFVCBINFO
, * LPSFVCBINFO
;
435 typedef const SFVCBINFO
* LPCSFVCBINFO
;
437 /* SFVCB_SELECTIONCHANGED structure */
444 } SFVSELECTSTATE
, * LPSFVSELECTSTATE
;
445 typedef const SFVSELECTSTATE
* LPCSFVSELECTSTATE
;
447 /* SFVCB_COPYHOOKCALLBACK structure */
457 } SFVCOPYHOOKINFO
, * LPSFVCOPYHOOKINFO
;
458 typedef const SFVCOPYHOOKINFO
* LPCSFVCOPYHOOKINFO
;
460 /* SFVCB_GETDETAILSOF structure */
467 } SFVCOLUMNINFO
, * LPSFVCOLUMNINFO
;
469 /****************************************************************************
473 /* SHWaitForFileToOpen flags */
474 #define SHWFF_ADD 0x01
475 #define SHWFF_REMOVE 0x02
476 #define SHWFF_WAIT 0x04
478 BOOL WINAPI
SHWaitForFileToOpen(
483 WORD WINAPI
ArrangeWindows(
488 CONST HWND
* lpKids
);
490 /* RegisterShellHook types */
491 #define RSH_DEREGISTER 0
492 #define RSH_REGISTER 1
493 #define RSH_REGISTER_PROGMAN 2
494 #define RSH_REGISTER_TASKMAN 3
496 BOOL WINAPI
RegisterShellHook(
500 /* SHCreateDefClassObject callback function */
501 typedef HRESULT (CALLBACK
*LPFNCDCOCALLBACK
)(
506 HRESULT WINAPI
SHCreateDefClassObject(
509 LPFNCDCOCALLBACK lpfnCallback
,
513 void WINAPI
SHFreeUnusedLibraries(void);
515 /* SHCreateLinks flags */
516 #define SHCLF_PREFIXNAME 0x01
517 #define SHCLF_CREATEONDESKTOP 0x02
519 HRESULT WINAPI
SHCreateLinks(
522 LPDATAOBJECT lpDataObject
,
524 LPITEMIDLIST
*lppidlLinks
);
526 DWORD WINAPI
CheckEscapesA(LPSTR string
, DWORD len
);
527 DWORD WINAPI
CheckEscapesW(LPWSTR string
, DWORD len
);
529 /* policy functions */
530 BOOL WINAPI
SHInitRestricted(LPCVOID unused
, LPCVOID inpRegKey
);
532 /* Shell Desktop functions */
534 #define WM_GETISHELLBROWSER (WM_USER+7)
536 BOOL WINAPI
SHDesktopMessageLoop(HANDLE
);
538 #define CSIDL_FOLDER_MASK 0x00ff
542 #endif /* defined(__cplusplus) */
544 #endif /* __WINE_UNDOCSHELL_H */