source: trunk/src/shell32/shell32.h@ 1036

Last change on this file since 1036 was 428, checked in by phaller, 26 years ago

Fix: small shell32 fix

File size: 14.7 KB
Line 
1/* $Id: shell32.h,v 1.5 1999-08-05 21:03:35 phaller Exp $ */
2
3#ifndef __shell32_H__
4#define __shell32_H__
5
6#define LPMALLOC void *
7
8typedef struct
9{
10 WORD cb; /* nr of bytes in this item */
11 BYTE abID[1]; /* first byte in this item */
12} SHITEMID, *LPSHITEMID;
13
14
15typedef struct
16{
17 SHITEMID mkid; /* first itemid in list */
18} ITEMIDLIST, *LPITEMIDLIST, *LPCITEMIDLIST;
19
20
21typedef int (* WIN32API BFFCALLBACK)(HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData);
22
23typedef struct _browseinfoA
24{
25 HWND hwndOwner;
26 LPCITEMIDLIST pidlRoot;
27 LPSTR pszDisplayName;// Return display name of item selected.
28 LPCSTR lpszTitle; // text to go in the banner over the tree.
29 UINT ulFlags; // Flags that control the return stuff
30 BFFCALLBACK lpfn;
31 LPARAM lParam; // extra info that's passed back in callbacks
32
33 int iImage; // output var: where to return the Image index.
34} BROWSEINFOA, *PBROWSEINFOA, *LPBROWSEINFOA;
35
36typedef struct _browseinfoW
37{
38 HWND hwndOwner;
39 LPCITEMIDLIST pidlRoot;
40 LPWSTR pszDisplayName;// Return display name of item selected.
41 LPCWSTR lpszTitle; // text to go in the banner over the tree.
42 UINT ulFlags; // Flags that control the return stuff
43 BFFCALLBACK lpfn;
44 LPARAM lParam; // extra info that's passed back in callbacks
45
46 int iImage; // output var: where to return the Image index.
47} BROWSEINFOW, *PBROWSEINFOW, *LPBROWSEINFOW;
48
49// Browsing for directory.
50#define BIF_RETURNONLYFSDIRS 0x0001 // For finding a folder to start document searching
51#define BIF_DONTGOBELOWDOMAIN 0x0002 // For starting the Find Computer
52#define BIF_STATUSTEXT 0x0004
53#define BIF_RETURNFSANCESTORS 0x0008
54
55#define BIF_BROWSEFORCOMPUTER 0x1000 // Browsing for Computers.
56#define BIF_BROWSEFORPRINTER 0x2000 // Browsing for Printers
57#define BIF_BROWSEINCLUDEFILES 0x4000 // Browsing for Everything
58
59// message from browser
60#define BFFM_INITIALIZED 1
61#define BFFM_SELCHANGED 2
62
63// messages to browser
64#define BFFM_SETSTATUSTEXT (WM_USER + 100)
65#define BFFM_ENABLEOK (WM_USER + 101)
66#define BFFM_SETSELECTION (WM_USER + 102)
67
68
69
70typedef void *LPSHELLFOLDER;
71
72
73
74
75/****************************************************************************
76* STRRET (temporary, move it away)
77*/
78#define STRRET_WSTR 0x0000
79#define STRRET_OFFSETA 0x0001
80#define STRRET_CSTRA 0x0002
81#define STRRET_ASTR 0X0003
82#define STRRET_OFFSETW 0X0004
83#define STRRET_CSTRW 0X0005
84
85
86typedef struct _STRRET
87{ UINT uType; /* STRRET_xxx */
88 union
89 {
90 LPWSTR pOleStr; /* OLESTR that will be freed */
91 LPSTR pStr;
92 UINT uOffset; /* OffsetINT32o SHITEMID (ANSI) */
93 char cStr[MAX_PATH]; /* Buffer to fill in */
94 WCHAR cStrW[MAX_PATH];
95 }u;
96} STRRET,*LPSTRRET;
97
98
99/**********************************************************************
100 * SHGetSettings ()
101 */
102typedef struct
103{ BOOL fShowAllObjects : 1;
104 BOOL fShowExtensions : 1;
105 BOOL fNoConfirmRecycle : 1;
106 BOOL fShowSysFiles : 1;
107
108 BOOL fShowCompColor : 1;
109 BOOL fDoubleClickInWebView : 1;
110 BOOL fDesktopHTML : 1;
111 BOOL fWin95Classic : 1;
112
113 BOOL fDontPrettyPath : 1;
114 BOOL fShowAttribCol : 1;
115 BOOL fMapNetDrvBtn : 1;
116 BOOL fShowInfoTip : 1;
117
118 BOOL fHideIcons : 1;
119 UINT fRestFlags : 3;
120} SHELLFLAGSTATE, * LPSHELLFLAGSTATE;
121
122void WIN32API SHGetSettings(LPSHELLFLAGSTATE lpsfs, DWORD dwMask, DWORD dwx);
123
124#define SSF_SHOWALLOBJECTS 0x0001
125#define SSF_SHOWEXTENSIONS 0x0002
126#define SSF_SHOWCOMPCOLOR 0x0008
127#define SSF_SHOWSYSFILES 0x0020
128#define SSF_DOUBLECLICKINWEBVIEW 0x0080
129#define SSF_SHOWATTRIBCOL 0x0100
130#define SSF_DESKTOPHTML 0x0200
131#define SSF_WIN95CLASSIC 0x0400
132#define SSF_DONTPRETTYPATH 0x0800
133#define SSF_SHOWINFOTIP 0x2000
134#define SSF_MAPNETDRVBUTTON 0x1000
135#define SSF_NOCONFIRMRECYCLE 0x8000
136#define SSF_HIDEICONS 0x4000
137
138
139
140/****************************************************************************
141 * Prototypes *
142 ****************************************************************************/
143
144HANDLE WIN32API SHFreeShared(HANDLE hmem, DWORD procID);
145DWORD WIN32API SHFree(LPVOID x);
146LPVOID WIN32API SHAlloc(DWORD len);
147HRESULT WIN32API SHGetSpecialFolderLocation(HWND hwndOwner, int nFolder, LPITEMIDLIST *ppidl);
148BOOL WIN32API SHGetPathFromIDListW(LPCITEMIDLIST pidl, LPWSTR pszPath);
149BOOL WIN32API SHGetPathFromIDListA(LPCITEMIDLIST pidl, LPSTR pszPath);
150LPSTR WIN32API PathCombineA(LPSTR szDest, LPCSTR lpszDir, LPCSTR lpszFile);
151
152
153#endif /* __shell32_h_ */
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169#if 0
170
171
172/* .ICO file ICONDIR definitions */
173
174#pragma pack(1)
175
176typedef struct
177{
178 BYTE bWidth; /* Width, in pixels, of the image */
179 BYTE bHeight; /* Height, in pixels, of the image */
180 BYTE bColorCount; /* Number of colors in image (0 if >=8bpp) */
181 BYTE bReserved; /* Reserved ( must be 0) */
182 WORD wPlanes; /* Color Planes */
183 WORD wBitCount; /* Bits per pixel */
184 DWORD dwBytesInRes; /* How many bytes in this resource? */
185 DWORD dwImageOffset; /* Where in the file is this image? */
186} icoICONDIRENTRY, *LPicoICONDIRENTRY;
187
188typedef struct
189{
190 WORD idReserved; /* Reserved (must be 0) */
191 WORD idType; /* Resource Type (1 for icons) */
192 WORD idCount; /* How many images? */
193 icoICONDIRENTRY idEntries[1]; /* An entry for each image (idCount of 'em) */
194} icoICONDIR, *LPicoICONDIR;
195
196#pragma pack(4)
197
198
199#endif
200
201
202
203
204
205
206#if 0
207#ifndef _WINE_SHLOBJ_H
208#define _WINE_SHLOBJ_H
209
210#include "shell.h"
211#include "ole.h"
212#include "ole2.h"
213#include "compobj.h"
214
215#define STDMETHOD(xfn) HRESULT (CALLBACK *fn##xfn)
216#define STDMETHOD_(type,xfn) type (CALLBACK *fn##xfn)
217#define PURE
218#define FAR
219#define THIS_ THIS,
220
221
222typedef LPVOID LPBC; /* *IBindCtx really */
223
224/*
225 * shell32 classids
226 */
227DEFINE_SHLGUID(CLSID_ShellDesktop, 0x00021400L, 0, 0);
228DEFINE_SHLGUID(CLSID_ShellLink, 0x00021401L, 0, 0);
229
230/*
231 * shell32 Interface ids
232 */
233DEFINE_SHLGUID(IID_IContextMenu, 0x000214E4L, 0, 0);
234DEFINE_SHLGUID(IID_IShellFolder, 0x000214E6L, 0, 0);
235DEFINE_SHLGUID(IID_IShellExtInit, 0x000214E8L, 0, 0);
236DEFINE_SHLGUID(IID_IShellPropSheetExt, 0x000214E9L, 0, 0);
237DEFINE_SHLGUID(IID_IExtractIcon, 0x000214EBL, 0, 0);
238DEFINE_SHLGUID(IID_IShellLink, 0x000214EEL, 0, 0);
239DEFINE_SHLGUID(IID_IShellCopyHook, 0x000214EFL, 0, 0);
240DEFINE_SHLGUID(IID_IFileViewer, 0x000214F0L, 0, 0);
241DEFINE_SHLGUID(IID_IEnumIDList, 0x000214F2L, 0, 0);
242DEFINE_SHLGUID(IID_IFileViewerSite, 0x000214F3L, 0, 0);
243
244#define STRRET_WSTR 0x0000
245#define STRRET_OFFSET 0x0001
246#define STRRET_CSTR 0x0002
247
248typedef struct _STRRET
249{
250 UINT32 uType; /* STRRET_xxx */
251 union
252 {
253 LPWSTR pOleStr; /* OLESTR that will be freed */
254 UINT32 uOffset; /* Offset into SHITEMID (ANSI) */
255 char cStr[MAX_PATH]; /* Buffer to fill in */
256 } DUMMYUNIONNAME;
257} STRRET,*LPSTRRET;
258
259/*****************************************************************************
260 * IEnumIDList interface
261 */
262#define THIS LPENUMIDLIST this
263
264typedef struct IEnumIDList IEnumIDList,*LPENUMIDLIST;
265typedef struct IEnumIDList_VTable {
266 /* *** IUnknown methods *** */
267 STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE;
268 STDMETHOD_(ULONG,AddRef) (THIS) PURE;
269 STDMETHOD_(ULONG,Release) (THIS) PURE;
270
271 /* *** IEnumIDList methods *** */
272 STDMETHOD(Next) (THIS_ ULONG celt,
273 LPITEMIDLIST *rgelt,
274 ULONG *pceltFetched) PURE;
275 STDMETHOD(Skip) (THIS_ ULONG celt) PURE;
276 STDMETHOD(Reset) (THIS) PURE;
277 STDMETHOD(Clone) (THIS_ IEnumIDList **ppenum) PURE;
278} IEnumIDList_VTable,*LPENUMIDLIST_VTABLE;
279
280struct IEnumIDList {
281 LPENUMIDLIST_VTABLE lpvtbl;
282 DWORD ref;
283};
284#undef THIS
285/************************************************************************
286 * The IShellFolder interface ... the basic interface for a lot of stuff
287 */
288
289#define THIS LPSHELLFOLDER this
290
291/* IShellFolder::GetDisplayNameOf/SetNameOf uFlags */
292typedef enum
293{
294 SHGDN_NORMAL = 0, /* default (display purpose) */
295 SHGDN_INFOLDER = 1, /* displayed under a folder (relative)*/
296 SHGDN_FORPARSING = 0x8000 /* for ParseDisplayName or path */
297} SHGNO;
298
299/* IShellFolder::EnumObjects */
300typedef enum tagSHCONTF
301{
302 SHCONTF_FOLDERS = 32, /* for shell browser */
303 SHCONTF_NONFOLDERS = 64, /* for default view */
304 SHCONTF_INCLUDEHIDDEN = 128 /* for hidden/system objects */
305} SHCONTF;
306
307/* from oleidl.h */
308#define DROPEFFECT_NONE 0
309#define DROPEFFECT_COPY 1
310#define DROPEFFECT_MOVE 2
311#define DROPEFFECT_LINK 4
312#define DROPEFFECT_SCROLL 0x80000000
313
314/* IShellFolder::GetAttributesOf flags */
315#define SFGAO_CANCOPY DROPEFFECT_COPY /* Objects can be copied */
316#define SFGAO_CANMOVE DROPEFFECT_MOVE /* Objects can be moved */
317#define SFGAO_CANLINK DROPEFFECT_LINK /* Objects can be linked */
318#define SFGAO_CANRENAME 0x00000010L /* Objects can be renamed */
319#define SFGAO_CANDELETE 0x00000020L /* Objects can be deleted */
320#define SFGAO_HASPROPSHEET 0x00000040L /* Objects have property sheets */
321#define SFGAO_DROPTARGET 0x00000100L /* Objects are drop target */
322#define SFGAO_CAPABILITYMASK 0x00000177L
323#define SFGAO_LINK 0x00010000L /* Shortcut (link) */
324#define SFGAO_SHARE 0x00020000L /* shared */
325#define SFGAO_READONLY 0x00040000L /* read-only */
326#define SFGAO_GHOSTED 0x00080000L /* ghosted icon */
327#define SFGAO_DISPLAYATTRMASK 0x000F0000L
328#define SFGAO_FILESYSANCESTOR 0x10000000L /* It contains file system folder */
329#define SFGAO_FOLDER 0x20000000L /* It's a folder. */
330#define SFGAO_FILESYSTEM 0x40000000L /* is a file system thing (file/folder/root) */
331#define SFGAO_HASSUBFOLDER 0x80000000L /* Expandable in the map pane */
332#define SFGAO_CONTENTSMASK 0x80000000L
333#define SFGAO_VALIDATE 0x01000000L /* invalidate cached information */
334#define SFGAO_REMOVABLE 0x02000000L /* is this removeable media? */
335
336
337typedef struct tagSHELLFOLDER *LPSHELLFOLDER,IShellFolder;
338typedef struct IShellFolder_VTable {
339 /* *** IUnknown methods *** */
340 STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE;
341 STDMETHOD_(ULONG,AddRef) (THIS) PURE;
342 STDMETHOD_(ULONG,Release) (THIS) PURE;
343
344 /* *** IShellFolder methods *** */
345 STDMETHOD(ParseDisplayName) (THIS_ HWND32 hwndOwner,
346 LPBC pbcReserved, LPOLESTR32 lpszDisplayName,
347 ULONG * pchEaten, LPITEMIDLIST * ppidl, ULONG *pdwAttributes) PURE;
348 STDMETHOD(EnumObjects) ( THIS_ HWND32 hwndOwner, DWORD grfFlags, LPENUMIDLIST
349* ppenumIDList) PURE;
350 STDMETHOD(BindToObject) (THIS_ LPCITEMIDLIST pidl, LPBC pbcReserved,
351 REFIID riid, LPVOID * ppvOut) PURE;
352 STDMETHOD(BindToStorage) (THIS_ LPCITEMIDLIST pidl, LPBC pbcReserved,
353 REFIID riid, LPVOID * ppvObj) PURE;
354 STDMETHOD(CompareIDs) (THIS_ LPARAM lParam, LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2) PURE;
355 STDMETHOD(CreateViewObject) (THIS_ HWND32 hwndOwner, REFIID riid, LPVOID * ppvOut) PURE;
356 STDMETHOD(GetAttributesOf) (THIS_ UINT32 cidl, LPCITEMIDLIST * apidl,
357 ULONG * rgfInOut) PURE;
358 STDMETHOD(GetUIObjectOf) (THIS_ HWND32 hwndOwner, UINT32 cidl, LPCITEMIDLIST
359* apidl,
360 REFIID riid, UINT32 * prgfInOut, LPVOID * ppvOut) PURE;
361 STDMETHOD(GetDisplayNameOf) (THIS_ LPCITEMIDLIST pidl, DWORD uFlags, LPSTRRET lpName) PURE;
362 STDMETHOD(SetNameOf) (THIS_ HWND32 hwndOwner, LPCITEMIDLIST pidl,
363 LPCOLESTR32 lpszName, DWORD uFlags,
364 LPITEMIDLIST * ppidlOut) PURE;
365} *LPSHELLFOLDER_VTABLE,IShellFolder_VTable;
366
367struct tagSHELLFOLDER {
368 LPSHELLFOLDER_VTABLE lpvtbl;
369 DWORD ref;
370};
371
372#undef THIS
373
374/****************************************************************************
375 * IShellLink interface
376 */
377
378#define THIS LPSHELLLINK this
379/* IShellLink::Resolve fFlags */
380typedef enum {
381 SLR_NO_UI = 0x0001,
382 SLR_ANY_MATCH = 0x0002,
383 SLR_UPDATE = 0x0004
384} SLR_FLAGS;
385
386/* IShellLink::GetPath fFlags */
387typedef enum {
388 SLGP_SHORTPATH = 0x0001,
389 SLGP_UNCPRIORITY = 0x0002
390} SLGP_FLAGS;
391
392
393
394typedef struct IShellLink IShellLink,*LPSHELLLINK;
395typedef struct IShellLink_VTable
396{
397 /* *** IUnknown methods *** */
398 STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE;
399 STDMETHOD_(ULONG,AddRef) (THIS) PURE;
400 STDMETHOD_(ULONG,Release) (THIS) PURE;
401
402 STDMETHOD(GetPath)(THIS_ LPSTR pszFile, INT32 cchMaxPath, WIN32_FIND_DATA32A *pfd, DWORD fFlags) PURE;
403
404 STDMETHOD(GetIDList)(THIS_ LPITEMIDLIST * ppidl) PURE;
405 STDMETHOD(SetIDList)(THIS_ LPCITEMIDLIST pidl) PURE;
406
407 STDMETHOD(GetDescription)(THIS_ LPSTR pszName, int cchMaxName) PURE;
408 STDMETHOD(SetDescription)(THIS_ LPCSTR pszName) PURE;
409
410 STDMETHOD(GetWorkingDirectory)(THIS_ LPSTR pszDir, int cchMaxPath) PURE;
411 STDMETHOD(SetWorkingDirectory)(THIS_ LPCSTR pszDir) PURE;
412
413 STDMETHOD(GetArguments)(THIS_ LPSTR pszArgs, int cchMaxPath) PURE;
414 STDMETHOD(SetArguments)(THIS_ LPCSTR pszArgs) PURE;
415
416 STDMETHOD(GetHotkey)(THIS_ WORD *pwHotkey) PURE;
417 STDMETHOD(SetHotkey)(THIS_ WORD wHotkey) PURE;
418
419 STDMETHOD(GetShowCmd)(THIS_ INT32 *piShowCmd) PURE;
420 STDMETHOD(SetShowCmd)(THIS_ INT32 iShowCmd) PURE;
421
422 STDMETHOD(GetIconLocation)(THIS_ LPSTR pszIconPath, INT32 cchIconPath, INT32 *piIcon) PURE;
423 STDMETHOD(SetIconLocation)(THIS_ LPCSTR pszIconPath, INT32 iIcon) PURE;
424
425 STDMETHOD(SetRelativePath)(THIS_ LPCSTR pszPathRel, DWORD dwReserved) PURE;
426
427 STDMETHOD(Resolve)(THIS_ HWND32 hwnd, DWORD fFlags) PURE;
428
429 STDMETHOD(SetPath)(THIS_ LPCSTR pszFile) PURE;
430} IShellLink_VTable,*LPSHELLLINK_VTABLE;
431
432struct IShellLink {
433 LPSHELLLINK_VTABLE lpvtbl;
434 DWORD ref;
435};
436
437#undef THIS
438
439#ifdef __WINE__
440extern LPSHELLFOLDER IShellFolder_Constructor();
441extern LPSHELLLINK IShellLink_Constructor();
442extern LPENUMIDLIST IEnumIDList_Constructor();
443#endif
444
445DWORD WINAPI SHELL32_DllGetClassObject(LPCLSID,REFIID,LPVOID*);
446
447#undef PURE
448#undef FAR
449#undef THIS
450#undef THIS_
451#undef STDMETHOD
452#undef STDMETHOD_
453#endif /*_WINE_SHLOBJ_H*/
454
455#endif
Note: See TracBrowser for help on using the repository browser.