/* * Shell Library definitions */ #ifndef __WINE_SHELL_H #define __WINE_SHELL_H #include "windows.h" #include "winreg.h" #include "imagelist.h" #ifndef MAX_PATH #define MAX_PATH 260 #endif /**************************************************************************** * shell 16 */ extern void SHELL_LoadRegistry(void); extern void SHELL_SaveRegistry(void); extern void SHELL_Init(void); /* global functions used from shell32 */ extern HINSTANCE32 SHELL_FindExecutable(LPCSTR,LPCSTR ,LPSTR); extern HGLOBAL16 WINAPI InternalExtractIcon(HINSTANCE16,LPCSTR,UINT16,WORD); /**************************************************************************** * shell 32 */ /**************************************************************************** * common return codes */ #define SHELL_ERROR_SUCCESS 0L #define SHELL_ERROR_BADDB 1L #define SHELL_ERROR_BADKEY 2L #define SHELL_ERROR_CANTOPEN 3L #define SHELL_ERROR_CANTREAD 4L #define SHELL_ERROR_CANTWRITE 5L #define SHELL_ERROR_OUTOFMEMORY 6L #define SHELL_ERROR_INVALID_PARAMETER 7L #define SHELL_ERROR_ACCESS_DENIED 8L /**************************************************************************** * common shell file structures */ #define FO_MOVE 0x0001 #define FO_COPY 0x0002 #define FO_DELETE 0x0003 #define FO_RENAME 0x0004 #define FOF_MULTIDESTFILES 0x0001 #define FOF_CONFIRMMOUSE 0x0002 #define FOF_SILENT 0x0004 #define FOF_RENAMEONCOLLISION 0x0008 #define FOF_NOCONFIRMATION 0x0010 #define FOF_WANTMAPPINGHANDLE 0x0020 #define FOF_ALLOWUNDO 0x0040 #define FOF_FILESONLY 0x0080 #define FOF_SIMPLEPROGRESS 0x0100 #define FOF_NOCONFIRMMKDIR 0x0200 #define FOF_NOERRORUI 0x0400 typedef WORD FILEOP_FLAGS; #define PO_DELETE 0x0013 #define PO_RENAME 0x0014 #define PO_PORTCHANGE 0x0020 typedef WORD PRINTEROP_FLAGS; /****************************** * DROPFILESTRUCT */ typedef struct { /* structure for dropped files */ WORD wSize; POINT16 ptMousePos; BOOL16 fInNonClientArea; /* memory block with filenames follows */ } DROPFILESTRUCT, *LPDROPFILESTRUCT; /**************************************************************************** * NOTIFYICONDATA */ typedef struct _NOTIFYICONDATA { DWORD cbSize; HWND32 hWnd; UINT32 uID; UINT32 uFlags; UINT32 uCallbackMessage; HICON32 hIcon; CHAR szTip[64]; } NOTIFYICONDATA, *PNOTIFYICONDATA; /**************************************************************************** * SHITEMID, ITEMIDLIST, PIDL API */ #pragma pack(1) typedef struct { WORD cb; /* nr of bytes in this item */ BYTE abID[1];/* first byte in this item */ } SHITEMID,*LPSHITEMID; typedef struct { SHITEMID mkid; /* first itemid in list */ } ITEMIDLIST,*LPITEMIDLIST,*LPCITEMIDLIST; #pragma pack(4) LPITEMIDLIST WINAPI ILClone (LPCITEMIDLIST pidl); LPITEMIDLIST WINAPI ILGetNext(LPITEMIDLIST pidl); LPITEMIDLIST WINAPI ILCombine(LPCITEMIDLIST iil1,LPCITEMIDLIST iil2); LPITEMIDLIST WINAPI ILFindLastID(LPITEMIDLIST pidl); DWORD WINAPI ILGetSize(LPITEMIDLIST pidl); DWORD WINAPI SHGetPathFromIDList32A (LPCITEMIDLIST pidl,LPSTR pszPath); DWORD WINAPI SHGetPathFromIDList32W (LPCITEMIDLIST pidl,LPWSTR pszPath); #define SHGetPathFromIDList WINELIB_NAME_AW(SHGetPathFromIDList) /**************************************************************************** * SHFILEINFO API */ typedef struct tagSHFILEINFO32A { HICON32 hIcon; /* icon */ int iIcon; /* icon index */ DWORD dwAttributes; /* SFGAO_ flags */ CHAR szDisplayName[MAX_PATH];/* display name (or path) */ CHAR szTypeName[80]; /* type name */ } SHFILEINFO32A; typedef struct tagSHFILEINFO32W { HICON32 hIcon; /* icon */ int iIcon; /* icon index */ DWORD dwAttributes; /* SFGAO_ flags */ WCHAR szDisplayName[MAX_PATH];/* display name (or path) */ WCHAR szTypeName[80]; /* type name */ } SHFILEINFO32W; DECL_WINELIB_TYPE_AW(SHFILEINFO) DWORD WINAPI SHGetFileInfo32A(LPCSTR,DWORD,SHFILEINFO32A*,UINT32,UINT32); DWORD WINAPI SHGetFileInfo32W(LPCWSTR,DWORD,SHFILEINFO32W*,UINT32,UINT32); #define SHGetFileInfo WINELIB_NAME_AW(SHGetFileInfo) /**************************************************************************** * SHFILEOPSTRUCT API */ typedef struct _SHFILEOPSTRUCTA { HWND32 hwnd; UINT32 wFunc; LPCSTR pFrom; LPCSTR pTo; FILEOP_FLAGS fFlags; BOOL32 fAnyOperationsAborted; LPVOID hNameMappings; LPCSTR lpszProgressTitle; } SHFILEOPSTRUCT32A, *LPSHFILEOPSTRUCT32A; typedef struct _SHFILEOPSTRUCTW { HWND32 hwnd; UINT32 wFunc; LPCWSTR pFrom; LPCWSTR pTo; FILEOP_FLAGS fFlags; BOOL32 fAnyOperationsAborted; LPVOID hNameMappings; LPCWSTR lpszProgressTitle; } SHFILEOPSTRUCT32W, *LPSHFILEOPSTRUCT32W; #define SHFILEOPSTRUCT WINELIB_NAME_AW(SHFILEOPSTRUCT) #define LPSHFILEOPSTRUCT WINELIB_NAME_AW(LPSHFILEOPSTRUCT) DWORD WINAPI SHFileOperation32A (LPSHFILEOPSTRUCT32A lpFileOp); DWORD WINAPI SHFileOperation32W (LPSHFILEOPSTRUCT32W lpFileOp); #define SHFileOperation WINELIB_NAME_AW(SHFileOperation) DWORD WINAPI SHFileOperation32(DWORD x); /**************************************************************************** * APPBARDATA */ typedef struct _AppBarData { DWORD cbSize; HWND32 hWnd; UINT32 uCallbackMessage; UINT32 uEdge; RECT32 rc; LPARAM lParam; } APPBARDATA, *PAPPBARDATA; #define SHGFI_ICON 0x000000100 /* get icon */ #define SHGFI_DISPLAYNAME 0x000000200 /* get display name */ #define SHGFI_TYPENAME 0x000000400 /* get type name */ #define SHGFI_ATTRIBUTES 0x000000800 /* get attributes */ #define SHGFI_ICONLOCATION 0x000001000 /* get icon location */ #define SHGFI_EXETYPE 0x000002000 /* return exe type */ #define SHGFI_SYSICONINDEX 0x000004000 /* get system icon index */ #define SHGFI_LINKOVERLAY 0x000008000 /* put a link overlay on icon */ #define SHGFI_SELECTED 0x000010000 /* show icon in selected state */ #define SHGFI_LARGEICON 0x000000000 /* get large icon */ #define SHGFI_SMALLICON 0x000000001 /* get small icon */ #define SHGFI_OPENICON 0x000000002 /* get open icon */ #define SHGFI_SHELLICONSIZE 0x000000004 /* get shell size icon */ #define SHGFI_PIDL 0x000000008 /* pszPath is a pidl */ #define SHGFI_USEFILEATTRIBUTES 0x000000010 /* use passed dwFileAttribute */ /**************************************************************************** * SHChangeNotifyRegister API */ typedef struct { LPITEMIDLIST pidl; DWORD unknown; } IDSTRUCT; DWORD WINAPI SHChangeNotifyRegister(HWND32 hwnd,LONG events1,LONG events2,DWORD msg,int count,IDSTRUCT *idlist); DWORD WINAPI SHChangeNotifyDeregister(LONG x1,LONG x2); /**************************************************************************** * SHAddToRecentDocs API */ #define SHARD_PIDL 0x00000001L #define SHARD_PATH 0x00000002L DWORD WINAPI SHAddToRecentDocs(UINT32 uFlags, LPCVOID pv); /**************************************************************************** * SHGetSpecialFolderLocation API */ HRESULT WINAPI SHGetSpecialFolderLocation(HWND32, INT32, LPITEMIDLIST *); /**************************************************************************** * string and path functions */ LPSTR WINAPI PathAddBackslash(LPSTR path); LPSTR WINAPI PathCombine(LPSTR szDest, LPCSTR lpszDir, LPCSTR lpszFile); LPSTR WINAPI PathRemoveBlanks(LPSTR str); LPSTR WINAPI PathFindFilename(LPSTR fn); /**************************************************************************** * other functions */ LPVOID WINAPI SHAlloc(DWORD len); DWORD WINAPI SHFree(LPVOID x); #define SE_ERR_SHARE 26 #define SE_ERR_ASSOCINCOMPLETE 27 #define SE_ERR_DDETIMEOUT 28 #define SE_ERR_DDEFAIL 29 #define SE_ERR_DDEBUSY 30 #define SE_ERR_NOASSOC 31 #define CSIDL_DESKTOP 0x0000 #define CSIDL_PROGRAMS 0x0002 #define CSIDL_CONTROLS 0x0003 #define CSIDL_PRINTERS 0x0004 #define CSIDL_PERSONAL 0x0005 #define CSIDL_FAVORITES 0x0006 #define CSIDL_STARTUP 0x0007 #define CSIDL_RECENT 0x0008 #define CSIDL_SENDTO 0x0009 #define CSIDL_BITBUCKET 0x000a #define CSIDL_STARTMENU 0x000b #define CSIDL_DESKTOPDIRECTORY 0x0010 #define CSIDL_DRIVES 0x0011 #define CSIDL_NETWORK 0x0012 #define CSIDL_NETHOOD 0x0013 #define CSIDL_FONTS 0x0014 #define CSIDL_TEMPLATES 0x0015 #endif /* __WINE_SHELL_H */