| /* | |
| * Copyright 1999, 2000 Juergen Schmied | |
| * | |
| * This library is free software; you can redistribute it and/or | |
| * modify it under the terms of the GNU Lesser General Public | |
| * License as published by the Free Software Foundation; either | |
| * version 2.1 of the License, or (at your option) any later version. | |
| * | |
| * This library is distributed in the hope that it will be useful, | |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| * Lesser General Public License for more details. | |
| * | |
| * You should have received a copy of the GNU Lesser General Public | |
| * License along with this library; if not, write to the Free Software | |
| * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
| */ | |
| #ifndef __WINE_UNDOCSHELL_H | |
| #define __WINE_UNDOCSHELL_H | |
| #include <stdarg.h> | |
| #include "windef.h" | |
| #include "winbase.h" | |
| #include "winuser.h" | |
| #include "commctrl.h" | |
| #include "shlobj.h" | |
| #ifdef __cplusplus | |
| extern "C" { | |
| #endif /* defined(__cplusplus) */ | |
| /**************************************************************************** | |
| * IDList Functions | |
| */ | |
| BOOL WINAPI ILGetDisplayName( | |
| LPCITEMIDLIST pidl, | |
| LPVOID path); | |
| /* type parameter for ILGetDisplayNameEx() */ | |
| #define ILGDN_FORPARSING 0 | |
| #define ILGDN_NORMAL 1 | |
| #define ILGDN_INFOLDER 2 | |
| BOOL WINAPI ILGetDisplayNameEx( | |
| LPSHELLFOLDER psf, | |
| LPCITEMIDLIST pidl, | |
| LPVOID path, | |
| DWORD type); | |
| LPITEMIDLIST WINAPI ILGlobalClone(LPCITEMIDLIST pidl); | |
| void WINAPI ILGlobalFree(LPITEMIDLIST pidl); | |
| LPITEMIDLIST WINAPI SHSimpleIDListFromPathA (LPCSTR lpszPath); | |
| LPITEMIDLIST WINAPI SHSimpleIDListFromPathW (LPCWSTR lpszPath); | |
| HRESULT WINAPI SHILCreateFromPathA ( | |
| LPCSTR path, | |
| LPITEMIDLIST * ppidl, | |
| DWORD *attributes); | |
| HRESULT WINAPI SHILCreateFromPathW ( | |
| LPCWSTR path, | |
| LPITEMIDLIST * ppidl, | |
| DWORD *attributes); | |
| LPITEMIDLIST WINAPI ILCreateFromPathA(LPCSTR path); | |
| LPITEMIDLIST WINAPI ILCreateFromPathW(LPCWSTR path); | |
| /* | |
| string functions | |
| */ | |
| BOOL WINAPI StrRetToStrNA(LPSTR,DWORD,LPSTRRET,const ITEMIDLIST*); | |
| BOOL WINAPI StrRetToStrNW(LPWSTR,DWORD,LPSTRRET,const ITEMIDLIST*); | |
| /**************************************************************************** | |
| * SHChangeNotifyRegister API | |
| */ | |
| #define SHCNRF_InterruptLevel 0x0001 | |
| #define SHCNRF_ShellLevel 0x0002 | |
| #define SHCNRF_RecursiveInterrupt 0x1000 /* Must be combined with SHCNRF_InterruptLevel */ | |
| #define SHCNRF_NewDelivery 0x8000 /* Messages use shared memory */ | |
| /**************************************************************************** | |
| * Shell Common Dialogs | |
| */ | |
| BOOL WINAPI PickIconDlg( | |
| HWND hwndOwner, | |
| LPSTR lpstrFile, | |
| DWORD nMaxFile, | |
| LPDWORD lpdwIconIndex); | |
| /* RunFileDlg flags */ | |
| #define RFF_NOBROWSE 0x01 | |
| #define RFF_NODEFAULT 0x02 | |
| #define RFF_CALCDIRECTORY 0x04 | |
| #define RFF_NOLABEL 0x08 | |
| #define RFF_NOSEPARATEMEM 0x20 /* NT only */ | |
| /* RunFileFlg notification structure */ | |
| typedef struct | |
| { | |
| NMHDR hdr; | |
| LPCSTR lpFile; | |
| LPCSTR lpDirectory; | |
| int nShow; | |
| } NM_RUNFILEDLG, * LPNM_RUNFILEDLG; | |
| /* RunFileDlg notification return values */ | |
| #define RF_OK 0x00 | |
| #define RF_CANCEL 0x01 | |
| #define RF_RETRY 0x02 | |
| void WINAPI RunFileDlg( | |
| HWND hwndOwner, | |
| HICON hIcon, | |
| LPCSTR lpstrDirectory, | |
| LPCSTR lpstrTitle, | |
| LPCSTR lpstrDescription, | |
| UINT uFlags); | |
| void WINAPI ExitWindowsDialog(HWND hwndOwner); | |
| BOOL WINAPI GetFileNameFromBrowse( | |
| HWND hwndOwner, | |
| LPSTR lpstrFile, | |
| DWORD nMaxFile, | |
| LPCSTR lpstrInitialDir, | |
| LPCSTR lpstrDefExt, | |
| LPCSTR lpstrFilter, | |
| LPCSTR lpstrTitle); | |
| BOOL WINAPI SHFindComputer( | |
| LPCITEMIDLIST pidlRoot, | |
| LPCITEMIDLIST pidlSavedSearch); | |
| void WINAPI SHHandleDiskFull(HWND hwndOwner, | |
| UINT uDrive); | |
| int WINAPI SHOutOfMemoryMessageBox( | |
| HWND hwndOwner, | |
| LPCSTR lpCaption, | |
| UINT uType); | |
| DWORD WINAPI SHNetConnectionDialog( | |
| HWND hwndOwner, | |
| LPCSTR lpstrRemoteName, | |
| DWORD dwType); | |
| /**************************************************************************** | |
| * Memory Routines | |
| */ | |
| /* The Platform SDK's shlobj.h header defines similar functions with a | |
| * leading underscore. However those are unusable because of the leading | |
| * underscore, because they have an incorrect calling convention, and | |
| * because these functions are not exported by name anyway. | |
| */ | |
| HANDLE WINAPI SHAllocShared( | |
| LPVOID pv, | |
| ULONG cb, | |
| DWORD pid); | |
| BOOL WINAPI SHFreeShared( | |
| HANDLE hMem, | |
| DWORD pid); | |
| LPVOID WINAPI SHLockShared( | |
| HANDLE hMem, | |
| DWORD pid); | |
| BOOL WINAPI SHUnlockShared(LPVOID pv); | |
| /**************************************************************************** | |
| * Cabinet Window Messages | |
| */ | |
| #define CWM_SETPATH (WM_USER + 2) | |
| #define CWM_WANTIDLE (WM_USER + 3) | |
| #define CWM_GETSETCURRENTINFO (WM_USER + 4) | |
| #define CWM_SELECTITEM (WM_USER + 5) | |
| #define CWM_SELECTITEMSTR (WM_USER + 6) | |
| #define CWM_GETISHELLBROWSER (WM_USER + 7) | |
| #define CWM_TESTPATH (WM_USER + 9) | |
| #define CWM_STATECHANGE (WM_USER + 10) | |
| #define CWM_GETPATH (WM_USER + 12) | |
| /* CWM_TESTPATH types */ | |
| #define CWTP_ISEQUAL 0 | |
| #define CWTP_ISCHILD 1 | |
| /* CWM_TESTPATH structure */ | |
| typedef struct | |
| { | |
| DWORD dwType; | |
| ITEMIDLIST idl; | |
| } CWTESTPATHSTRUCT,* LPCWTESTPATHSTRUCT; | |
| /**************************************************************************** | |
| * System Imagelist Routines | |
| */ | |
| int WINAPI Shell_GetCachedImageIndex( | |
| LPCSTR lpszFileName, | |
| UINT nIconIndex, | |
| BOOL bSimulateDoc); | |
| BOOL WINAPI Shell_GetImageLists( | |
| HIMAGELIST *lphimlLarge, | |
| HIMAGELIST *lphimlSmall); | |
| HICON WINAPI SHGetFileIcon( | |
| DWORD dwReserved, | |
| LPCSTR lpszPath, | |
| DWORD dwFileAttributes, | |
| UINT uFlags); | |
| BOOL WINAPI FileIconInit(BOOL bFullInit); | |
| /**************************************************************************** | |
| * File Menu Routines | |
| */ | |
| /* FileMenu_Create nSelHeight constants */ | |
| #define FM_DEFAULT_SELHEIGHT -1 | |
| #define FM_FULL_SELHEIGHT 0 | |
| /* FileMenu_Create flags */ | |
| #define FMF_SMALL_ICONS 0x00 | |
| #define FMF_LARGE_ICONS 0x08 | |
| #define FMF_NO_COLUMN_BREAK 0x10 | |
| HMENU WINAPI FileMenu_Create( | |
| COLORREF crBorderColor, | |
| int nBorderWidth, | |
| HBITMAP hBorderBmp, | |
| int nSelHeight, | |
| UINT uFlags); | |
| void WINAPI FileMenu_Destroy(HMENU hMenu); | |
| /* FileMenu_AppendItem constants */ | |
| #define FM_SEPARATOR (LPCSTR)1 | |
| #define FM_BLANK_ICON -1 | |
| #define FM_DEFAULT_HEIGHT 0 | |
| BOOL WINAPI FileMenu_AppendItem( | |
| HMENU hMenu, | |
| LPCSTR lpszText, | |
| UINT uID, | |
| int iIcon, | |
| HMENU hMenuPopup, | |
| int nItemHeight); | |
| /* FileMenu_InsertUsingPidl flags */ | |
| #define FMF_NO_EMPTY_ITEM 0x01 | |
| #define FMF_NO_PROGRAM_GROUPS 0x04 | |
| /* FileMenu_InsertUsingPidl callback function */ | |
| typedef void (CALLBACK *LPFNFMCALLBACK)(LPCITEMIDLIST pidlFolder, LPCITEMIDLIST pidlFile); | |
| int WINAPI FileMenu_InsertUsingPidl( | |
| HMENU hMenu, | |
| UINT uID, | |
| LPCITEMIDLIST pidl, | |
| UINT uFlags, | |
| UINT uEnumFlags, | |
| LPFNFMCALLBACK lpfnCallback); | |
| int WINAPI FileMenu_ReplaceUsingPidl( | |
| HMENU hMenu, | |
| UINT uID, | |
| LPCITEMIDLIST pidl, | |
| UINT uEnumFlags, | |
| LPFNFMCALLBACK lpfnCallback); | |
| void WINAPI FileMenu_Invalidate(HMENU hMenu); | |
| HMENU WINAPI FileMenu_FindSubMenuByPidl( | |
| HMENU hMenu, | |
| LPCITEMIDLIST pidl); | |
| BOOL WINAPI FileMenu_TrackPopupMenuEx( | |
| HMENU hMenu, | |
| UINT uFlags, | |
| int x, | |
| int y, | |
| HWND hWnd, | |
| LPTPMPARAMS lptpm); | |
| BOOL WINAPI FileMenu_GetLastSelectedItemPidls( | |
| UINT uReserved, | |
| LPCITEMIDLIST *ppidlFolder, | |
| LPCITEMIDLIST *ppidlItem); | |
| LRESULT WINAPI FileMenu_MeasureItem( | |
| HWND hWnd, | |
| LPMEASUREITEMSTRUCT lpmis); | |
| LRESULT WINAPI FileMenu_DrawItem( | |
| HWND hWnd, | |
| LPDRAWITEMSTRUCT lpdis); | |
| BOOL WINAPI FileMenu_InitMenuPopup(HMENU hMenu); | |
| void WINAPI FileMenu_AbortInitMenu(void); | |
| LRESULT WINAPI FileMenu_HandleMenuChar( | |
| HMENU hMenu, | |
| WPARAM wParam); | |
| BOOL WINAPI FileMenu_DeleteAllItems(HMENU hMenu); | |
| BOOL WINAPI FileMenu_DeleteItemByCmd( | |
| HMENU hMenu, | |
| UINT uID); | |
| BOOL WINAPI FileMenu_DeleteItemByIndex( | |
| HMENU hMenu, | |
| UINT uPos); | |
| BOOL WINAPI FileMenu_DeleteMenuItemByFirstID( | |
| HMENU hMenu, | |
| UINT uID); | |
| BOOL WINAPI FileMenu_DeleteSeparator(HMENU hMenu); | |
| BOOL WINAPI FileMenu_EnableItemByCmd( | |
| HMENU hMenu, | |
| UINT uID, | |
| BOOL bEnable); | |
| DWORD WINAPI FileMenu_GetItemExtent( | |
| HMENU hMenu, | |
| UINT uPos); | |
| int WINAPI FileMenu_AppendFilesForPidl( | |
| HMENU hMenu, | |
| LPCITEMIDLIST pidl, | |
| BOOL bAddSeparator); | |
| int WINAPI FileMenu_AddFilesForPidl( | |
| HMENU hMenu, | |
| UINT uReserved, | |
| UINT uID, | |
| LPCITEMIDLIST pidl, | |
| UINT uFlags, | |
| UINT uEnumFlags, | |
| LPFNFMCALLBACK lpfnCallback); | |
| /**************************************************************************** | |
| * Drag And Drop Routines | |
| */ | |
| HRESULT WINAPI SHRegisterDragDrop( | |
| HWND hWnd, | |
| LPDROPTARGET lpDropTarget); | |
| HRESULT WINAPI SHRevokeDragDrop(HWND hWnd); | |
| BOOL WINAPI DAD_DragEnter(HWND hWnd); | |
| BOOL WINAPI DAD_SetDragImageFromListView( | |
| HWND hWnd, | |
| POINT pt); | |
| BOOL WINAPI DAD_ShowDragImage(BOOL bShow); | |
| HRESULT WINAPI CIDLData_CreateFromIDArray( | |
| LPCITEMIDLIST pidlFolder, | |
| DWORD cpidlFiles, | |
| LPCITEMIDLIST *lppidlFiles, | |
| LPDATAOBJECT *ppdataObject); | |
| /**************************************************************************** | |
| * Path Manipulation Routines | |
| */ | |
| BOOL WINAPI PathAppendAW(LPVOID lpszPath1, LPCVOID lpszPath2); | |
| LPVOID WINAPI PathCombineAW(LPVOID szDest, LPCVOID lpszDir, LPCVOID lpszFile); | |
| LPVOID WINAPI PathAddBackslashAW(LPVOID path); | |
| LPVOID WINAPI PathBuildRootAW(LPVOID lpszPath, int drive); | |
| LPVOID WINAPI PathFindExtensionAW(LPCVOID path); | |
| LPVOID WINAPI PathFindFileNameAW(LPCVOID path); | |
| LPVOID WINAPI PathGetExtensionAW(LPCVOID lpszPath, DWORD void1, DWORD void2); | |
| LPVOID WINAPI PathGetArgsAW(LPVOID lpszPath); | |
| BOOL WINAPI PathRemoveFileSpecAW(LPVOID lpszPath); | |
| void WINAPI PathRemoveBlanksAW(LPVOID lpszPath); | |
| VOID WINAPI PathQuoteSpacesAW(LPVOID path); | |
| void WINAPI PathUnquoteSpacesAW(LPVOID lpszPath); | |
| BOOL WINAPI PathIsUNCAW(LPCVOID lpszPath); | |
| BOOL WINAPI PathIsRelativeAW(LPCVOID lpszPath); | |
| BOOL WINAPI PathIsRootAW(LPCVOID x); | |
| BOOL WINAPI PathIsExeAW(LPCVOID lpszPath); | |
| BOOL WINAPI PathIsDirectoryAW(LPCVOID lpszPath); | |
| BOOL WINAPI PathFileExistsAW(LPCVOID lpszPath); | |
| BOOL WINAPI PathMatchSpecAW(LPVOID lpszPath, LPVOID lpszSpec); | |
| BOOL WINAPI PathMakeUniqueNameAW( | |
| LPVOID lpszBuffer, | |
| DWORD dwBuffSize, | |
| LPCVOID lpszShortName, | |
| LPCVOID lpszLongName, | |
| LPCVOID lpszPathName); | |
| BOOL WINAPI PathYetAnotherMakeUniqueName( | |
| LPWSTR lpszBuffer, | |
| LPCWSTR lpszPathName, | |
| LPCWSTR lpszShortName, | |
| LPCWSTR lpszLongName); | |
| BOOL WINAPI PathQualifyA(LPCSTR path); | |
| BOOL WINAPI PathQualifyW(LPCWSTR path); | |
| #define PathQualify WINELIB_NAME_AW(PathQualify) | |
| BOOL WINAPI PathQualifyAW(LPCVOID path); | |
| /* PathResolve flags */ | |
| #define PRF_CHECKEXISTANCE 0x01 | |
| #define PRF_EXECUTABLE 0x02 | |
| #define PRF_QUALIFYONPATH 0x04 | |
| #define PRF_WINDOWS31 0x08 | |
| BOOL WINAPI PathResolveAW(LPVOID lpszPath, LPCVOID *alpszPaths, DWORD dwFlags); | |
| VOID WINAPI PathSetDlgItemPathAW(HWND hDlg, int nIDDlgItem, LPCVOID lpszPath); | |
| /* PathProcessCommand flags */ | |
| #define PPCF_QUOTEPATH 0x01 /* implies PPCF_INCLUDEARGS */ | |
| #define PPCF_INCLUDEARGS 0x02 | |
| #define PPCF_NODIRECTORIES 0x10 | |
| #define PPCF_DONTRESOLVE 0x20 | |
| #define PPCF_PATHISRELATIVE 0x40 | |
| HRESULT WINAPI PathProcessCommandAW(LPCVOID lpszPath, LPVOID lpszBuff, | |
| DWORD dwBuffSize, DWORD dwFlags); | |
| void WINAPI PathStripPathAW(LPVOID lpszPath); | |
| BOOL WINAPI PathStripToRootAW(LPVOID lpszPath); | |
| void WINAPI PathRemoveArgsAW(LPVOID lpszPath); | |
| void WINAPI PathRemoveExtensionAW(LPVOID lpszPath); | |
| int WINAPI PathParseIconLocationAW(LPVOID lpszPath); | |
| BOOL WINAPI PathIsSameRootAW(LPCVOID lpszPath1, LPCVOID lpszPath2); | |
| BOOL WINAPI PathFindOnPathAW(LPVOID sFile, LPCVOID sOtherDirs); | |
| /**************************************************************************** | |
| * Shell Namespace Routines | |
| */ | |
| /* Generic structure used by several messages */ | |
| typedef struct | |
| { | |
| DWORD dwReserved; | |
| DWORD dwReserved2; | |
| LPCITEMIDLIST pidl; | |
| LPDWORD lpdwUser; | |
| } SFVCBINFO, * LPSFVCBINFO; | |
| typedef const SFVCBINFO * LPCSFVCBINFO; | |
| /* SFVCB_SELECTIONCHANGED structure */ | |
| typedef struct | |
| { | |
| UINT uOldState; | |
| UINT uNewState; | |
| LPCITEMIDLIST pidl; | |
| LPDWORD lpdwUser; | |
| } SFVSELECTSTATE, * LPSFVSELECTSTATE; | |
| typedef const SFVSELECTSTATE * LPCSFVSELECTSTATE; | |
| /* SFVCB_COPYHOOKCALLBACK structure */ | |
| typedef struct | |
| { | |
| HWND hwnd; | |
| UINT wFunc; | |
| UINT wFlags; | |
| LPCSTR pszSrcFile; | |
| DWORD dwSrcAttribs; | |
| LPCSTR pszDestFile; | |
| DWORD dwDestAttribs; | |
| } SFVCOPYHOOKINFO, * LPSFVCOPYHOOKINFO; | |
| typedef const SFVCOPYHOOKINFO * LPCSFVCOPYHOOKINFO; | |
| /* SFVCB_GETDETAILSOF structure */ | |
| typedef struct | |
| { | |
| LPCITEMIDLIST pidl; | |
| int fmt; | |
| int cx; | |
| STRRET lpText; | |
| } SFVCOLUMNINFO, * LPSFVCOLUMNINFO; | |
| /**************************************************************************** | |
| * Misc Stuff | |
| */ | |
| /* SHWaitForFileToOpen flags */ | |
| #define SHWFF_ADD 0x01 | |
| #define SHWFF_REMOVE 0x02 | |
| #define SHWFF_WAIT 0x04 | |
| BOOL WINAPI SHWaitForFileToOpen( | |
| LPCITEMIDLIST pidl, | |
| DWORD dwFlags, | |
| DWORD dwTimeout); | |
| WORD WINAPI ArrangeWindows( | |
| HWND hwndParent, | |
| DWORD dwReserved, | |
| LPCRECT lpRect, | |
| WORD cKids, | |
| CONST HWND * lpKids); | |
| /* RegisterShellHook types */ | |
| #define RSH_DEREGISTER 0 | |
| #define RSH_REGISTER 1 | |
| #define RSH_REGISTER_PROGMAN 2 | |
| #define RSH_REGISTER_TASKMAN 3 | |
| BOOL WINAPI RegisterShellHook( | |
| HWND hWnd, | |
| DWORD dwType); | |
| /* SHCreateDefClassObject callback function */ | |
| typedef HRESULT (CALLBACK *LPFNCDCOCALLBACK)( | |
| LPUNKNOWN pUnkOuter, | |
| REFIID riidObject, | |
| LPVOID *ppvObject); | |
| HRESULT WINAPI SHCreateDefClassObject( | |
| REFIID riidFactory, | |
| LPVOID *ppvFactory, | |
| LPFNCDCOCALLBACK lpfnCallback, | |
| LPDWORD lpdwUsage, | |
| REFIID riidObject); | |
| void WINAPI SHFreeUnusedLibraries(void); | |
| /* SHCreateLinks flags */ | |
| #define SHCLF_PREFIXNAME 0x01 | |
| #define SHCLF_CREATEONDESKTOP 0x02 | |
| HRESULT WINAPI SHCreateLinks( | |
| HWND hWnd, | |
| LPCSTR lpszDir, | |
| LPDATAOBJECT lpDataObject, | |
| UINT uFlags, | |
| LPITEMIDLIST *lppidlLinks); | |
| DWORD WINAPI CheckEscapesA(LPSTR string, DWORD len); | |
| DWORD WINAPI CheckEscapesW(LPWSTR string, DWORD len); | |
| /* policy functions */ | |
| BOOL WINAPI SHInitRestricted(LPCVOID unused, LPCVOID inpRegKey); | |
| #ifdef __cplusplus | |
| } /* extern "C" */ | |
| #endif /* defined(__cplusplus) */ | |
| #endif /* __WINE_UNDOCSHELL_H */ |