diff options
| author | marco <marco@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2009-12-13 00:03:26 +0000 |
|---|---|---|
| committer | marco <marco@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2009-12-13 00:03:26 +0000 |
| commit | 011ba65ff82ab9e04963c848d60fbeac411bf649 (patch) | |
| tree | d4725f7ba0781d26165c61702f7ae9c5955588ae /packages/winunits-base/src | |
| parent | 371424f38a68474a7bf7e811d9154121bc4d711e (diff) | |
| download | fpc-011ba65ff82ab9e04963c848d60fbeac411bf649.tar.gz | |
* IFileDialogs and friends. Needed for Vista like fileopendialogs
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@14431 3ad0048d-3df7-0310-abae-a5850022a9f2
Diffstat (limited to 'packages/winunits-base/src')
| -rw-r--r-- | packages/winunits-base/src/shlobj.pp | 128 |
1 files changed, 125 insertions, 3 deletions
diff --git a/packages/winunits-base/src/shlobj.pp b/packages/winunits-base/src/shlobj.pp index b007ce83f5..1c639a892b 100644 --- a/packages/winunits-base/src/shlobj.pp +++ b/packages/winunits-base/src/shlobj.pp @@ -838,11 +838,51 @@ Const SMSET_DONTOWN = $00000001; // The Menuband doesn't own the non-ref counted object SMINV_REFRESH = $00000001; SMINV_ID = $00000008; - + FDEOR_DEFAULT = 0; + FDEOR_ACCEPT = 1; + FDEOR_REFUSE = 2; + FDESVR_DEFAULT = 0; + FDESVR_ACCEPT = 1; + FDESVR_REFUSE = 2; + FDAP_BOTTOM = 0; + FDAP_TOP = 1; + FOS_OVERWRITEPROMPT = $2; + FOS_STRICTFILETYPES = $4; + FOS_NOCHANGEDIR = $8; + FOS_PICKFOLDERS = $20; + FOS_FORCEFILESYSTEM = $40; + FOS_ALLNONSTORAGEITEMS = $80; + FOS_NOVALIDATE = $100; + FOS_ALLOWMULTISELECT = $200; + FOS_PATHMUSTEXIST = $800; + FOS_FILEMUSTEXIST = $1000; + FOS_CREATEPROMPT = $2000; + FOS_SHAREAWARE = $4000; + FOS_NOREADONLYRETURN = $8000; + FOS_NOTESTFILECREATE = $10000; + FOS_HIDEMRUPLACES = $20000; + FOS_HIDEPINNEDPLACES = $40000; + FOS_NODEREFERENCELINKS = $100000; + FOS_DONTADDTORECENT = $2000000; + FOS_FORCESHOWHIDDEN = $10000000; + FOS_DEFAULTNOMINIMODE = $20000000; + FOS_FORCEPREVIEWPANEON = $40000000; + Type - SFGAOF = ULONG; + SFGAOF = ULONG; TSFGAOF = SFGAOF; PSFGAOF = ^SFGAOF; + SHCONTF = longint; + TSHCONTF = SHCONTF; + PSHCONTF = ^SHCONTF; + SIGDN = longint; + TSIGDN = SIGDN; + PSIGDN = ^SIGDN; + SICHINTF = longint; + TSICHINTF = SICHINTF; + PSICHINTF = ^SICHINTF; + + PROPERTYUI_NAME_FLAGS = DWord; // enum PROPERTYUI_FORMAT_FLAGS = DWord; PROPERTYUI_FLAGS = Dword; @@ -1715,7 +1755,28 @@ Type LPAASHELLMENUITEM = PtagAASHELLMENUITEM; PLPAASHELLMENUITEM = ^LPAASHELLMENUITEM; - + FDE_OVERWRITE_RESPONSE = longint; + TFDE_OVERWRITE_RESPONSE = FDE_OVERWRITE_RESPONSE; + PFDE_OVERWRITE_RESPONSE = ^longint; + FDE_SHAREVIOLATION_RESPONSE = longint; + TFDE_SHAREVIOLATION_RESPONSE = FDE_SHAREVIOLATION_RESPONSE; + PFDE_SHAREVIOLATION_RESPONSE = ^FDE_SHAREVIOLATION_RESPONSE; + FILEOPENDIALOGOPTIONS = longint; + TFILEOPENDIALOGOPTIONS = FILEOPENDIALOGOPTIONS; + PFILEOPENDIALOGOPTIONS = ^TFILEOPENDIALOGOPTIONS; + FDAP = longint; + TFDAP= FDAP; + PFDAP= ^FDAP; + _COMDLG_FILTERSPEC = packed record + pszName : LPCWSTR; + pszSpec : LPCWSTR; + end; + + COMDLG_FILTERSPEC = _COMDLG_FILTERSPEC; + TCOMDLG_FILTERSPEC = _COMDLG_FILTERSPEC; + PCOMDLG_FILTERSPEC = ^_COMDLG_FILTERSPEC; + + IPersistFolder = Interface(IPersist) ['{000214EA-0000-0000-C000-000000000046}'] function Initialize (pild : LPCITEMIDLIST): HResult; StdCall; @@ -1999,6 +2060,67 @@ Type end; IShellLink = IShellLinkA; + PIShellItem= ^IShellItem; + IShellItem = interface(IUnknown) + ['{43826d1e-e718-42ee-bc55-a1e261c37bfe}'] + function BindToHandler(pbc:IBindCTX;bhid:PGUID;RIID:PIID;ppv:ppointer):HResult;Stdcall; + function GetParent(ppsi:PISHellItem):HResult;Stdcall; + function GetDisplayName(sigdnname:SIGDN;ppszName:LPWSTR):HResult; Stdcall; + function GetAttributes(sfgaomask:SFGAOF;psfgaoAttribs:PSFGAOF):HResult;Stdcall; + function Compare(psi:IShellItem;hint:SICHINTF;piorder:PINT):HResult; Stdcall; + end; + + IModalWindow = Interface(IUnknown) + ['{b4db1657-70d7-485e-8e3e-6fcb5a5c1802}'] + function Show(hwndparent:HWND):HResult;StdCall; + end; + + IShellItemFilter = Interface(IUnknown) + ['{2659B475-EEB8-48b7-8F07-B378810F48CF}'] + function IncludeItem(psi:IShellItem):HResult;StdCall; + function GetEnumFlagsForItem(psi:IShellItem;pgrfflags :PSHCONTF):HRESULT;Stdcall; + end; + + IFileDialog = Interface; + IFileDialogEvents = Interface(IUnknown) + ['{973510db-7d7f-452b-8975-74a85828d354}'] + function OnFileOk (pfd:IFileDialog):HResult; Stdcall; + function OnFolderChanging (pfd:IFileDialog;psifolder:IShellItem):HResult; Stdcall; + function OnFolderChange (pfd:IFileDialog):HResult; Stdcall; + function OnSelectionChange(pfd:IFileDialog):HResult; Stdcall; + function OnShareViolation (pfd:IFileDialog;psi:IShellItem;pResponse :pFDE_SHAREVIOLATION_RESPONSE):HResult; Stdcall; + function OnTypeChange (pfd:IFileDialog):HResult; Stdcall; + function OnOverwrite (pfd:IFileDialog;psi:IShellItem;pResponse :pFDE_OVERWRITE_RESPONSE):HResult; Stdcall; + end; + + IFileDialog = Interface(IModalWindow) + ['{42f85136-db7e-439c-85f1-e4075d135fc8}'] + function SetFileTypes(cFileTypes:UINT;rgFilterSpec:pCOMDLG_FILTERSPEC):HRESULT;Stdcall; + function SetFileTypeIndex(iFileType:UINT):HRESULT;Stdcall; + function GetFileTypeIndex(piFileType:pUINT):HRESULT;Stdcall; + function Advise(pdfde:IFileDialogEvents;pdwcookie:PDWORD):HRESULT;Stdcall; + function unadvise(dwCookie:DWORD):HRESULT;Stdcall; + function SetOptions(fos:FILEOPENDIALOGOPTIONS):HRESULT;Stdcall; + function GetOptions(pfos:pFILEOPENDIALOGOPTIONS):HRESULT;Stdcall; + function SetDefaultFolder(psi:IShellItem):HRESULT;Stdcall; + function SetFolder(psi:IShellItem):HRESULT;Stdcall; + function Getfolder(ppsi:pIShellItem):HRESULT;Stdcall; + function GetCurrentSelection(ppsi:pIShellItem):HRESULT;Stdcall; + function SetFileName(pszName:LPCWSTR):HRESULT;Stdcall; + function GetFileName(pszName:pLPWSTR):HRESULT;Stdcall; + function SetTitle(pszTitle:LPCWSTR):HRESULT;Stdcall; + function SetOkButtonLabel(pszText:LPCWSTR):HRESULT;Stdcall; + function SetFileNameLabel(pszLabel:LPCWSTR):HRESULT;Stdcall; + function GetResult(ppsi:pIShellItem):HRESULT;Stdcall; + function AddPlace(psi:IShellItem;fdap:FDAP):HRESULT;Stdcall; + function SetDefaultExtension(pszDefaultExtension:LPCWSTR):HRESULT;Stdcall; + function Close(hr:HRESULT):HRESULT;Stdcall; + function SetClientGuid(GUID:PGUID):HRESULT;Stdcall; + function ClearClientData:HRESULT;Stdcall; + function SetFilter(pfilter:IShellItemFilter):HRESULT;Stdcall; + end; + + function SHGetMalloc(out ppmalloc: IMalloc):HResult;StdCall; external 'shell32' name 'SHGetMalloc'; function SHGetDesktopFolder(out ppshf:IShellFolder):HResult;StdCall; external 'shell32' name 'SHGetDesktopFolder'; |
