Sync with trunk r63637.
[reactos.git] / dll / win32 / shell32 / undocshell.h
1 /*
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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
17 */
18
19 #ifndef __WINE_UNDOCSHELL_H
20 #define __WINE_UNDOCSHELL_H
21
22 #ifdef __cplusplus
23 extern "C" {
24 #endif /* defined(__cplusplus) */
25
26 /****************************************************************************
27 * IDList Functions
28 */
29 BOOL WINAPI ILGetDisplayName(
30 LPCITEMIDLIST pidl,
31 LPVOID path);
32
33 /* type parameter for ILGetDisplayNameEx() */
34 #define ILGDN_FORPARSING 0
35 #define ILGDN_NORMAL 1
36 #define ILGDN_INFOLDER 2
37
38 BOOL WINAPI ILGetDisplayNameEx(
39 LPSHELLFOLDER psf,
40 LPCITEMIDLIST pidl,
41 LPVOID path,
42 DWORD type);
43
44 LPITEMIDLIST WINAPI ILGlobalClone(LPCITEMIDLIST pidl);
45 void WINAPI ILGlobalFree(LPITEMIDLIST pidl);
46 LPITEMIDLIST WINAPI SHSimpleIDListFromPathA (LPCSTR lpszPath); //FIXME
47 LPITEMIDLIST WINAPI SHSimpleIDListFromPathW (LPCWSTR lpszPath);
48
49 HRESULT WINAPI SHILCreateFromPathA (
50 LPCSTR path,
51 LPITEMIDLIST * ppidl,
52 DWORD *attributes);
53
54 HRESULT WINAPI SHILCreateFromPathW (
55 LPCWSTR path,
56 LPITEMIDLIST * ppidl,
57 DWORD *attributes);
58
59 /*
60 string functions
61 */
62 BOOL WINAPI StrRetToStrNA(LPSTR,DWORD,LPSTRRET,const ITEMIDLIST*);
63 BOOL WINAPI StrRetToStrNW(LPWSTR,DWORD,LPSTRRET,const ITEMIDLIST*);
64
65
66 /****************************************************************************
67 * SHChangeNotifyRegister API
68 */
69 #define SHCNRF_InterruptLevel 0x0001
70 #define SHCNRF_ShellLevel 0x0002
71 #define SHCNRF_RecursiveInterrupt 0x1000 /* Must be combined with SHCNRF_InterruptLevel */
72 #define SHCNRF_NewDelivery 0x8000 /* Messages use shared memory */
73
74
75 /****************************************************************************
76 * Shell Common Dialogs
77 */
78
79 /* RunFileDlg flags */
80 #define RFF_NOBROWSE 0x01
81 #define RFF_NODEFAULT 0x02
82 #define RFF_CALCDIRECTORY 0x04
83 #define RFF_NOLABEL 0x08
84 #define RFF_NOSEPARATEMEM 0x20 /* NT only */
85
86 #define DE_SAMEFILE 0x71
87
88 /* RunFileFlg notification structure */
89 typedef struct
90 {
91 NMHDR hdr;
92 LPCSTR lpFile;
93 LPCSTR lpDirectory;
94 int nShow;
95 } NM_RUNFILEDLG, * LPNM_RUNFILEDLG;
96
97 /* RunFileDlg notification return values */
98 #define RF_OK 0x00
99 #define RF_CANCEL 0x01
100 #define RF_RETRY 0x02
101
102 void WINAPI RunFileDlg(
103 HWND hwndOwner,
104 HICON hIcon,
105 LPCWSTR lpstrDirectory,
106 LPCWSTR lpstrTitle,
107 LPCWSTR lpstrDescription,
108 UINT uFlags);
109
110 void WINAPI ExitWindowsDialog(HWND hwndOwner);
111
112 BOOL WINAPI SHFindComputer(
113 LPCITEMIDLIST pidlRoot,
114 LPCITEMIDLIST pidlSavedSearch);
115
116 void WINAPI SHHandleDiskFull(HWND hwndOwner,
117 UINT uDrive);
118
119 int WINAPI SHOutOfMemoryMessageBox(
120 HWND hwndOwner,
121 LPCSTR lpCaption,
122 UINT uType);
123
124 DWORD WINAPI SHNetConnectionDialog(
125 HWND hwndOwner,
126 LPCWSTR lpstrRemoteName,
127 DWORD dwType);
128
129 /****************************************************************************
130 * Memory Routines
131 */
132
133 /* The Platform SDK's shlobj.h header defines similar functions with a
134 * leading underscore. However those are unusable because of the leading
135 * underscore, because they have an incorrect calling convention, and
136 * because these functions are not exported by name anyway.
137 */
138 HANDLE WINAPI SHAllocShared(
139 LPVOID pv,
140 ULONG cb,
141 DWORD pid);
142
143 BOOL WINAPI SHFreeShared(
144 HANDLE hMem,
145 DWORD pid);
146
147 LPVOID WINAPI SHLockShared(
148 HANDLE hMem,
149 DWORD pid);
150
151 BOOL WINAPI SHUnlockShared(LPVOID pv);
152
153 /****************************************************************************
154 * Cabinet Window Messages
155 */
156
157 #define CWM_SETPATH (WM_USER + 2)
158 #define CWM_WANTIDLE (WM_USER + 3)
159 #define CWM_GETSETCURRENTINFO (WM_USER + 4)
160 #define CWM_SELECTITEM (WM_USER + 5)
161 #define CWM_SELECTITEMSTR (WM_USER + 6)
162 #define CWM_GETISHELLBROWSER (WM_USER + 7)
163 #define CWM_TESTPATH (WM_USER + 9)
164 #define CWM_STATECHANGE (WM_USER + 10)
165 #define CWM_GETPATH (WM_USER + 12)
166
167 /* CWM_TESTPATH types */
168 #define CWTP_ISEQUAL 0
169 #define CWTP_ISCHILD 1
170
171 /* CWM_TESTPATH structure */
172 typedef struct
173 {
174 DWORD dwType;
175 ITEMIDLIST idl;
176 } CWTESTPATHSTRUCT,* LPCWTESTPATHSTRUCT;
177
178 /****************************************************************************
179 * System Imagelist Routines
180 */
181
182 int WINAPI Shell_GetCachedImageIndexA(
183 LPCSTR lpszFileName,
184 int nIconIndex,
185 UINT bSimulateDoc);
186
187 BOOL WINAPI Shell_GetImageLists(
188 HIMAGELIST *lphimlLarge,
189 HIMAGELIST *lphimlSmall);
190
191 HICON WINAPI SHGetFileIcon(
192 DWORD dwReserved,
193 LPCSTR lpszPath,
194 DWORD dwFileAttributes,
195 UINT uFlags);
196
197 BOOL WINAPI FileIconInit(BOOL bFullInit);
198
199 /****************************************************************************
200 * File Menu Routines
201 */
202 /* FileMenu_Create nSelHeight constants */
203 #define FM_DEFAULT_SELHEIGHT -1
204 #define FM_FULL_SELHEIGHT 0
205
206 /* FileMenu_Create flags */
207 #define FMF_SMALL_ICONS 0x00
208 #define FMF_LARGE_ICONS 0x08
209 #define FMF_NO_COLUMN_BREAK 0x10
210
211 HMENU WINAPI FileMenu_Create(
212 COLORREF crBorderColor,
213 int nBorderWidth,
214 HBITMAP hBorderBmp,
215 int nSelHeight,
216 UINT uFlags);
217
218 void WINAPI FileMenu_Destroy(HMENU hMenu);
219
220 /* FileMenu_AppendItem constants */
221 #define FM_SEPARATOR (LPCSTR)1
222 #define FM_BLANK_ICON -1
223 #define FM_DEFAULT_HEIGHT 0
224
225 BOOL WINAPI FileMenu_AppendItem(
226 HMENU hMenu,
227 LPCSTR lpszText,
228 UINT uID,
229 int iIcon,
230 HMENU hMenuPopup,
231 int nItemHeight);
232
233 /* FileMenu_InsertUsingPidl flags */
234 #define FMF_NO_EMPTY_ITEM 0x01
235 #define FMF_NO_PROGRAM_GROUPS 0x04
236
237 /* FileMenu_InsertUsingPidl callback function */
238 typedef void (CALLBACK *LPFNFMCALLBACK)(LPCITEMIDLIST pidlFolder, LPCITEMIDLIST pidlFile);
239
240 int WINAPI FileMenu_InsertUsingPidl(
241 HMENU hMenu,
242 UINT uID,
243 LPCITEMIDLIST pidl,
244 UINT uFlags,
245 UINT uEnumFlags,
246 LPFNFMCALLBACK lpfnCallback);
247
248 int WINAPI FileMenu_ReplaceUsingPidl(
249 HMENU hMenu,
250 UINT uID,
251 LPCITEMIDLIST pidl,
252 UINT uEnumFlags,
253 LPFNFMCALLBACK lpfnCallback);
254
255 void WINAPI FileMenu_Invalidate(HMENU hMenu);
256
257 HMENU WINAPI FileMenu_FindSubMenuByPidl(
258 HMENU hMenu,
259 LPCITEMIDLIST pidl);
260
261 BOOL WINAPI FileMenu_TrackPopupMenuEx(
262 HMENU hMenu,
263 UINT uFlags,
264 int x,
265 int y,
266 HWND hWnd,
267 LPTPMPARAMS lptpm);
268
269 BOOL WINAPI FileMenu_GetLastSelectedItemPidls(
270 UINT uReserved,
271 LPCITEMIDLIST *ppidlFolder,
272 LPCITEMIDLIST *ppidlItem);
273
274 LRESULT WINAPI FileMenu_MeasureItem(
275 HWND hWnd,
276 LPMEASUREITEMSTRUCT lpmis);
277
278 LRESULT WINAPI FileMenu_DrawItem(
279 HWND hWnd,
280 LPDRAWITEMSTRUCT lpdis);
281
282 BOOL WINAPI FileMenu_InitMenuPopup(HMENU hMenu);
283
284 void WINAPI FileMenu_AbortInitMenu(void);
285
286 LRESULT WINAPI FileMenu_HandleMenuChar(
287 HMENU hMenu,
288 WPARAM wParam);
289
290 BOOL WINAPI FileMenu_DeleteAllItems(HMENU hMenu);
291
292 BOOL WINAPI FileMenu_DeleteItemByCmd(
293 HMENU hMenu,
294 UINT uID);
295
296 BOOL WINAPI FileMenu_DeleteItemByIndex(
297 HMENU hMenu,
298 UINT uPos);
299
300 BOOL WINAPI FileMenu_DeleteMenuItemByFirstID(
301 HMENU hMenu,
302 UINT uID);
303
304 BOOL WINAPI FileMenu_DeleteSeparator(HMENU hMenu);
305
306 BOOL WINAPI FileMenu_EnableItemByCmd(
307 HMENU hMenu,
308 UINT uID,
309 BOOL bEnable);
310
311 DWORD WINAPI FileMenu_GetItemExtent(
312 HMENU hMenu,
313 UINT uPos);
314
315 int WINAPI FileMenu_AppendFilesForPidl(
316 HMENU hMenu,
317 LPCITEMIDLIST pidl,
318 BOOL bAddSeparator);
319
320 int WINAPI FileMenu_AddFilesForPidl(
321 HMENU hMenu,
322 UINT uReserved,
323 UINT uID,
324 LPCITEMIDLIST pidl,
325 UINT uFlags,
326 UINT uEnumFlags,
327 LPFNFMCALLBACK lpfnCallback);
328
329 /****************************************************************************
330 * Drag And Drop Routines
331 */
332
333 HRESULT WINAPI SHRegisterDragDrop(
334 HWND hWnd,
335 LPDROPTARGET lpDropTarget);
336
337 HRESULT WINAPI SHRevokeDragDrop(HWND hWnd);
338
339 BOOL WINAPI DAD_DragEnter(HWND hWnd);
340
341 BOOL WINAPI DAD_SetDragImageFromListView(
342 HWND hWnd,
343 POINT pt);
344
345 BOOL WINAPI DAD_ShowDragImage(BOOL bShow);
346
347 /****************************************************************************
348 * Path Manipulation Routines
349 */
350
351 BOOL WINAPI PathAppendAW(LPVOID lpszPath1, LPCVOID lpszPath2);
352
353 LPVOID WINAPI PathCombineAW(LPVOID szDest, LPCVOID lpszDir, LPCVOID lpszFile);
354
355 LPVOID WINAPI PathAddBackslashAW(LPVOID path);
356
357 LPVOID WINAPI PathBuildRootAW(LPVOID lpszPath, int drive);
358
359 LPVOID WINAPI PathFindExtensionAW(LPCVOID path);
360
361 LPVOID WINAPI PathFindFileNameAW(LPCVOID path);
362
363 LPVOID WINAPI PathGetExtensionAW(LPCVOID lpszPath, DWORD void1, DWORD void2);
364
365 LPVOID WINAPI PathGetArgsAW(LPVOID lpszPath);
366
367 BOOL WINAPI PathRemoveFileSpecAW(LPVOID lpszPath);
368
369 void WINAPI PathRemoveBlanksAW(LPVOID lpszPath);
370
371 VOID WINAPI PathQuoteSpacesAW(LPVOID path);
372
373 void WINAPI PathUnquoteSpacesAW(LPVOID lpszPath);
374
375 BOOL WINAPI PathIsUNCAW(LPCVOID lpszPath);
376
377 BOOL WINAPI PathIsRelativeAW(LPCVOID lpszPath);
378
379 BOOL WINAPI PathIsRootAW(LPCVOID x);
380
381 BOOL WINAPI PathIsExeAW(LPCVOID lpszPath);
382
383 BOOL WINAPI PathIsDirectoryAW(LPCVOID lpszPath);
384
385 BOOL WINAPI PathFileExistsAW(LPCVOID lpszPath);
386
387 BOOL WINAPI PathMatchSpecAW(LPVOID lpszPath, LPVOID lpszSpec);
388
389 BOOL WINAPI PathMakeUniqueNameAW(
390 LPVOID lpszBuffer,
391 DWORD dwBuffSize,
392 LPCVOID lpszShortName,
393 LPCVOID lpszLongName,
394 LPCVOID lpszPathName);
395
396 BOOL WINAPI PathYetAnotherMakeUniqueName(
397 LPWSTR lpszBuffer,
398 LPCWSTR lpszPathName,
399 LPCWSTR lpszShortName,
400 LPCWSTR lpszLongName);
401
402 BOOL WINAPI PathQualifyAW(LPCVOID path);
403
404
405 /* PathResolve flags */
406 #define PRF_CHECKEXISTANCE 0x01
407 #define PRF_EXECUTABLE 0x02
408 #define PRF_QUALIFYONPATH 0x04
409 #define PRF_WINDOWS31 0x08
410
411 BOOL WINAPI PathResolveAW(LPVOID lpszPath, LPCVOID *alpszPaths, DWORD dwFlags);
412
413 VOID WINAPI PathSetDlgItemPathAW(HWND hDlg, int nIDDlgItem, LPCVOID lpszPath);
414
415 /* PathProcessCommand flags */
416 #define PPCF_QUOTEPATH 0x01 /* implies PPCF_INCLUDEARGS */
417 #define PPCF_INCLUDEARGS 0x02
418 //#define PPCF_NODIRECTORIES 0x10 move to shlobj
419 #define PPCF_DONTRESOLVE 0x20
420 #define PPCF_PATHISRELATIVE 0x40
421
422 HRESULT WINAPI PathProcessCommandAW(LPCVOID lpszPath, LPVOID lpszBuff,
423 DWORD dwBuffSize, DWORD dwFlags);
424
425 void WINAPI PathStripPathAW(LPVOID lpszPath);
426
427 BOOL WINAPI PathStripToRootAW(LPVOID lpszPath);
428
429 void WINAPI PathRemoveArgsAW(LPVOID lpszPath);
430
431 void WINAPI PathRemoveExtensionAW(LPVOID lpszPath);
432
433 int WINAPI PathParseIconLocationAW(LPVOID lpszPath);
434
435 BOOL WINAPI PathIsSameRootAW(LPCVOID lpszPath1, LPCVOID lpszPath2);
436
437 BOOL WINAPI PathFindOnPathAW(LPVOID sFile, LPCVOID *sOtherDirs);
438
439 /****************************************************************************
440 * Shell Namespace Routines
441 */
442
443 /* Generic structure used by several messages */
444 typedef struct
445 {
446 DWORD dwReserved;
447 DWORD dwReserved2;
448 LPCITEMIDLIST pidl;
449 LPDWORD lpdwUser;
450 } SFVCBINFO, * LPSFVCBINFO;
451 typedef const SFVCBINFO * LPCSFVCBINFO;
452
453 /* SFVCB_SELECTIONCHANGED structure */
454 typedef struct
455 {
456 UINT uOldState;
457 UINT uNewState;
458 LPCITEMIDLIST pidl;
459 LPDWORD lpdwUser;
460 } SFVSELECTSTATE, * LPSFVSELECTSTATE;
461 typedef const SFVSELECTSTATE * LPCSFVSELECTSTATE;
462
463 /* SFVCB_COPYHOOKCALLBACK structure */
464 typedef struct
465 {
466 HWND hwnd;
467 UINT wFunc;
468 UINT wFlags;
469 LPCSTR pszSrcFile;
470 DWORD dwSrcAttribs;
471 LPCSTR pszDestFile;
472 DWORD dwDestAttribs;
473 } SFVCOPYHOOKINFO, * LPSFVCOPYHOOKINFO;
474 typedef const SFVCOPYHOOKINFO * LPCSFVCOPYHOOKINFO;
475
476 /* SFVCB_GETDETAILSOF structure */
477 typedef struct
478 {
479 LPCITEMIDLIST pidl;
480 int fmt;
481 int cx;
482 STRRET lpText;
483 } SFVCOLUMNINFO, * LPSFVCOLUMNINFO;
484
485 /****************************************************************************
486 * Misc Stuff
487 */
488
489 /* SHWaitForFileToOpen flags */
490 #define SHWFF_ADD 0x01
491 #define SHWFF_REMOVE 0x02
492 #define SHWFF_WAIT 0x04
493
494 BOOL WINAPI SHWaitForFileToOpen(
495 LPCITEMIDLIST pidl,
496 DWORD dwFlags,
497 DWORD dwTimeout);
498
499 WORD WINAPI ArrangeWindows(
500 HWND hwndParent,
501 DWORD dwReserved,
502 LPCRECT lpRect,
503 WORD cKids,
504 CONST HWND * lpKids);
505
506 /* RegisterShellHook types */
507 #define RSH_DEREGISTER 0
508 #define RSH_REGISTER 1
509 #define RSH_REGISTER_PROGMAN 2
510 #define RSH_REGISTER_TASKMAN 3
511
512 BOOL WINAPI RegisterShellHook(
513 HWND hWnd,
514 DWORD dwType);
515
516 /* SHCreateDefClassObject callback function */
517 typedef HRESULT (CALLBACK *LPFNCDCOCALLBACK)(
518 LPUNKNOWN pUnkOuter,
519 REFIID riidObject,
520 LPVOID *ppvObject);
521
522 HRESULT WINAPI SHCreateDefClassObject(
523 REFIID riidFactory,
524 LPVOID *ppvFactory,
525 LPFNCDCOCALLBACK lpfnCallback,
526 LPDWORD lpdwUsage,
527 REFIID riidObject);
528
529 void WINAPI SHFreeUnusedLibraries(void);
530
531 /* SHCreateLinks flags */
532 #define SHCLF_PREFIXNAME 0x01
533 #define SHCLF_CREATEONDESKTOP 0x02
534
535 HRESULT WINAPI SHCreateLinks(
536 HWND hWnd,
537 LPCSTR lpszDir,
538 LPDATAOBJECT lpDataObject,
539 UINT uFlags,
540 LPITEMIDLIST *lppidlLinks);
541
542 DWORD WINAPI CheckEscapesA(LPSTR string, DWORD len);
543 DWORD WINAPI CheckEscapesW(LPWSTR string, DWORD len);
544
545 /* policy functions */
546 BOOL WINAPI SHInitRestricted(LPCVOID unused, LPCVOID inpRegKey);
547
548 /* Shell Desktop functions */
549
550 #define WM_GETISHELLBROWSER (WM_USER+7)
551
552 BOOL WINAPI SHDesktopMessageLoop(HANDLE);
553
554 #define CSIDL_FOLDER_MASK 0x00ff
555
556 #ifdef __cplusplus
557 } /* extern "C" */
558 #endif /* defined(__cplusplus) */
559
560 #endif /* __WINE_UNDOCSHELL_H */