source: trunk/src/shell32/undocshell.h@ 10367

Last change on this file since 10367 was 8614, checked in by sandervl, 23 years ago

compile fixes

File size: 21.4 KB
Line 
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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 */
18
19#ifndef __WINE_UNDOCSHELL_H
20#define __WINE_UNDOCSHELL_H
21
22#include "windef.h"
23#include "commctrl.h"
24#include "shlobj.h"
25
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);
35
36LPITEMIDLIST WINAPI ILCombine(
37 LPCITEMIDLIST iil1,
38 LPCITEMIDLIST iil2);
39
40DWORD WINAPI ILGetSize(LPITEMIDLIST pidl);
41
42LPITEMIDLIST WINAPI ILGetNext(LPITEMIDLIST pidl);
43LPITEMIDLIST WINAPI ILFindLastID(LPITEMIDLIST pidl);
44BOOL WINAPI ILRemoveLastID(LPCITEMIDLIST pidl);
45
46LPITEMIDLIST WINAPI ILFindChild(
47 LPCITEMIDLIST pidl1,
48 LPCITEMIDLIST pidl2);
49
50LPITEMIDLIST 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);
67
68DWORD WINAPI ILFree(LPITEMIDLIST pidl);
69
70HRESULT 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
81LPITEMIDLIST WINAPI SHSimpleIDListFromPathA (LPCSTR lpszPath);
82LPITEMIDLIST WINAPI SHSimpleIDListFromPathW (LPCWSTR lpszPath);
83LPITEMIDLIST WINAPI SHSimpleIDListFromPathAW (LPCVOID lpszPath);
84
85HRESULT 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);
99
100LPITEMIDLIST WINAPI ILCreateFromPathA(LPCSTR path);
101LPITEMIDLIST WINAPI ILCreateFromPathW(LPCWSTR path);
102LPITEMIDLIST WINAPI ILCreateFromPathAW(LPCVOID path);
103
104HRESULT WINAPI SHBindToParent(
105 LPCITEMIDLIST pidl,
106 REFIID riid,
107 LPVOID *ppv,
108 LPCITEMIDLIST *ppidlLast);
109
110/*
111 string functions
112*/
113HRESULT WINAPI StrRetToStrNA (
114 LPVOID dest,
115 DWORD len,
116 LPSTRRET src,
117 const ITEMIDLIST *pidl);
118
119HRESULT WINAPI StrRetToStrNW (
120 LPVOID dest,
121 DWORD len,
122 LPSTRRET src,
123 const ITEMIDLIST *pidl);
124
125HRESULT WINAPI StrRetToStrNAW (
126 LPVOID dest,
127 DWORD len,
128 LPSTRRET src,
129 const ITEMIDLIST *pidl);
130
131
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(
155 HWND hwnd,
156 LONG dwFlags,
157 LONG wEventMask,
158 DWORD uMsg,
159 int cItems,
160 LPCNOTIFYREGISTER lpItems);
161
162BOOL 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 */
183#define RFF_NOBROWSE 0x01
184#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;
194 LPCSTR lpDirectory;
195 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,
216 UINT uFlags);
217
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);
234
235/* 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 */
313#define CWTP_ISEQUAL 0
314#define CWTP_ISCHILD 1
315
316/* CWM_TESTPATH structure */
317typedef struct
318{
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 */
388#ifdef __WIN32OS2__
389typedef void (* CALLBACK LPFNFMCALLBACK)(LPCITEMIDLIST pidlFolder, LPCITEMIDLIST pidlFile);
390#else
391typedef void (CALLBACK *LPFNFMCALLBACK)(LPCITEMIDLIST pidlFolder, LPCITEMIDLIST pidlFile);
392#endif
393
394int WINAPI FileMenu_InsertUsingPidl(
395 HMENU hMenu,
396 UINT uID,
397 LPCITEMIDLIST pidl,
398 UINT uFlags,
399 UINT uEnumFlags,
400 LPFNFMCALLBACK lpfnCallback);
401
402int WINAPI FileMenu_ReplaceUsingPidl(
403 HMENU hMenu,
404 UINT uID,
405 LPCITEMIDLIST pidl,
406 UINT uEnumFlags,
407 LPFNFMCALLBACK lpfnCallback);
408
409void WINAPI FileMenu_Invalidate(HMENU hMenu);
410
411HMENU WINAPI FileMenu_FindSubMenuByPidl(
412 HMENU hMenu,
413 LPCITEMIDLIST pidl);
414
415BOOL WINAPI FileMenu_TrackPopupMenuEx(
416 HMENU hMenu,
417 UINT uFlags,
418 int x,
419 int y,
420 HWND hWnd,
421 LPTPMPARAMS lptpm);
422
423BOOL WINAPI FileMenu_GetLastSelectedItemPidls(
424 UINT uReserved,
425 LPITEMIDLIST *ppidlFolder,
426 LPITEMIDLIST *ppidlItem);
427
428LRESULT WINAPI FileMenu_MeasureItem(
429 HWND hWnd,
430 LPMEASUREITEMSTRUCT lpmis);
431
432LRESULT WINAPI FileMenu_DrawItem(
433 HWND hWnd,
434 LPDRAWITEMSTRUCT lpdis);
435
436BOOL WINAPI FileMenu_InitMenuPopup(HMENU hMenu);
437
438void WINAPI FileMenu_AbortInitMenu(void);
439
440LRESULT WINAPI FileMenu_HandleMenuChar(
441 HMENU hMenu,
442 WPARAM wParam);
443
444BOOL WINAPI FileMenu_DeleteAllItems(HMENU hMenu);
445
446BOOL WINAPI FileMenu_DeleteItemByCmd(
447 HMENU hMenu,
448 UINT uID);
449
450BOOL WINAPI FileMenu_DeleteItemByIndex(
451 HMENU hMenu,
452 UINT uPos);
453
454BOOL WINAPI FileMenu_DeleteMenuItemByFirstID(
455 HMENU hMenu,
456 UINT uID);
457
458BOOL WINAPI FileMenu_DeleteSeparator(HMENU hMenu);
459
460BOOL WINAPI FileMenu_EnableItemByCmd(
461 HMENU hMenu,
462 UINT uID,
463 BOOL bEnable);
464
465DWORD WINAPI FileMenu_GetItemExtent(
466 HMENU hMenu,
467 UINT uPos);
468
469int WINAPI FileMenu_AppendFilesForPidl(
470 HMENU hMenu,
471 LPCITEMIDLIST pidl,
472 BOOL bAddSeparator);
473
474int WINAPI FileMenu_AddFilesForPidl(
475 HMENU hMenu,
476 UINT uReserved,
477 UINT uID,
478 LPCITEMIDLIST pidl,
479 UINT uFlags,
480 UINT uEnumFlags,
481 LPFNFMCALLBACK lpfnCallback);
482
483/****************************************************************************
484 * Drag And Drop Routines
485 */
486HRESULT WINAPI SHLoadOLE(DWORD dwFlags);
487
488HRESULT WINAPI SHRegisterDragDrop(
489 HWND hWnd,
490 LPDROPTARGET lpDropTarget);
491
492HRESULT WINAPI SHRevokeDragDrop(HWND hWnd);
493
494HRESULT WINAPI SHDoDragDrop(
495 HWND hWnd,
496 LPDATAOBJECT lpDataObject,
497 LPDROPSOURCE lpDropSource,
498 DWORD dwOKEffect,
499 LPDWORD pdwEffect);
500
501BOOL WINAPI DAD_DragEnter(HWND hWnd);
502
503BOOL WINAPI DAD_DragEnterEx(
504 HWND hWnd,
505 POINT pt);
506
507BOOL WINAPI DAD_DragMove(POINT pt);
508
509/* DAD_AutoScroll return values */
510#define DAD_SCROLL_UP 1
511#define DAD_SCROLL_DOWN 2
512#define DAD_SCROLL_LEFT 4
513#define DAD_SCROLL_RIGHT 8
514
515/* DAD_AutoScroll sample structure */
516typedef struct
517{
518 DWORD dwCount;
519 DWORD dwLastTime;
520 BOOL bWrapped;
521 POINT aptPositions[3];
522 DWORD adwTimes[3];
523} SCROLLSAMPLES, *LPSCROLLSAMPLES;
524
525DWORD WINAPI DAD_AutoScroll(HWND hWnd,
526 LPSCROLLSAMPLES lpSamples,
527 LPPOINT lppt);
528
529BOOL WINAPI DAD_DragLeave();
530
531BOOL WINAPI DAD_SetDragImageFromListView(
532 HWND hWnd,
533 POINT pt);
534
535BOOL WINAPI DAD_SetDragImage(
536 HIMAGELIST himlTrack,
537 LPPOINT lppt);
538
539BOOL WINAPI DAD_ShowDragImage(BOOL bShow);
540
541HRESULT WINAPI SHCreateStdEnumFmtEtc(
542 DWORD cFormats,
543 const FORMATETC *lpFormats,
544 LPENUMFORMATETC *ppenumFormatetc);
545
546HRESULT WINAPI CIDLData_CreateFromIDArray(
547 LPCITEMIDLIST pidlFolder,
548 DWORD cpidlFiles,
549 LPCITEMIDLIST *lppidlFiles,
550 LPDATAOBJECT *ppdataObject);
551
552/****************************************************************************
553 * Path Manipulation Routines
554 */
555
556BOOL WINAPI PathAppendAW(LPVOID lpszPath1, LPCVOID lpszPath2);
557
558LPVOID WINAPI PathCombineAW(LPVOID szDest, LPCVOID lpszDir, LPCVOID lpszFile);
559
560LPVOID WINAPI PathAddBackslashAW(LPVOID path);
561
562LPVOID WINAPI PathBuildRootAW(LPVOID lpszPath, int drive);
563
564LPVOID WINAPI PathFindExtensionAW(LPCVOID path);
565
566LPVOID WINAPI PathFindFileNameAW(LPCVOID path);
567
568LPVOID WINAPI PathGetExtensionAW(LPCVOID lpszPath, DWORD void1, DWORD void2);
569
570LPVOID WINAPI PathGetArgsAW(LPVOID lpszPath);
571
572BOOL WINAPI PathRemoveFileSpecAW(LPVOID lpszPath);
573
574LPVOID WINAPI PathGetShortPathAW(LPVOID lpszPath);
575
576void WINAPI PathRemoveBlanksAW(LPVOID lpszPath);
577
578VOID WINAPI PathQuoteSpacesAW(LPVOID path);
579
580void WINAPI PathUnquoteSpacesAW(LPVOID lpszPath);
581
582BOOL WINAPI PathIsUNCAW(LPCVOID lpszPath);
583
584BOOL WINAPI PathIsRelativeAW(LPCVOID lpszPath);
585
586BOOL WINAPI PathIsRootAW(LPCVOID x);
587
588BOOL WINAPI PathIsExeAW(LPCVOID lpszPath);
589
590BOOL WINAPI PathIsDirectoryAW(LPCVOID lpszPath);
591
592BOOL WINAPI PathFileExistsAW(LPCVOID lpszPath);
593
594BOOL WINAPI PathMatchSpecAW(LPVOID lpszPath, LPVOID lpszSpec);
595
596BOOL WINAPI PathMakeUniqueNameAW(
597 LPVOID lpszBuffer,
598 DWORD dwBuffSize,
599 LPCVOID lpszShortName,
600 LPCVOID lpszLongName,
601 LPCVOID lpszPathName);
602
603BOOL WINAPI PathYetAnotherMakeUniqueNameA(
604 LPSTR lpszBuffer,
605 LPCSTR lpszPathName,
606 LPCSTR lpszShortName,
607 LPCSTR lpszLongName);
608
609/* PathCleanupSpec return values */
610#define PCS_REPLACEDCHARS 0x00000001
611#define PCS_REMOVEDCHARS 0x00000002
612#define PCS_SHORTENED 0x00000004
613#define PCS_PATHTOOLONG 0x80000008
614
615DWORD WINAPI PathCleanupSpecAW(LPCVOID lpszPath, LPVOID lpszFile);
616
617BOOL WINAPI PathQualifyA(LPCSTR path);
618BOOL WINAPI PathQualifyW(LPCWSTR path);
619#define PathQualify WINELIB_NAME_AW(PathQualify)
620BOOL WINAPI PathQualifyAW(LPCVOID path);
621
622
623/* PathResolve flags */
624#define PRF_CHECKEXISTANCE 0x01
625#define PRF_EXECUTABLE 0x02
626#define PRF_QUALIFYONPATH 0x04
627#define PRF_WINDOWS31 0x08
628
629BOOL WINAPI PathResolveAW(LPVOID lpszPath, LPCVOID *alpszPaths, DWORD dwFlags);
630
631VOID WINAPI PathSetDlgItemPathAW(HWND hDlg, int nIDDlgItem, LPCVOID lpszPath);
632
633/* PathProcessCommand flags */
634#define PPCF_QUOTEPATH 0x01 /* implies PPCF_INCLUDEARGS */
635#define PPCF_INCLUDEARGS 0x02
636#define PPCF_NODIRECTORIES 0x10
637#define PPCF_DONTRESOLVE 0x20
638#define PPCF_PATHISRELATIVE 0x40
639
640HRESULT WINAPI PathProcessCommandAW(LPCVOID lpszPath, LPVOID lpszBuff,
641 DWORD dwBuffSize, DWORD dwFlags);
642
643void WINAPI PathStripPathAW(LPVOID lpszPath);
644
645BOOL WINAPI PathStripToRootAW(LPVOID lpszPath);
646
647void WINAPI PathRemoveArgsAW(LPVOID lpszPath);
648
649void WINAPI PathRemoveExtensionAW(LPVOID lpszPath);
650
651int WINAPI PathParseIconLocationAW(LPVOID lpszPath);
652
653BOOL WINAPI PathIsSameRootAW(LPCVOID lpszPath1, LPCVOID lpszPath2);
654
655BOOL WINAPI PathFindOnPathAW(LPVOID sFile, LPCVOID sOtherDirs);
656
657/****************************************************************************
658 * Shell Namespace Routines
659 */
660
661/* SHCreateShellFolderViewEx callback function */
662#ifdef __WIN32OS2__
663typedef HRESULT (* CALLBACK LPFNSFVCALLBACK)(
664 DWORD dwUser,
665 LPSHELLFOLDER pshf,
666 HWND hWnd,
667 UINT uMsg,
668 WPARAM wParam,
669 LPARAM lParam);
670#else
671typedef HRESULT (CALLBACK *LPFNSFVCALLBACK)(
672 DWORD dwUser,
673 LPSHELLFOLDER pshf,
674 HWND hWnd,
675 UINT uMsg,
676 WPARAM wParam,
677 LPARAM lParam);
678#endif
679
680/* SHCreateShellFolderViewEx structure */
681typedef struct
682{
683 DWORD dwSize;
684 LPSHELLFOLDER pshf;
685 DWORD dwUser;
686 LPCITEMIDLIST pidlFolder;
687 DWORD dwEventId;
688 LPFNSFVCALLBACK lpfnCallback;
689 UINT uViewMode;
690} SHELLFOLDERVIEWINFO, * LPSHELLFOLDERVIEWINFO;
691typedef const SHELLFOLDERVIEWINFO * LPCSHELLFOLDERVIEWINFO;
692
693HRESULT WINAPI SHCreateShellFolderViewEx(
694 LPCSHELLFOLDERVIEWINFO pshfvi,
695 LPSHELLVIEW *ppshv);
696
697/* SHCreateShellFolderViewEx callback messages */
698#define SFVCB_ADDTOMENU 0x0001
699#define SFVCB_INVOKECOMMAND 0x0002
700#define SFVCB_GETMENUHELP 0x0003
701#define SFVCB_GETTOOLBARTIP 0x0004
702#define SFVCB_GETTOOLBARINFO 0x0005
703#define SFVCB_ADDTOOLBARITEMS 0x0006
704#define SFVCB_INITMENUPOPUP 0x0007
705#define SFVCB_SELECTIONCHANGED 0x0008
706#define SFVCB_DRAWMENUITEM 0x0009
707#define SFVCB_MEASUREMENUITEM 0x000A
708#define SFVCB_EXITMENULOOP 0x000B
709#define SFVCB_VIEWRELEASE 0x000C
710#define SFVCB_GETNAMELENGTH 0x000D
711#define SFVCB_CHANGENOTIFY 0x000E
712#define SFVCB_WINDOWCREATED 0x000F
713#define SFVCB_WINDOWCLOSING 0x0010
714#define SFVCB_LISTREFRESHED 0x0011
715#define SFVCB_WINDOWFOCUSED 0x0012
716#define SFVCB_REGISTERCOPYHOOK 0x0014
717#define SFVCB_COPYHOOKCALLBACK 0x0015
718#define SFVCB_GETDETAILSOF 0x0017
719#define SFVCB_COLUMNCLICK 0x0018
720#define SFVCB_GETCHANGENOTIFYPIDL 0x0019
721#define SFVCB_GETESTIMATEDCOUNT 0x001A
722#define SFVCB_ADJUSTVIEWMODE 0x001B
723#define SFVCB_REMOVEFROMMENU 0x001C
724#define SFVCB_ADDINGOBJECT 0x001D
725#define SFVCB_REMOVINGOBJECT 0x001E
726#define SFVCB_UPDATESTATUSBAR 0x001F
727#define SFVCB_ISSLOWREFRESH 0x0020
728#define SFVCB_GETCOMMANDDIR 0x0021
729#define SFVCB_GETCOLUMNSTREAM 0x0022
730#define SFVCB_CANSELECTALL 0x0023
731#define SFVCB_DRAGSUCCEEDED 0x0024
732#define SFVCB_ISSTRICTREFRESH 0x0025
733#define SFVCB_ISCHILDOBJECT 0x0026
734
735/* Generic structure used by several messages */
736typedef struct
737{
738 DWORD dwReserved;
739 DWORD dwReserved2;
740 LPCITEMIDLIST pidl;
741 LPDWORD lpdwUser;
742} SFVCBINFO, * LPSFVCBINFO;
743typedef const SFVCBINFO * LPCSFVCBINFO;
744
745/* SFVCB_ADDTOMENU structure */
746typedef struct
747{
748 HMENU hMenu;
749 UINT indexMenu;
750 UINT idCmdFirst;
751 UINT idCmdLast;
752} SFVMENUINFO, * LPSFVMENUINFO;
753
754/* SFVCB_GETTOOLBARINFO structure */
755typedef struct
756{
757 UINT nButtons;
758 UINT uFlags;
759} SFVTOOLBARINFO, * LPSFVTOOLBARINFO;
760
761/* SFVTOOLBARINFO flags */
762typedef enum
763{
764 SFVTI_ADDTOEND = 0,
765 SFVTI_ADDTOFRONT = 1,
766 SFVTI_OVERWRITE = 2
767} SFVTIF;
768
769/* SFVCB_SELECTIONCHANGED structure */
770typedef struct
771{
772 UINT uOldState;
773 UINT uNewState;
774 LPCITEMIDLIST pidl;
775 LPDWORD lpdwUser;
776} SFVSELECTSTATE, * LPSFVSELECTSTATE;
777typedef const SFVSELECTSTATE * LPCSFVSELECTSTATE;
778
779/* SFVCB_COPYHOOKCALLBACK structure */
780typedef struct
781{
782 HWND hwnd;
783 UINT wFunc;
784 UINT wFlags;
785 LPCSTR pszSrcFile;
786 DWORD dwSrcAttribs;
787 LPCSTR pszDestFile;
788 DWORD dwDestAttribs;
789} SFVCOPYHOOKINFO, * LPSFVCOPYHOOKINFO;
790typedef const SFVCOPYHOOKINFO * LPCSFVCOPYHOOKINFO;
791
792/* SFVCB_GETDETAILSOF structure */
793typedef struct
794{
795 LPCITEMIDLIST pidl;
796 int fmt;
797 int cx;
798 STRRET lpText;
799} SFVCOLUMNINFO, * LPSFVCOLUMNINFO;
800
801int WINAPI SHShellFolderView_Message(
802 HWND hwndCabinet,
803 DWORD dwMessage,
804 DWORD dwParam);
805
806/* SHShellFolderView_Message messages */
807#define SFVM_REARRANGE 0x0001
808#define SFVM_GETARRANGECOLUMN 0x0002
809#define SFVM_ADDOBJECT 0x0003
810#define SFVM_GETITEMCOUNT 0x0004
811#define SFVM_GETITEMPIDL 0x0005
812#define SFVM_REMOVEOBJECT 0x0006
813#define SFVM_UPDATEOBJECT 0x0007
814#define SFVM_SETREDRAW 0x0008
815#define SFVM_GETSELECTEDOBJECTS 0x0009
816#define SFVM_ISDROPONSOURCE 0x000A
817#define SFVM_MOVEICONS 0x000B
818#define SFVM_GETDRAGPOINT 0x000C
819#define SFVM_GETDROPPOINT 0x000D
820#define SFVM_SETOBJECTPOS 0x000E
821#define SFVM_ISDROPONBACKGROUND 0x000F
822#define SFVM_CUTOBJECTS 0x0010
823#define SFVM_TOGGLEAUTOARRANGE 0x0011
824#define SFVM_LINEUPICONS 0x0012
825#define SFVM_GETAUTOARRANGE 0x0013
826#define SFVM_GETSELECTEDCOUNT 0x0014
827#define SFVM_GETITEMSPACING 0x0015
828#define SFVM_REFRESHOBJECT 0x0016
829#define SFVM_SETCLIPBOARDPOINTS 0x0017
830
831/****************************************************************************
832 * Misc Stuff
833 */
834
835/* SHWaitForFileToOpen flags */
836#define SHWFF_ADD 0x01
837#define SHWFF_REMOVE 0x02
838#define SHWFF_WAIT 0x04
839
840BOOL WINAPI SHWaitForFileToOpen(
841 LPCITEMIDLIST pidl,
842 DWORD dwFlags,
843 DWORD dwTimeout);
844
845WORD WINAPI ArrangeWindows(
846 HWND hwndParent,
847 DWORD dwReserved,
848 LPCRECT lpRect,
849 WORD cKids,
850 CONST HWND * lpKids);
851
852/* RegisterShellHook types */
853#define RSH_DEREGISTER 0
854#define RSH_REGISTER 1
855#define RSH_REGISTER_PROGMAN 2
856#define RSH_REGISTER_TASKMAN 3
857
858BOOL WINAPI RegisterShellHook(
859 HWND hWnd,
860 DWORD dwType);
861
862/* SHCreateDefClassObject callback function */
863#ifdef __WIN32OS2__
864typedef HRESULT (* CALLBACK LPFNCDCOCALLBACK)(
865 LPUNKNOWN pUnkOuter,
866 REFIID riidObject,
867 LPVOID *ppvObject);
868#else
869typedef HRESULT (CALLBACK *LPFNCDCOCALLBACK)(
870 LPUNKNOWN pUnkOuter,
871 REFIID riidObject,
872 LPVOID *ppvObject);
873#endif
874
875HRESULT WINAPI SHCreateDefClassObject(
876 REFIID riidFactory,
877 LPVOID *ppvFactory,
878 LPFNCDCOCALLBACK lpfnCallback,
879 LPDWORD lpdwUsage,
880 REFIID riidObject);
881
882HRESULT WINAPI SHCoCreateInstance(
883 LPCSTR lpszClsid,
884 REFCLSID rClsid,
885 LPUNKNOWN pUnkOuter,
886 REFIID riid,
887 LPVOID *ppv);
888
889void WINAPI SHFreeUnusedLibraries();
890
891/* SHCreateLinks flags */
892#define SHCLF_PREFIXNAME 0x01
893#define SHCLF_CREATEONDESKTOP 0x02
894
895HRESULT WINAPI SHCreateLinks(
896 HWND hWnd,
897 LPCSTR lpszDir,
898 LPDATAOBJECT lpDataObject,
899 UINT uFlags,
900 LPITEMIDLIST *lppidlLinks);
901
902/* SHGetNewLinkInfo flags */
903#define SHGNLI_PIDL 0x01
904#define SHGNLI_PREFIXNAME 0x02
905#define SHGNLI_NOUNIQUE 0x04
906
907BOOL WINAPI SHGetNewLinkInfoA(
908 LPCSTR pszLinkTo,
909 LPCSTR pszDir,
910 LPSTR pszName,
911 BOOL *pfMustCopy,
912 UINT uFlags);
913
914BOOL WINAPI SHGetNewLinkInfoW(
915 LPCWSTR pszLinkTo,
916 LPCWSTR pszDir,
917 LPWSTR pszName,
918 BOOL *pfMustCopy,
919 UINT uFlags);
920#define SHGetNewLinkInfo WINELIB_NAME_AW(SHGetNewLinkInfo)
921
922/* policy functions */
923BOOL WINAPI SHInitRestricted(LPSTR, LPSTR);
924
925#ifdef __cplusplus
926} /* extern "C" */
927#endif /* defined(__cplusplus) */
928
929#endif /* __WINE_UNDOCSHELL_H */
Note: See TracBrowser for help on using the repository browser.