blob: 38ccc1ede9f9c95e4957d49e0b03f179e17954b5 [file] [log] [blame]
Alexandre Julliard0799c1a2002-03-09 23:29:33 +00001/*
2 * Copyright 1999, 2000 Juergen Schmied
3 *
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.
8 *
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.
13 *
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
17 */
18
Juergen Schmiedf518b191999-07-25 12:17:31 +000019#ifndef __WINE_UNDOCSHELL_H
20#define __WINE_UNDOCSHELL_H
21
22#include "windef.h"
Juergen Schmied51c74d82000-04-28 20:23:46 +000023#include "commctrl.h"
Alexandre Julliard74af67e2000-09-26 00:00:55 +000024#include "shlobj.h"
Juergen Schmiedf518b191999-07-25 12:17:31 +000025
26#ifdef __cplusplus
27extern "C" {
28#endif /* defined(__cplusplus) */
29
30/****************************************************************************
31 * IDList Functions
32 */
33LPITEMIDLIST WINAPI ILClone (LPCITEMIDLIST pidl);
34LPITEMIDLIST WINAPI ILCloneFirst(LPCITEMIDLIST pidl);
Juergen Schmied51c74d82000-04-28 20:23:46 +000035
36LPITEMIDLIST WINAPI ILCombine(
37 LPCITEMIDLIST iil1,
38 LPCITEMIDLIST iil2);
Juergen Schmiedf518b191999-07-25 12:17:31 +000039
40DWORD WINAPI ILGetSize(LPITEMIDLIST pidl);
41
42LPITEMIDLIST WINAPI ILGetNext(LPITEMIDLIST pidl);
43LPITEMIDLIST WINAPI ILFindLastID(LPITEMIDLIST pidl);
44BOOL WINAPI ILRemoveLastID(LPCITEMIDLIST pidl);
Juergen Schmiedf518b191999-07-25 12:17:31 +000045
Juergen Schmied51c74d82000-04-28 20:23:46 +000046LPITEMIDLIST WINAPI ILFindChild(
47 LPCITEMIDLIST pidl1,
48 LPCITEMIDLIST pidl2);
Juergen Schmiedf518b191999-07-25 12:17:31 +000049
Juergen Schmied51c74d82000-04-28 20:23:46 +000050LPITEMIDLIST WINAPI ILAppendID(
51 LPITEMIDLIST pidl,
52 LPCSHITEMID lpItemID,
53 BOOL bAddToEnd);
54
55BOOL WINAPI ILIsEqual(
56 LPCITEMIDLIST pidl1,
57 LPCITEMIDLIST pidl2);
58
59BOOL WINAPI ILIsParent(
60 LPCITEMIDLIST pidlParent,
61 LPCITEMIDLIST pidlChild,
62 BOOL bImmediate);
63
64BOOL WINAPI ILGetDisplayName(
65 LPCITEMIDLIST pidl,
66 LPSTR path);
Juergen Schmiedf518b191999-07-25 12:17:31 +000067
68DWORD WINAPI ILFree(LPITEMIDLIST pidl);
69
Juergen Schmied51c74d82000-04-28 20:23:46 +000070HRESULT WINAPI ILSaveToStream(
71 LPSTREAM pstrm,
72 LPCITEMIDLIST pidl);
73
74HRESULT WINAPI ILLoadFromStream(
75 LPSTREAM pstrm,
76 LPITEMIDLIST *ppidl);
77
78LPITEMIDLIST WINAPI ILGlobalClone(LPCITEMIDLIST pidl);
79void WINAPI ILGlobalFree(LPCITEMIDLIST pidl);
80
Juergen Schmiede2b88042000-02-20 18:46:28 +000081LPITEMIDLIST WINAPI SHSimpleIDListFromPathA (LPCSTR lpszPath);
82LPITEMIDLIST WINAPI SHSimpleIDListFromPathW (LPCWSTR lpszPath);
83LPITEMIDLIST WINAPI SHSimpleIDListFromPathAW (LPCVOID lpszPath);
Juergen Schmiedf518b191999-07-25 12:17:31 +000084
Juergen Schmied51c74d82000-04-28 20:23:46 +000085HRESULT WINAPI SHILCreateFromPathA (
86 LPCSTR path,
87 LPITEMIDLIST * ppidl,
88 DWORD *attributes);
89
90HRESULT WINAPI SHILCreateFromPathW (
91 LPCWSTR path,
92 LPITEMIDLIST * ppidl,
93 DWORD *attributes);
94
95HRESULT WINAPI SHILCreateFromPathAW (
96 LPCVOID path,
97 LPITEMIDLIST * ppidl,
98 DWORD *attributes);
Juergen Schmiedf518b191999-07-25 12:17:31 +000099
Juergen Schmiedeac255c1999-08-15 14:31:36 +0000100LPITEMIDLIST WINAPI ILCreateFromPathA(LPCSTR path);
101LPITEMIDLIST WINAPI ILCreateFromPathW(LPCWSTR path);
102LPITEMIDLIST WINAPI ILCreateFromPathAW(LPCVOID path);
Juergen Schmiedf518b191999-07-25 12:17:31 +0000103
Juergen Schmied51c74d82000-04-28 20:23:46 +0000104HRESULT WINAPI SHBindToParent(
105 LPCITEMIDLIST pidl,
106 REFIID riid,
107 LPVOID *ppv,
108 LPCITEMIDLIST *ppidlLast);
109
Juergen Schmiedf518b191999-07-25 12:17:31 +0000110/*
111 string functions
112*/
Juergen Schmied51c74d82000-04-28 20:23:46 +0000113HRESULT WINAPI StrRetToStrNA (
114 LPVOID dest,
115 DWORD len,
116 LPSTRRET src,
Alexandre Julliard74af67e2000-09-26 00:00:55 +0000117 const ITEMIDLIST *pidl);
Juergen Schmiedf518b191999-07-25 12:17:31 +0000118
Juergen Schmied51c74d82000-04-28 20:23:46 +0000119HRESULT WINAPI StrRetToStrNW (
120 LPVOID dest,
121 DWORD len,
122 LPSTRRET src,
Alexandre Julliard74af67e2000-09-26 00:00:55 +0000123 const ITEMIDLIST *pidl);
Patrik Stridvall478eee11999-07-31 13:13:23 +0000124
Juergen Schmied51c74d82000-04-28 20:23:46 +0000125HRESULT WINAPI StrRetToStrNAW (
126 LPVOID dest,
127 DWORD len,
128 LPSTRRET src,
Alexandre Julliard74af67e2000-09-26 00:00:55 +0000129 const ITEMIDLIST *pidl);
Juergen Schmied50f067b2000-02-26 18:44:08 +0000130
Juergen Schmied50f067b2000-02-26 18:44:08 +0000131
132/****************************************************************************
133* SHChangeNotifyRegister API
134*/
135#define SHCNF_ACCEPT_INTERRUPTS 0x0001
136#define SHCNF_ACCEPT_NON_INTERRUPTS 0x0002
137#define SHCNF_NO_PROXY 0x8001
138
139typedef struct
140{
141 LPCITEMIDLIST pidlPath;
142 BOOL bWatchSubtree;
143} NOTIFYREGISTER, *LPNOTIFYREGISTER;
144
145typedef const LPNOTIFYREGISTER LPCNOTIFYREGISTER;
146
147typedef struct
148{
149 USHORT cb;
150 DWORD dwItem1;
151 DWORD dwItem2;
152} DWORDITEMID;
153
154HANDLE WINAPI SHChangeNotifyRegister(
Juergen Schmied51c74d82000-04-28 20:23:46 +0000155 HWND hwnd,
156 LONG dwFlags,
157 LONG wEventMask,
158 DWORD uMsg,
159 int cItems,
160 LPCNOTIFYREGISTER lpItems);
Juergen Schmied50f067b2000-02-26 18:44:08 +0000161
Juergen Schmied51c74d82000-04-28 20:23:46 +0000162BOOL WINAPI SHChangeNotifyDeregister(HANDLE hNotify);
163
164HANDLE WINAPI SHChangeNotification_Lock(
165 HANDLE hMemoryMap,
166 DWORD dwProcessId,
167 LPCITEMIDLIST **lppidls,
168 LPLONG lpwEventId);
169
170BOOL WINAPI SHChangeNotification_Unlock(HANDLE hLock);
171
172/****************************************************************************
173 * Shell Common Dialogs
174 */
175
176BOOL WINAPI PickIconDlg(
177 HWND hwndOwner,
178 LPSTR lpstrFile,
179 DWORD nMaxFile,
180 LPDWORD lpdwIconIndex);
181
182/* RunFileDlg flags */
Vincent Béron9a624912002-05-31 23:06:46 +0000183#define RFF_NOBROWSE 0x01
Juergen Schmied51c74d82000-04-28 20:23:46 +0000184#define RFF_NODEFAULT 0x02
185#define RFF_CALCDIRECTORY 0x04
186#define RFF_NOLABEL 0x08
187#define RFF_NOSEPARATEMEM 0x20 /* NT only */
188
189/* RunFileFlg notification structure */
190typedef struct
191{
192 NMHDR hdr;
193 LPCSTR lpFile;
Vincent Béron9a624912002-05-31 23:06:46 +0000194 LPCSTR lpDirectory;
Juergen Schmied51c74d82000-04-28 20:23:46 +0000195 int nShow;
196} NM_RUNFILEDLG, * LPNM_RUNFILEDLG;
197
198/* RunFileDlg notification return values */
199#define RF_OK 0x00
200#define RF_CANCEL 0x01
201#define RF_RETRY 0x02
202
203void WINAPI RunFileDlg(
204 HWND hwndOwner,
205 HICON hIcon,
206 LPCSTR lpstrDirectory,
207 LPCSTR lpstrTitle,
208 LPCSTR lpstrDescription,
209 UINT uFlags);
210
211void WINAPI ExitWindowsDialog(HWND hwndOwner);
212
213int WINAPI RestartDialog(
214 HWND hwndOwner,
215 LPCSTR lpstrReason,
Vincent Béron9a624912002-05-31 23:06:46 +0000216 UINT uFlags);
Juergen Schmied51c74d82000-04-28 20:23:46 +0000217
218BOOL WINAPI GetFileNameFromBrowse(
219 HWND hwndOwner,
220 LPSTR lpstrFile,
221 DWORD nMaxFile,
222 LPCSTR lpstrInitialDir,
223 LPCSTR lpstrDefExt,
224 LPCSTR lpstrFilter,
225 LPCSTR lpstrTitle);
226
227BOOL WINAPI SHFindFiles(
228 LPCITEMIDLIST pidlRoot,
229 LPCITEMIDLIST pidlSavedSearch);
230
231BOOL WINAPI SHFindComputer(
232 LPCITEMIDLIST pidlRoot,
233 LPCITEMIDLIST pidlSavedSearch);
Vincent Béron9a624912002-05-31 23:06:46 +0000234
Juergen Schmied51c74d82000-04-28 20:23:46 +0000235/* SHObjectProperties flags */
236#define OPF_PRINTERNAME 0x01
237#define OPF_PATHNAME 0x02
238
239BOOL WINAPI SHObjectProperties(
240 HWND hwndOwner,
241 UINT uFlags,
242 LPCSTR lpstrName,
243 LPCSTR lpstrParameters);
244
245void WINAPI SHHandleDiskFull(HWND hwndOwner,
246 UINT uDrive);
247
248int WINAPI SHOutOfMemoryMessageBox(
249 HWND hwndOwner,
250 LPCSTR lpCaption,
251 UINT uType);
252
253DWORD WINAPI SHNetConnectionDialog(
254 HWND hwndOwner,
255 LPCSTR lpstrRemoteName,
256 DWORD dwType);
257
258int WINAPIV ShellMessageBoxA(
259 HINSTANCE hInstance,
260 HWND hWnd,
261 LPCSTR lpText,
262 LPCSTR lpCaption,
263 UINT uType,
264 ...);
265
266int WINAPIV ShellMessageBoxW(
267 HINSTANCE hInstance,
268 HWND hWnd,
269 LPCWSTR lpText,
270 LPCWSTR lpCaption,
271 UINT uType,
272 ...);
273
274#define ShellMessageBox WINELIB_NAME_AW(ShellMessageBox)
275
276/****************************************************************************
277 * Memory Routines
278 */
279
280LPVOID WINAPI SHAlloc(ULONG cb);
281void WINAPI SHFree(LPVOID pv);
282
283HANDLE WINAPI SHAllocShared(
284 LPVOID pv,
285 ULONG cb,
286 DWORD pid);
287
288BOOL WINAPI SHFreeShared(
289 HANDLE hMem,
290 DWORD pid);
291
292LPVOID WINAPI SHLockShared(
293 HANDLE hMem,
294 DWORD pid);
295
296BOOL WINAPI SHUnlockShared(LPVOID pv);
297
298/****************************************************************************
299 * Cabinet Window Messages
300 */
301
302#define CWM_SETPATH (WM_USER + 2)
303#define CWM_WANTIDLE (WM_USER + 3)
304#define CWM_GETSETCURRENTINFO (WM_USER + 4)
305#define CWM_SELECTITEM (WM_USER + 5)
306#define CWM_SELECTITEMSTR (WM_USER + 6)
307#define CWM_GETISHELLBROWSER (WM_USER + 7)
308#define CWM_TESTPATH (WM_USER + 9)
309#define CWM_STATECHANGE (WM_USER + 10)
310#define CWM_GETPATH (WM_USER + 12)
311
312/* CWM_TESTPATH types */
Vincent Béron9a624912002-05-31 23:06:46 +0000313#define CWTP_ISEQUAL 0
314#define CWTP_ISCHILD 1
Juergen Schmied51c74d82000-04-28 20:23:46 +0000315
316/* CWM_TESTPATH structure */
Vincent Béron9a624912002-05-31 23:06:46 +0000317typedef struct
Juergen Schmied51c74d82000-04-28 20:23:46 +0000318{
319 DWORD dwType;
320 ITEMIDLIST idl;
321} CWTESTPATHSTRUCT,* LPCWTESTPATHSTRUCT;
322
323/****************************************************************************
324 * System Imagelist Routines
325 */
326
327int WINAPI Shell_GetCachedImageIndex(
328 LPCSTR lpszFileName,
329 UINT nIconIndex,
330 BOOL bSimulateDoc);
331
332BOOL WINAPI Shell_GetImageLists(
333 HIMAGELIST *lphimlLarge,
334 HIMAGELIST *lphimlSmall);
335
336HICON WINAPI SHGetFileIcon(
337 DWORD dwReserved,
338 LPCSTR lpszPath,
339 DWORD dwFileAttributes,
340 UINT uFlags);
341
342int WINAPI SHMapPIDLToSystemImageListIndex(
343 LPSHELLFOLDER psf,
344 LPCITEMIDLIST pidl,
345 UINT * pOpenIndex);
346
347BOOL WINAPI FileIconInit(BOOL bFullInit);
348
349/****************************************************************************
350 * File Menu Routines
351 */
352/* FileMenu_Create nSelHeight constants */
353#define FM_DEFAULT_SELHEIGHT -1
354#define FM_FULL_SELHEIGHT 0
355
356/* FileMenu_Create flags */
357#define FMF_SMALL_ICONS 0x00
358#define FMF_LARGE_ICONS 0x08
359#define FMF_NO_COLUMN_BREAK 0x10
360
361HMENU WINAPI FileMenu_Create(
362 COLORREF crBorderColor,
363 int nBorderWidth,
364 HBITMAP hBorderBmp,
365 int nSelHeight,
366 UINT uFlags);
367
368void WINAPI FileMenu_Destroy(HMENU hMenu);
369
370/* FileMenu_AppendItem constants */
371#define FM_SEPARATOR (LPCSTR)1
372#define FM_BLANK_ICON -1
373#define FM_DEFAULT_HEIGHT 0
374
375BOOL WINAPI FileMenu_AppendItem(
376 HMENU hMenu,
377 LPCSTR lpszText,
378 UINT uID,
379 int iIcon,
380 HMENU hMenuPopup,
381 int nItemHeight);
382
383/* FileMenu_InsertUsingPidl flags */
384#define FMF_NO_EMPTY_ITEM 0x01
385#define FMF_NO_PROGRAM_GROUPS 0x04
386
387/* FileMenu_InsertUsingPidl callback function */
Patrik Stridvall57e57842002-02-02 18:42:11 +0000388typedef void (CALLBACK *LPFNFMCALLBACK)(LPCITEMIDLIST pidlFolder, LPCITEMIDLIST pidlFile);
Juergen Schmied51c74d82000-04-28 20:23:46 +0000389
390int WINAPI FileMenu_InsertUsingPidl(
391 HMENU hMenu,
392 UINT uID,
393 LPCITEMIDLIST pidl,
394 UINT uFlags,
395 UINT uEnumFlags,
396 LPFNFMCALLBACK lpfnCallback);
397
398int WINAPI FileMenu_ReplaceUsingPidl(
399 HMENU hMenu,
400 UINT uID,
401 LPCITEMIDLIST pidl,
402 UINT uEnumFlags,
403 LPFNFMCALLBACK lpfnCallback);
404
405void WINAPI FileMenu_Invalidate(HMENU hMenu);
406
407HMENU WINAPI FileMenu_FindSubMenuByPidl(
408 HMENU hMenu,
409 LPCITEMIDLIST pidl);
410
411BOOL WINAPI FileMenu_TrackPopupMenuEx(
412 HMENU hMenu,
413 UINT uFlags,
414 int x,
415 int y,
416 HWND hWnd,
417 LPTPMPARAMS lptpm);
418
419BOOL WINAPI FileMenu_GetLastSelectedItemPidls(
420 UINT uReserved,
421 LPITEMIDLIST *ppidlFolder,
422 LPITEMIDLIST *ppidlItem);
423
424LRESULT WINAPI FileMenu_MeasureItem(
425 HWND hWnd,
426 LPMEASUREITEMSTRUCT lpmis);
427
428LRESULT WINAPI FileMenu_DrawItem(
429 HWND hWnd,
430 LPDRAWITEMSTRUCT lpdis);
431
432BOOL WINAPI FileMenu_InitMenuPopup(HMENU hMenu);
433
434void WINAPI FileMenu_AbortInitMenu(void);
435
436LRESULT WINAPI FileMenu_HandleMenuChar(
437 HMENU hMenu,
438 WPARAM wParam);
439
440BOOL WINAPI FileMenu_DeleteAllItems(HMENU hMenu);
441
442BOOL WINAPI FileMenu_DeleteItemByCmd(
443 HMENU hMenu,
444 UINT uID);
445
446BOOL WINAPI FileMenu_DeleteItemByIndex(
447 HMENU hMenu,
448 UINT uPos);
449
450BOOL WINAPI FileMenu_DeleteMenuItemByFirstID(
451 HMENU hMenu,
452 UINT uID);
453
454BOOL WINAPI FileMenu_DeleteSeparator(HMENU hMenu);
455
456BOOL WINAPI FileMenu_EnableItemByCmd(
457 HMENU hMenu,
458 UINT uID,
459 BOOL bEnable);
460
461DWORD WINAPI FileMenu_GetItemExtent(
462 HMENU hMenu,
463 UINT uPos);
464
465int WINAPI FileMenu_AppendFilesForPidl(
466 HMENU hMenu,
467 LPCITEMIDLIST pidl,
468 BOOL bAddSeparator);
469
470int WINAPI FileMenu_AddFilesForPidl(
471 HMENU hMenu,
472 UINT uReserved,
473 UINT uID,
474 LPCITEMIDLIST pidl,
475 UINT uFlags,
476 UINT uEnumFlags,
477 LPFNFMCALLBACK lpfnCallback);
478
479/****************************************************************************
480 * Drag And Drop Routines
481 */
482HRESULT WINAPI SHLoadOLE(DWORD dwFlags);
483
484HRESULT WINAPI SHRegisterDragDrop(
485 HWND hWnd,
486 LPDROPTARGET lpDropTarget);
487
488HRESULT WINAPI SHRevokeDragDrop(HWND hWnd);
489
490HRESULT WINAPI SHDoDragDrop(
491 HWND hWnd,
492 LPDATAOBJECT lpDataObject,
493 LPDROPSOURCE lpDropSource,
494 DWORD dwOKEffect,
495 LPDWORD pdwEffect);
496
497BOOL WINAPI DAD_DragEnter(HWND hWnd);
498
499BOOL WINAPI DAD_DragEnterEx(
500 HWND hWnd,
501 POINT pt);
502
503BOOL WINAPI DAD_DragMove(POINT pt);
504
505/* DAD_AutoScroll return values */
506#define DAD_SCROLL_UP 1
507#define DAD_SCROLL_DOWN 2
508#define DAD_SCROLL_LEFT 4
509#define DAD_SCROLL_RIGHT 8
510
511/* DAD_AutoScroll sample structure */
Vincent Béron9a624912002-05-31 23:06:46 +0000512typedef struct
Juergen Schmied51c74d82000-04-28 20:23:46 +0000513{
514 DWORD dwCount;
515 DWORD dwLastTime;
516 BOOL bWrapped;
517 POINT aptPositions[3];
518 DWORD adwTimes[3];
519} SCROLLSAMPLES, *LPSCROLLSAMPLES;
520
521DWORD WINAPI DAD_AutoScroll(HWND hWnd,
522 LPSCROLLSAMPLES lpSamples,
523 LPPOINT lppt);
524
525BOOL WINAPI DAD_DragLeave();
526
527BOOL WINAPI DAD_SetDragImageFromListView(
528 HWND hWnd,
529 POINT pt);
530
531BOOL WINAPI DAD_SetDragImage(
532 HIMAGELIST himlTrack,
533 LPPOINT lppt);
534
535BOOL WINAPI DAD_ShowDragImage(BOOL bShow);
536
537HRESULT WINAPI SHCreateStdEnumFmtEtc(
538 DWORD cFormats,
539 const FORMATETC *lpFormats,
540 LPENUMFORMATETC *ppenumFormatetc);
541
542HRESULT WINAPI CIDLData_CreateFromIDArray(
543 LPCITEMIDLIST pidlFolder,
544 DWORD cpidlFiles,
545 LPCITEMIDLIST *lppidlFiles,
546 LPDATAOBJECT *ppdataObject);
547
548/****************************************************************************
549 * Path Manipulation Routines
550 */
551
Huw D M Davies62519ab2001-01-07 21:50:52 +0000552BOOL WINAPI PathAppendAW(LPVOID lpszPath1, LPCVOID lpszPath2);
Juergen Schmied51c74d82000-04-28 20:23:46 +0000553
Juergen Schmied51c74d82000-04-28 20:23:46 +0000554LPVOID WINAPI PathCombineAW(LPVOID szDest, LPCVOID lpszDir, LPCVOID lpszFile);
555
Vincent Béron9a624912002-05-31 23:06:46 +0000556LPVOID WINAPI PathAddBackslashAW(LPVOID path);
Juergen Schmied51c74d82000-04-28 20:23:46 +0000557
Huw D M Davies62519ab2001-01-07 21:50:52 +0000558LPVOID WINAPI PathBuildRootAW(LPVOID lpszPath, int drive);
Juergen Schmied51c74d82000-04-28 20:23:46 +0000559
Vincent Béron9a624912002-05-31 23:06:46 +0000560LPVOID WINAPI PathFindExtensionAW(LPCVOID path);
Juergen Schmied51c74d82000-04-28 20:23:46 +0000561
Vincent Béron9a624912002-05-31 23:06:46 +0000562LPVOID WINAPI PathFindFileNameAW(LPCVOID path);
Huw D M Davies62519ab2001-01-07 21:50:52 +0000563
Vincent Béron9a624912002-05-31 23:06:46 +0000564LPVOID WINAPI PathGetExtensionAW(LPCVOID lpszPath, DWORD void1, DWORD void2);
Juergen Schmied51c74d82000-04-28 20:23:46 +0000565
Huw D M Davies62519ab2001-01-07 21:50:52 +0000566LPVOID WINAPI PathGetArgsAW(LPVOID lpszPath);
Juergen Schmied51c74d82000-04-28 20:23:46 +0000567
Huw D M Davies62519ab2001-01-07 21:50:52 +0000568BOOL WINAPI PathRemoveFileSpecAW(LPVOID lpszPath);
Juergen Schmied51c74d82000-04-28 20:23:46 +0000569
Huw D M Davies62519ab2001-01-07 21:50:52 +0000570LPVOID WINAPI PathGetShortPathAW(LPVOID lpszPath);
Juergen Schmied51c74d82000-04-28 20:23:46 +0000571
Huw D M Davies62519ab2001-01-07 21:50:52 +0000572void WINAPI PathRemoveBlanksAW(LPVOID lpszPath);
573
Vincent Béron9a624912002-05-31 23:06:46 +0000574VOID WINAPI PathQuoteSpacesAW(LPVOID path);
Juergen Schmied51c74d82000-04-28 20:23:46 +0000575
Huw D M Davies62519ab2001-01-07 21:50:52 +0000576void WINAPI PathUnquoteSpacesAW(LPVOID lpszPath);
Juergen Schmied51c74d82000-04-28 20:23:46 +0000577
Juergen Schmied51c74d82000-04-28 20:23:46 +0000578BOOL WINAPI PathIsUNCAW(LPCVOID lpszPath);
579
Juergen Schmied51c74d82000-04-28 20:23:46 +0000580BOOL WINAPI PathIsRelativeAW(LPCVOID lpszPath);
581
Juergen Schmied51c74d82000-04-28 20:23:46 +0000582BOOL WINAPI PathIsRootAW(LPCVOID x);
583
Huw D M Davies62519ab2001-01-07 21:50:52 +0000584BOOL WINAPI PathIsExeAW(LPCVOID lpszPath);
Juergen Schmied51c74d82000-04-28 20:23:46 +0000585
Huw D M Davies62519ab2001-01-07 21:50:52 +0000586BOOL WINAPI PathIsDirectoryAW(LPCVOID lpszPath);
Juergen Schmied51c74d82000-04-28 20:23:46 +0000587
Huw D M Davies62519ab2001-01-07 21:50:52 +0000588BOOL WINAPI PathFileExistsAW(LPCVOID lpszPath);
Juergen Schmied51c74d82000-04-28 20:23:46 +0000589
Juergen Schmied51c74d82000-04-28 20:23:46 +0000590BOOL WINAPI PathMatchSpecAW(LPVOID lpszPath, LPVOID lpszSpec);
591
Huw D M Davies62519ab2001-01-07 21:50:52 +0000592BOOL WINAPI PathMakeUniqueNameAW(
Vincent Béron9a624912002-05-31 23:06:46 +0000593 LPVOID lpszBuffer,
Juergen Schmied51c74d82000-04-28 20:23:46 +0000594 DWORD dwBuffSize,
Huw D M Davies62519ab2001-01-07 21:50:52 +0000595 LPCVOID lpszShortName,
Vincent Béron9a624912002-05-31 23:06:46 +0000596 LPCVOID lpszLongName,
Huw D M Davies62519ab2001-01-07 21:50:52 +0000597 LPCVOID lpszPathName);
Juergen Schmied51c74d82000-04-28 20:23:46 +0000598
Huw D M Davies62519ab2001-01-07 21:50:52 +0000599BOOL WINAPI PathYetAnotherMakeUniqueNameA(
Juergen Schmied51c74d82000-04-28 20:23:46 +0000600 LPSTR lpszBuffer,
601 LPCSTR lpszPathName,
602 LPCSTR lpszShortName,
603 LPCSTR lpszLongName);
604
Juergen Schmied51c74d82000-04-28 20:23:46 +0000605/* PathCleanupSpec return values */
606#define PCS_REPLACEDCHARS 0x00000001
607#define PCS_REMOVEDCHARS 0x00000002
608#define PCS_SHORTENED 0x00000004
609#define PCS_PATHTOOLONG 0x80000008
610
Huw D M Davies62519ab2001-01-07 21:50:52 +0000611DWORD WINAPI PathCleanupSpecAW(LPCVOID lpszPath, LPVOID lpszFile);
Juergen Schmied51c74d82000-04-28 20:23:46 +0000612
Vincent Béron9a624912002-05-31 23:06:46 +0000613BOOL WINAPI PathQualifyA(LPCSTR path);
614BOOL WINAPI PathQualifyW(LPCWSTR path);
Huw D M Davies62519ab2001-01-07 21:50:52 +0000615#define PathQualify WINELIB_NAME_AW(PathQualify)
Vincent Béron9a624912002-05-31 23:06:46 +0000616BOOL WINAPI PathQualifyAW(LPCVOID path);
Juergen Schmied50f067b2000-02-26 18:44:08 +0000617
618
Juergen Schmied51c74d82000-04-28 20:23:46 +0000619/* PathResolve flags */
620#define PRF_CHECKEXISTANCE 0x01
621#define PRF_EXECUTABLE 0x02
622#define PRF_QUALIFYONPATH 0x04
623#define PRF_WINDOWS31 0x08
624
Huw D M Davies62519ab2001-01-07 21:50:52 +0000625BOOL WINAPI PathResolveAW(LPVOID lpszPath, LPCVOID *alpszPaths, DWORD dwFlags);
Juergen Schmied51c74d82000-04-28 20:23:46 +0000626
Jon Griffithsc90aa7b2002-03-20 01:33:39 +0000627VOID WINAPI PathSetDlgItemPathAW(HWND hDlg, int nIDDlgItem, LPCVOID lpszPath);
Juergen Schmied51c74d82000-04-28 20:23:46 +0000628
629/* PathProcessCommand flags */
630#define PPCF_QUOTEPATH 0x01 /* implies PPCF_INCLUDEARGS */
631#define PPCF_INCLUDEARGS 0x02
632#define PPCF_NODIRECTORIES 0x10
633#define PPCF_DONTRESOLVE 0x20
634#define PPCF_PATHISRELATIVE 0x40
635
Huw D M Davies62519ab2001-01-07 21:50:52 +0000636HRESULT WINAPI PathProcessCommandAW(LPCVOID lpszPath, LPVOID lpszBuff,
637 DWORD dwBuffSize, DWORD dwFlags);
Juergen Schmied51c74d82000-04-28 20:23:46 +0000638
Huw D M Davies62519ab2001-01-07 21:50:52 +0000639void WINAPI PathStripPathAW(LPVOID lpszPath);
Juergen Schmied51c74d82000-04-28 20:23:46 +0000640
Huw D M Davies52b2d2c2000-09-13 20:28:31 +0000641BOOL WINAPI PathStripToRootAW(LPVOID lpszPath);
Juergen Schmied51c74d82000-04-28 20:23:46 +0000642
Huw D M Davies62519ab2001-01-07 21:50:52 +0000643void WINAPI PathRemoveArgsAW(LPVOID lpszPath);
Juergen Schmied51c74d82000-04-28 20:23:46 +0000644
Huw D M Davies62519ab2001-01-07 21:50:52 +0000645void WINAPI PathRemoveExtensionAW(LPVOID lpszPath);
Juergen Schmied51c74d82000-04-28 20:23:46 +0000646
Huw D M Davies62519ab2001-01-07 21:50:52 +0000647int WINAPI PathParseIconLocationAW(LPVOID lpszPath);
Juergen Schmied51c74d82000-04-28 20:23:46 +0000648
Huw D M Davies62519ab2001-01-07 21:50:52 +0000649BOOL WINAPI PathIsSameRootAW(LPCVOID lpszPath1, LPCVOID lpszPath2);
Juergen Schmied51c74d82000-04-28 20:23:46 +0000650
Juergen Schmied51c74d82000-04-28 20:23:46 +0000651BOOL WINAPI PathFindOnPathAW(LPVOID sFile, LPCVOID sOtherDirs);
652
Juergen Schmied51c74d82000-04-28 20:23:46 +0000653/****************************************************************************
654 * Shell Namespace Routines
655 */
656
657/* SHCreateShellFolderViewEx callback function */
Patrik Stridvall57e57842002-02-02 18:42:11 +0000658typedef HRESULT (CALLBACK *LPFNSFVCALLBACK)(
Juergen Schmied51c74d82000-04-28 20:23:46 +0000659 DWORD dwUser,
660 LPSHELLFOLDER pshf,
661 HWND hWnd,
662 UINT uMsg,
663 WPARAM wParam,
664 LPARAM lParam);
665
666/* SHCreateShellFolderViewEx structure */
Vincent Béron9a624912002-05-31 23:06:46 +0000667typedef struct
Juergen Schmied51c74d82000-04-28 20:23:46 +0000668{
669 DWORD dwSize;
670 LPSHELLFOLDER pshf;
671 DWORD dwUser;
672 LPCITEMIDLIST pidlFolder;
673 DWORD dwEventId;
674 LPFNSFVCALLBACK lpfnCallback;
675 UINT uViewMode;
676} SHELLFOLDERVIEWINFO, * LPSHELLFOLDERVIEWINFO;
677typedef const SHELLFOLDERVIEWINFO * LPCSHELLFOLDERVIEWINFO;
678
679HRESULT WINAPI SHCreateShellFolderViewEx(
680 LPCSHELLFOLDERVIEWINFO pshfvi,
681 LPSHELLVIEW *ppshv);
682
683/* SHCreateShellFolderViewEx callback messages */
684#define SFVCB_ADDTOMENU 0x0001
685#define SFVCB_INVOKECOMMAND 0x0002
686#define SFVCB_GETMENUHELP 0x0003
687#define SFVCB_GETTOOLBARTIP 0x0004
688#define SFVCB_GETTOOLBARINFO 0x0005
689#define SFVCB_ADDTOOLBARITEMS 0x0006
690#define SFVCB_INITMENUPOPUP 0x0007
691#define SFVCB_SELECTIONCHANGED 0x0008
692#define SFVCB_DRAWMENUITEM 0x0009
693#define SFVCB_MEASUREMENUITEM 0x000A
694#define SFVCB_EXITMENULOOP 0x000B
695#define SFVCB_VIEWRELEASE 0x000C
696#define SFVCB_GETNAMELENGTH 0x000D
697#define SFVCB_CHANGENOTIFY 0x000E
698#define SFVCB_WINDOWCREATED 0x000F
699#define SFVCB_WINDOWCLOSING 0x0010
700#define SFVCB_LISTREFRESHED 0x0011
701#define SFVCB_WINDOWFOCUSED 0x0012
702#define SFVCB_REGISTERCOPYHOOK 0x0014
703#define SFVCB_COPYHOOKCALLBACK 0x0015
704#define SFVCB_GETDETAILSOF 0x0017
705#define SFVCB_COLUMNCLICK 0x0018
706#define SFVCB_GETCHANGENOTIFYPIDL 0x0019
707#define SFVCB_GETESTIMATEDCOUNT 0x001A
708#define SFVCB_ADJUSTVIEWMODE 0x001B
709#define SFVCB_REMOVEFROMMENU 0x001C
710#define SFVCB_ADDINGOBJECT 0x001D
711#define SFVCB_REMOVINGOBJECT 0x001E
712#define SFVCB_UPDATESTATUSBAR 0x001F
713#define SFVCB_ISSLOWREFRESH 0x0020
714#define SFVCB_GETCOMMANDDIR 0x0021
715#define SFVCB_GETCOLUMNSTREAM 0x0022
716#define SFVCB_CANSELECTALL 0x0023
717#define SFVCB_DRAGSUCCEEDED 0x0024
718#define SFVCB_ISSTRICTREFRESH 0x0025
719#define SFVCB_ISCHILDOBJECT 0x0026
720
721/* Generic structure used by several messages */
Vincent Béron9a624912002-05-31 23:06:46 +0000722typedef struct
Juergen Schmied51c74d82000-04-28 20:23:46 +0000723{
724 DWORD dwReserved;
725 DWORD dwReserved2;
726 LPCITEMIDLIST pidl;
727 LPDWORD lpdwUser;
728} SFVCBINFO, * LPSFVCBINFO;
729typedef const SFVCBINFO * LPCSFVCBINFO;
730
731/* SFVCB_ADDTOMENU structure */
Vincent Béron9a624912002-05-31 23:06:46 +0000732typedef struct
Juergen Schmied51c74d82000-04-28 20:23:46 +0000733{
734 HMENU hMenu;
735 UINT indexMenu;
736 UINT idCmdFirst;
737 UINT idCmdLast;
738} SFVMENUINFO, * LPSFVMENUINFO;
739
740/* SFVCB_GETTOOLBARINFO structure */
Vincent Béron9a624912002-05-31 23:06:46 +0000741typedef struct
Juergen Schmied51c74d82000-04-28 20:23:46 +0000742{
743 UINT nButtons;
744 UINT uFlags;
745} SFVTOOLBARINFO, * LPSFVTOOLBARINFO;
746
747/* SFVTOOLBARINFO flags */
Vincent Béron9a624912002-05-31 23:06:46 +0000748typedef enum
Juergen Schmied51c74d82000-04-28 20:23:46 +0000749{
750 SFVTI_ADDTOEND = 0,
751 SFVTI_ADDTOFRONT = 1,
752 SFVTI_OVERWRITE = 2
Vincent Béron9a624912002-05-31 23:06:46 +0000753} SFVTIF;
Juergen Schmied51c74d82000-04-28 20:23:46 +0000754
755/* SFVCB_SELECTIONCHANGED structure */
Vincent Béron9a624912002-05-31 23:06:46 +0000756typedef struct
Juergen Schmied51c74d82000-04-28 20:23:46 +0000757{
758 UINT uOldState;
759 UINT uNewState;
760 LPCITEMIDLIST pidl;
761 LPDWORD lpdwUser;
762} SFVSELECTSTATE, * LPSFVSELECTSTATE;
763typedef const SFVSELECTSTATE * LPCSFVSELECTSTATE;
764
765/* SFVCB_COPYHOOKCALLBACK structure */
Vincent Béron9a624912002-05-31 23:06:46 +0000766typedef struct
Juergen Schmied51c74d82000-04-28 20:23:46 +0000767{
768 HWND hwnd;
769 UINT wFunc;
770 UINT wFlags;
771 LPCSTR pszSrcFile;
772 DWORD dwSrcAttribs;
773 LPCSTR pszDestFile;
774 DWORD dwDestAttribs;
775} SFVCOPYHOOKINFO, * LPSFVCOPYHOOKINFO;
776typedef const SFVCOPYHOOKINFO * LPCSFVCOPYHOOKINFO;
777
778/* SFVCB_GETDETAILSOF structure */
Vincent Béron9a624912002-05-31 23:06:46 +0000779typedef struct
Juergen Schmied51c74d82000-04-28 20:23:46 +0000780{
781 LPCITEMIDLIST pidl;
782 int fmt;
783 int cx;
784 STRRET lpText;
785} SFVCOLUMNINFO, * LPSFVCOLUMNINFO;
786
787int WINAPI SHShellFolderView_Message(
Vincent Béron9a624912002-05-31 23:06:46 +0000788 HWND hwndCabinet,
Juergen Schmied51c74d82000-04-28 20:23:46 +0000789 DWORD dwMessage,
Vincent Béron9a624912002-05-31 23:06:46 +0000790 DWORD dwParam);
Juergen Schmied51c74d82000-04-28 20:23:46 +0000791
792/* SHShellFolderView_Message messages */
793#define SFVM_REARRANGE 0x0001
794#define SFVM_GETARRANGECOLUMN 0x0002
795#define SFVM_ADDOBJECT 0x0003
796#define SFVM_GETITEMCOUNT 0x0004
797#define SFVM_GETITEMPIDL 0x0005
798#define SFVM_REMOVEOBJECT 0x0006
799#define SFVM_UPDATEOBJECT 0x0007
800#define SFVM_SETREDRAW 0x0008
801#define SFVM_GETSELECTEDOBJECTS 0x0009
802#define SFVM_ISDROPONSOURCE 0x000A
803#define SFVM_MOVEICONS 0x000B
804#define SFVM_GETDRAGPOINT 0x000C
805#define SFVM_GETDROPPOINT 0x000D
806#define SFVM_SETOBJECTPOS 0x000E
807#define SFVM_ISDROPONBACKGROUND 0x000F
808#define SFVM_CUTOBJECTS 0x0010
809#define SFVM_TOGGLEAUTOARRANGE 0x0011
810#define SFVM_LINEUPICONS 0x0012
811#define SFVM_GETAUTOARRANGE 0x0013
812#define SFVM_GETSELECTEDCOUNT 0x0014
813#define SFVM_GETITEMSPACING 0x0015
814#define SFVM_REFRESHOBJECT 0x0016
815#define SFVM_SETCLIPBOARDPOINTS 0x0017
816
817/****************************************************************************
818 * Misc Stuff
819 */
820
821/* SHWaitForFileToOpen flags */
822#define SHWFF_ADD 0x01
823#define SHWFF_REMOVE 0x02
824#define SHWFF_WAIT 0x04
825
826BOOL WINAPI SHWaitForFileToOpen(
Vincent Béron9a624912002-05-31 23:06:46 +0000827 LPCITEMIDLIST pidl,
Juergen Schmied51c74d82000-04-28 20:23:46 +0000828 DWORD dwFlags,
829 DWORD dwTimeout);
830
831WORD WINAPI ArrangeWindows(
832 HWND hwndParent,
833 DWORD dwReserved,
834 LPCRECT lpRect,
835 WORD cKids,
836 CONST HWND * lpKids);
837
838/* RegisterShellHook types */
839#define RSH_DEREGISTER 0
840#define RSH_REGISTER 1
841#define RSH_REGISTER_PROGMAN 2
842#define RSH_REGISTER_TASKMAN 3
843
844BOOL WINAPI RegisterShellHook(
845 HWND hWnd,
846 DWORD dwType);
847
848/* SHCreateDefClassObject callback function */
Patrik Stridvall57e57842002-02-02 18:42:11 +0000849typedef HRESULT (CALLBACK *LPFNCDCOCALLBACK)(
Juergen Schmied51c74d82000-04-28 20:23:46 +0000850 LPUNKNOWN pUnkOuter,
851 REFIID riidObject,
852 LPVOID *ppvObject);
853
854HRESULT WINAPI SHCreateDefClassObject(
Vincent Béron9a624912002-05-31 23:06:46 +0000855 REFIID riidFactory,
Juergen Schmied51c74d82000-04-28 20:23:46 +0000856 LPVOID *ppvFactory,
857 LPFNCDCOCALLBACK lpfnCallback,
Vincent Béron9a624912002-05-31 23:06:46 +0000858 LPDWORD lpdwUsage,
Juergen Schmied51c74d82000-04-28 20:23:46 +0000859 REFIID riidObject);
860
861HRESULT WINAPI SHCoCreateInstance(
Vincent Béron9a624912002-05-31 23:06:46 +0000862 LPCSTR lpszClsid,
Juergen Schmied51c74d82000-04-28 20:23:46 +0000863 REFCLSID rClsid,
864 LPUNKNOWN pUnkOuter,
865 REFIID riid,
866 LPVOID *ppv);
867
868void WINAPI SHFreeUnusedLibraries();
869
870/* SHCreateLinks flags */
871#define SHCLF_PREFIXNAME 0x01
872#define SHCLF_CREATEONDESKTOP 0x02
873
874HRESULT WINAPI SHCreateLinks(
875 HWND hWnd,
Vincent Béron9a624912002-05-31 23:06:46 +0000876 LPCSTR lpszDir,
Juergen Schmied51c74d82000-04-28 20:23:46 +0000877 LPDATAOBJECT lpDataObject,
878 UINT uFlags,
879 LPITEMIDLIST *lppidlLinks);
880
881/* SHGetNewLinkInfo flags */
882#define SHGNLI_PIDL 0x01
883#define SHGNLI_PREFIXNAME 0x02
884#define SHGNLI_NOUNIQUE 0x04
885
886BOOL WINAPI SHGetNewLinkInfoA(
887 LPCSTR pszLinkTo,
Vincent Béron9a624912002-05-31 23:06:46 +0000888 LPCSTR pszDir,
Juergen Schmied51c74d82000-04-28 20:23:46 +0000889 LPSTR pszName,
890 BOOL *pfMustCopy,
891 UINT uFlags);
892
893BOOL WINAPI SHGetNewLinkInfoW(
894 LPCWSTR pszLinkTo,
Vincent Béron9a624912002-05-31 23:06:46 +0000895 LPCWSTR pszDir,
Juergen Schmied51c74d82000-04-28 20:23:46 +0000896 LPWSTR pszName,
897 BOOL *pfMustCopy,
898 UINT uFlags);
899#define SHGetNewLinkInfo WINELIB_NAME_AW(SHGetNewLinkInfo)
900
901/* policy functions */
902BOOL WINAPI SHInitRestricted(LPSTR, LPSTR);
Juergen Schmied50f067b2000-02-26 18:44:08 +0000903
Juergen Schmiedf518b191999-07-25 12:17:31 +0000904#ifdef __cplusplus
905} /* extern "C" */
906#endif /* defined(__cplusplus) */
907
Huw D M Davies62519ab2001-01-07 21:50:52 +0000908#endif /* __WINE_UNDOCSHELL_H */