/// <summary>Specifies the values that indicate whether a control is visible and enabled. Used by members of the IFileDialogCustomize interface.</summary>
[Flags]
publicenumCDCONTROLSTATEF:uint
{
/// <summary>The control is inactive and cannot be accessed by the user.</summary>
CDCS_INACTIVE=0x00000000,
/// <summary>The control is active.</summary>
CDCS_ENABLED=0x00000001,
/// <summary>The control is visible. The absence of this value indicates that the control is hidden.</summary>
CDCS_VISIBLE=0x00000002,
/// <summary>Windows 7 and later. The control is visible and enabled.</summary>
/// <summary>The place is added to the bottom of the default list.</summary>
FDAP_BOTTOM=0,
/// <summary>The place is added to the top of the default list.</summary>
FDAP_TOP=1
}
/// <summary>
/// Specifies the values used by the IFileDialogEvents::OnShareViolation method to indicate an application's response to a sharing violation that occurs
/// <summary>When saving a file, prompt before overwriting an existing file of the same name. This is a default value for the Save dialog.</summary>
FOS_OVERWRITEPROMPT=0x00000002,
/// <summary>In the Save dialog, only allow the user to choose a file that has one of the file name extensions specified through IFileDialog::SetFileTypes.</summary>
FOS_STRICTFILETYPES=0x00000004,
/// <summary>Don't change the current working directory.</summary>
FOS_NOCHANGEDIR=0x00000008,
/// <summary>Present an Open dialog that offers a choice of folders rather than files.</summary>
FOS_PICKFOLDERS=0x00000020,
/// <summary>Ensures that returned items are file system items (SFGAO_FILESYSTEM). Note that this does not apply to items returned by IFileDialog::GetCurrentSelection.</summary>
FOS_FORCEFILESYSTEM=0x00000040,
/// <summary>
/// Enables the user to choose any item in the Shell namespace, not just those with SFGAO_STREAM or SFAGO_FILESYSTEM attributes. This flag cannot be
/// combined with FOS_FORCEFILESYSTEM.
/// </summary>
FOS_ALLNONSTORAGEITEMS=0x00000080,
/// <summary>
/// Do not check for situations that would prevent an application from opening the selected file, such as sharing violations or access denied errors.
/// </summary>
FOS_NOVALIDATE=0x00000100,
/// <summary>
/// Enables the user to select multiple items in the open dialog. Note that when this flag is set, the IFileOpenDialog interface must be used to
/// retrieve those items.
/// </summary>
FOS_ALLOWMULTISELECT=0x00000200,
/// <summary>The item returned must be in an existing folder. This is a default value.</summary>
FOS_PATHMUSTEXIST=0x00000800,
/// <summary>The item returned must exist. This is a default value for the Open dialog.</summary>
FOS_FILEMUSTEXIST=0x00001000,
/// <summary>Prompt for creation if the item returned in the save dialog does not exist. Note that this does not actually create the item.</summary>
FOS_CREATEPROMPT=0x00002000,
/// <summary>
/// In the case of a sharing violation when an application is opening a file, call the application back through OnShareViolation for guidance. This
/// flag is overridden by FOS_NOVALIDATE.
/// </summary>
FOS_SHAREAWARE=0x00004000,
/// <summary>Do not return read-only items. This is a default value for the Save dialog.</summary>
FOS_NOREADONLYRETURN=0x00008000,
/// <summary>
/// Do not test whether creation of the item as specified in the Save dialog will be successful. If this flag is not set, the calling application
/// must handle errors, such as denial of access, discovered when the item is created.
/// </summary>
FOS_NOTESTFILECREATE=0x00010000,
/// <summary>Hide the list of places from which the user has recently opened or saved items. This value is not supported as of Windows 7.</summary>
FOS_HIDEMRUPLACES=0x00020000,
/// <summary>
/// Hide items shown by default in the view's navigation pane. This flag is often used in conjunction with the IFileDialog::AddPlace method, to hide
/// standard locations and replace them with custom locations.
/// <para>
/// <c>Windows 7</c> and later. Hide all of the standard namespace locations (such as Favorites, Libraries, Computer, and Network) shown in the
/// navigation pane.
/// </para>
/// <para>
/// <c>Windows Vista.</c> Hide the contents of the Favorite Links tree in the navigation pane. Note that the category itself is still displayed, but
/// shown as empty.
/// </para>
/// </summary>
FOS_HIDEPINNEDPLACES=0x00040000,
/// <summary>
/// Shortcuts should not be treated as their target items. This allows an application to open a .lnk file rather than what that file is a shortcut to.
/// </summary>
FOS_NODEREFERENCELINKS=0x00100000,
/// <summary>Do not add the item being opened or saved to the recent documents list (SHAddToRecentDocs).</summary>
FOS_DONTADDTORECENT=0x02000000,
/// <summary>Include hidden and system items.</summary>
FOS_FORCESHOWHIDDEN=0x10000000,
/// <summary>
/// Indicates to the Save As dialog box that it should open in expanded mode. Expanded mode is the mode that is set and unset by clicking the button
/// in the lower-left corner of the Save As dialog box that switches between Browse Folders and Hide Folders when clicked. This value is not
/// supported as of Windows 7.
/// </summary>
FOS_DEFAULTNOMINIMODE=0x20000000,
/// <summary>Indicates to the Open dialog box that the preview pane should always be displayed.</summary>
FOS_FORCEPREVIEWPANEON=0x40000000,
/// <summary>Indicates that the caller is opening a file as a stream (BHID_Stream), so there is no need to download that file.</summary>
FOS_SUPPORTSTREAMABLEITEMS=0x80000000
}
/// <summary>Used by methods of the ITransferSource and ITransferDestination interfaces to control their file operations.</summary>
/// <summary>Fail if the destination already exists, unless TSF_OVERWRITE_EXIST is specified. This is a default behavior.</summary>
TSF_NORMAL=0,
/// <summary>Fail if the destination already exists, unless TSF_OVERWRITE_EXIST is specified. This is a default behavior</summary>
TSF_FAIL_EXIST=0,
/// <summary>Rename with auto-name generation if the destination already exists.</summary>
TSF_RENAME_EXIST=0x1,
/// <summary>Overwrite or merge with the destination.</summary>
TSF_OVERWRITE_EXIST=0x2,
/// <summary>Allow creation of a decrypted destination.</summary>
TSF_ALLOW_DECRYPTION=0x4,
/// <summary>No discretionary access control list (DACL), system access control list (SACL), or owner.</summary>
TSF_NO_SECURITY=0x8,
/// <summary>Copy the creation time as part of the copy. This can be useful for a move operation that is being used as a copy and delete operation (TSF_MOVE_AS_COPY_DELETE).</summary>
TSF_COPY_CREATION_TIME=0x10,
/// <summary>Copy the last write time as part of the copy.</summary>
TSF_COPY_WRITE_TIME=0x20,
/// <summary>Assign write, read, and delete permissions as share mode.</summary>
TSF_USE_FULL_ACCESS=0x40,
/// <summary>Recycle on file delete, if possible.</summary>
TSF_DELETE_RECYCLE_IF_POSSIBLE=0x80,
/// <summary>Hard link to the desired source (not required). This avoids a normal copy operation.</summary>
TSF_COPY_HARD_LINK=0x100,
/// <summary>Copy the localized name.</summary>
TSF_COPY_LOCALIZED_NAME=0x200,
/// <summary>Move as a copy and delete operation.</summary>
TSF_MOVE_AS_COPY_DELETE=0x400,
/// <summary>Suspend Shell events.</summary>
TSF_SUSPEND_SHELLEVENTS=0x800
}
/// <summary>Exposes methods that initialize, show, and get results from the common file dialog.</summary>
/// <summary>Sets the file type that appears as selected in the dialog.</summary>
/// <param name="iFileType">
/// The index of the file type in the file type array passed to IFileDialog::SetFileTypes in its cFileTypes parameter. Note that this is a one-based
/// index, not zero-based.
/// </param>
voidSetFileTypeIndex(uintiFileType);
/// <summary>Gets the currently selected file type.</summary>
/// <returns>
/// A UINT value that receives the index of the selected file type in the file type array passed to IFileDialog::SetFileTypes in its cFileTypes parameter.
/// </returns>
uintGetFileTypeIndex();
/// <summary>Assigns an event handler that listens for events coming from the dialog.</summary>
/// <param name="pfde">A pointer to an IFileDialogEvents implementation that will receive events from the dialog.</param>
/// <returns>
/// A DWORD value identifying this event handler. When the client is finished with the dialog, that client must call the IFileDialog::Unadvise method
/// with this value.
/// </returns>
uintAdvise(IFileDialogEventspfde);
/// <summary>Removes an event handler that was attached through the IFileDialog::Advise method.</summary>
/// <param name="dwCookie">
/// The DWORD value that represents the event handler. This value is obtained through the pdwCookie parameter of the IFileDialog::Advise method.
/// </param>
voidUnadvise(uintdwCookie);
/// <summary>Sets flags to control the behavior of the dialog.</summary>
/// <param name="fos">One or more of the FILEOPENDIALOGOPTIONS values.</param>
voidSetOptions(FILEOPENDIALOGOPTIONSfos);
/// <summary>Gets the current flags that are set to control dialog behavior.</summary>
/// <returns>When this method returns successfully, points to a value made up of one or more of the FILEOPENDIALOGOPTIONS values.</returns>
FILEOPENDIALOGOPTIONSGetOptions();
/// <summary>Sets the folder used as a default if there is not a recently used folder value available.</summary>
/// <param name="psi">A pointer to the interface that represents the folder.</param>
voidSetDefaultFolder(IShellItempsi);
/// <summary>Sets a folder that is always selected when the dialog is opened, regardless of previous user action.</summary>
/// <param name="psi">A pointer to the interface that represents the folder.</param>
voidSetFolder(IShellItempsi);
/// <summary>
/// Gets either the folder currently selected in the dialog, or, if the dialog is not currently displayed, the folder that is to be selected when the
/// dialog is opened.
/// </summary>
/// <returns>The address of a pointer to the interface that represents the folder.</returns>
IShellItemGetFolder();
/// <summary>Gets the user's current selection in the dialog.</summary>
/// <returns>
/// The address of a pointer to the interface that represents the item currently selected in the dialog. This item can be a file or folder selected
/// in the view window, or something that the user has entered into the dialog's edit box. The latter case may require a parsing operation
/// (cancelable by the user) that blocks the current thread.
/// </returns>
IShellItemGetCurrentSelection();
/// <summary>Sets the file name that appears in the File name edit box when that dialog box is opened.</summary>
/// <param name="pszName">A pointer to the name of the file.</param>
/// <summary>Sets the file type that appears as selected in the dialog.</summary>
/// <param name="iFileType">
/// The index of the file type in the file type array passed to IFileDialog::SetFileTypes in its cFileTypes parameter. Note that this is a one-based
/// index, not zero-based.
/// </param>
newvoidSetFileTypeIndex(uintiFileType);
/// <summary>Gets the currently selected file type.</summary>
/// <returns>
/// A UINT value that receives the index of the selected file type in the file type array passed to IFileDialog::SetFileTypes in its cFileTypes parameter.
/// </returns>
newuintGetFileTypeIndex();
/// <summary>Assigns an event handler that listens for events coming from the dialog.</summary>
/// <param name="pfde">A pointer to an IFileDialogEvents implementation that will receive events from the dialog.</param>
/// <returns>
/// A DWORD value identifying this event handler. When the client is finished with the dialog, that client must call the IFileDialog::Unadvise method
/// with this value.
/// </returns>
newuintAdvise(IFileDialogEventspfde);
/// <summary>Removes an event handler that was attached through the IFileDialog::Advise method.</summary>
/// <param name="dwCookie">
/// The DWORD value that represents the event handler. This value is obtained through the pdwCookie parameter of the IFileDialog::Advise method.
/// </param>
newvoidUnadvise(uintdwCookie);
/// <summary>Sets flags to control the behavior of the dialog.</summary>
/// <param name="fos">One or more of the FILEOPENDIALOGOPTIONS values.</param>
newvoidSetOptions(FILEOPENDIALOGOPTIONSfos);
/// <summary>Gets the current flags that are set to control dialog behavior.</summary>
/// <returns>When this method returns successfully, points to a value made up of one or more of the FILEOPENDIALOGOPTIONS values.</returns>
newFILEOPENDIALOGOPTIONSGetOptions();
/// <summary>Sets the folder used as a default if there is not a recently used folder value available.</summary>
/// <param name="psi">A pointer to the interface that represents the folder.</param>
newvoidSetDefaultFolder(IShellItempsi);
/// <summary>Sets a folder that is always selected when the dialog is opened, regardless of previous user action.</summary>
/// <param name="psi">A pointer to the interface that represents the folder.</param>
newvoidSetFolder(IShellItempsi);
/// <summary>
/// Gets either the folder currently selected in the dialog, or, if the dialog is not currently displayed, the folder that is to be selected when the
/// dialog is opened.
/// </summary>
/// <returns>The address of a pointer to the interface that represents the folder.</returns>
newIShellItemGetFolder();
/// <summary>Gets the user's current selection in the dialog.</summary>
/// <returns>
/// The address of a pointer to the interface that represents the item currently selected in the dialog. This item can be a file or folder selected
/// in the view window, or something that the user has entered into the dialog's edit box. The latter case may require a parsing operation
/// (cancelable by the user) that blocks the current thread.
/// </returns>
newIShellItemGetCurrentSelection();
/// <summary>Sets the file name that appears in the File name edit box when that dialog box is opened.</summary>
/// <param name="pszName">A pointer to the name of the file.</param>
/// <summary>Specifies a top-level location from which to begin browsing a namespace, for instance in the Save dialog's Browse folder option. Users cannot navigate above this location.</summary>
/// <param name="psi">Pointer to an IShellItem object that represents the navigation root.</param>
/// Exposes methods that allow an application to be notified of events that are related to controls that the application has added to a common file dialog.
/// <summary>Adds an item to a container control in the dialog.</summary>
/// <param name="dwIDCtl">The ID of the container control to which the item is to be added.</param>
/// <param name="dwIDItem">The ID of the item.</param>
/// <param name="pszLabel">A pointer to a buffer that contains the item's text, which can be either a label or, in the case of a drop-down list, the item itself. This text is a null-terminated Unicode string.</param>
/// <summary>Removes an item from a container control in the dialog.</summary>
/// <param name="dwIDCtl">The ID of the container control from which the item is to be removed.</param>
/// <param name="dwIDItem">The ID of the item.</param>
voidRemoveControlItem(uintdwIDCtl,intdwIDItem);
/// <summary>Not implemented.</summary>
/// <param name="dwIDCtl"></param>
voidRemoveAllControlItems(uintdwIDCtl);
/// <summary>Gets the current state of an item in a container control found in the dialog.</summary>
/// <param name="dwIDCtl">The ID of the container control.</param>
/// <param name="dwIDItem">The ID of the item.</param>
/// <returns>A pointer to a variable that receives one of more values from the CDCONTROLSTATE enumeration that indicate the current state of the control.</returns>
/// <summary>Declares a visual group in the dialog. Subsequent calls to any "add" method add those elements to this group.</summary>
/// <param name="dwIDCtl">The ID of the visual group.</param>
/// <param name="pszLabel">A pointer to a buffer that contains text, as a null-terminated Unicode string, that appears next to the visual group.</param>
/// <summary>Called when the user navigates to a new folder.</summary>
/// <param name="pfd">A pointer to the interface that represents the dialog.</param>
/// <returns>If this method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code.</returns>
[PreserveSig]
HRESULTOnFolderChange(IFileDialogpfd);
/// <summary>Called when the user changes the selection in the dialog's view.</summary>
/// <param name="pfd">A pointer to the interface that represents the dialog.</param>
/// <returns>If this method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code.</returns>
[PreserveSig]
HRESULTOnSelectionChange(IFileDialogpfd);
/// <summary>Enables an application to respond to sharing violations that arise from Open or Save operations.</summary>
/// <param name="pfd">A pointer to the interface that represents the dialog.</param>
/// <param name="psi">A pointer to the interface that represents the item that has the sharing violation.</param>
/// <param name="pResponse">A pointer to a value from the FDE_SHAREVIOLATION_RESPONSE enumeration indicating the response to the sharing violation.</param>
/// <returns>The implementer should return E_NOTIMPL if this method is not implemented; S_OK or an appropriate error code otherwise.</returns>
/// <remarks>
/// The FOS_SHAREAWARE flag must be set through IFileDialog::SetOptions before this method is called.
/// <para>
/// A sharing violation could possibly arise when the application attempts to open a file, because the file could have been locked between the time
/// that the dialog tested it and the application opened it.
/// <summary>Sets the file type that appears as selected in the dialog.</summary>
/// <param name="iFileType">
/// The index of the file type in the file type array passed to IFileDialog::SetFileTypes in its cFileTypes parameter. Note that this is a one-based
/// index, not zero-based.
/// </param>
newvoidSetFileTypeIndex(uintiFileType);
/// <summary>Gets the currently selected file type.</summary>
/// <returns>
/// A UINT value that receives the index of the selected file type in the file type array passed to IFileDialog::SetFileTypes in its cFileTypes parameter.
/// </returns>
newuintGetFileTypeIndex();
/// <summary>Assigns an event handler that listens for events coming from the dialog.</summary>
/// <param name="pfde">A pointer to an IFileDialogEvents implementation that will receive events from the dialog.</param>
/// <returns>
/// A DWORD value identiying this event handler. When the client is finished with the dialog, that client must call the IFileDialog::Unadvise method
/// with this value.
/// </returns>
newuintAdvise(IFileDialogEventspfde);
/// <summary>Removes an event handler that was attached through the IFileDialog::Advise method.</summary>
/// <param name="dwCookie">
/// The DWORD value that represents the event handler. This value is obtained through the pdwCookie parameter of the IFileDialog::Advise method.
/// </param>
newvoidUnadvise(uintdwCookie);
/// <summary>Sets flags to control the behavior of the dialog.</summary>
/// <param name="fos">One or more of the FILEOPENDIALOGOPTIONS values.</param>
newvoidSetOptions(FILEOPENDIALOGOPTIONSfos);
/// <summary>Gets the current flags that are set to control dialog behavior.</summary>
/// <returns>When this method returns successfully, points to a value made up of one or more of the FILEOPENDIALOGOPTIONS values.</returns>
newFILEOPENDIALOGOPTIONSGetOptions();
/// <summary>Sets the folder used as a default if there is not a recently used folder value available.</summary>
/// <param name="psi">A pointer to the interface that represents the folder.</param>
newvoidSetDefaultFolder(IShellItempsi);
/// <summary>Sets a folder that is always selected when the dialog is opened, regardless of previous user action.</summary>
/// <param name="psi">A pointer to the interface that represents the folder.</param>
newvoidSetFolder(IShellItempsi);
/// <summary>
/// Gets either the folder currently selected in the dialog, or, if the dialog is not currently displayed, the folder that is to be selected when the
/// dialog is opened.
/// </summary>
/// <returns>The address of a pointer to the interface that represents the folder.</returns>
newIShellItemGetFolder();
/// <summary>Gets the user's current selection in the dialog.</summary>
/// <returns>
/// The address of a pointer to the interface that represents the item currently selected in the dialog. This item can be a file or folder selected
/// in the view window, or something that the user has entered into the dialog's edit box. The latter case may require a parsing operation
/// (cancelable by the user) that blocks the current thread.
/// </returns>
newIShellItemGetCurrentSelection();
/// <summary>Sets the file name that appears in the File name edit box when that dialog box is opened.</summary>
/// <param name="pszName">A pointer to the name of the file.</param>
/// <summary>Performs caller-implemented actions before any specific file operations are performed.</summary>
voidStartOperations();
/// <summary>Performs caller-implemented actions after the last operation performed by the call to IFileOperation is complete.</summary>
/// <param name="hrResult">The return value of the final operation. Note that this is not the HRESULT returned by one of the IFileOperation methods, which simply queue the operations. Instead, this is the result of the actual operation, such as copy, delete, or move.</param>
voidFinishOperations(HRESULThrResult);
/// <summary>Performs caller-implemented actions before the rename process for each item begins.</summary>
/// <param name="dwFlags">bitwise value that contains flags that control the operation. See TRANSFER_SOURCE_FLAGS for flag descriptions.</param>
/// <param name="psiItem">Pointer to an IShellItem that specifies the item to be renamed.</param>
/// <param name="pszNewName">Pointer to the new display name of the item. This is a null-terminated, Unicode string.</param>
/// <summary>Performs caller-implemented actions after the rename process for each item is complete.</summary>
/// <param name="dwFlags">bitwise value that contains flags that were used during the rename operation. Some values can be set or changed during the rename operation. See TRANSFER_SOURCE_FLAGS for flag descriptions.</param>
/// <param name="psiItem">Pointer to an IShellItem that specifies the item before it was renamed.</param>
/// <param name="pszNewName">Pointer to the new display name of the item. This is a null-terminated, Unicode string. Note that this might not be the name that you asked for, given collisions and other naming rules.</param>
/// <param name="hrRename">The return value of the rename operation. Note that this is not the HRESULT returned by RenameItem, which simply queues the rename operation. Instead, this is the result of the actual rename operation.</param>
/// <param name="psiNewlyCreated">Pointer to an IShellItem that represents the item with its new name.</param>
/// <summary>Performs caller-implemented actions before the move process for each item begins.</summary>
/// <param name="dwFlags">bitwise value that contains flags that control the operation. See TRANSFER_SOURCE_FLAGS for flag descriptions.</param>
/// <param name="psiItem">Pointer to an IShellItem that specifies the item to be moved.</param>
/// <param name="psiDestinationFolder">Pointer to an IShellItem that specifies the destination folder to contain the moved item.</param>
/// <param name="pszNewName">Pointer to a new name for the item in its new location. This is a null-terminated Unicode string and can be NULL. If NULL, the name of the destination item is the same as the source.</param>
/// <summary>Performs caller-implemented actions after the move process for each item is complete.</summary>
/// <param name="dwFlags">bitwise value that contains flags that were used during the move operation. Some values can be set or changed during the move operation. See TRANSFER_SOURCE_FLAGS for flag descriptions.</param>
/// <param name="psiItem">Pointer to an IShellItem that specifies the source item.</param>
/// <param name="psiDestinationFolder">Pointer to an IShellItem that specifies the destination folder that contains the moved item.</param>
/// <param name="pszNewName">Pointer to the name that was given to the item after it was moved. This is a null-terminated Unicode string. Note that this might not be the name that you asked for, given collisions and other naming rules.</param>
/// <param name="hrMove">The return value of the move operation. Note that this is not the HRESULT returned by MoveItem, which simply queues the move operation. Instead, this is the result of the actual move.</param>
/// <param name="psiNewlyCreated">Pointer to an IShellItem that represents the moved item in its new location.</param>
/// <summary>Performs caller-implemented actions before the copy process for each item begins.</summary>
/// <param name="dwFlags">bitwise value that contains flags that control the operation. See TRANSFER_SOURCE_FLAGS for flag descriptions.</param>
/// <param name="psiItem">Pointer to an IShellItem that specifies the source item.</param>
/// <param name="psiDestinationFolder">Pointer to an IShellItem that specifies the destination folder to contain the copy of the item.</param>
/// <param name="pszNewName">Pointer to a new name for the item after it has been copied. This is a null-terminated Unicode string and can be NULL. If NULL, the name of the destination item is the same as the source.</param>
/// <summary>Performs caller-implemented actions after the copy process for each item is complete.</summary>
/// <param name="dwFlags">bitwise value that contains flags that were used during the copy operation. Some values can be set or changed during the copy operation. See TRANSFER_SOURCE_FLAGS for flag descriptions.</param>
/// <param name="psiItem">Pointer to an IShellItem that specifies the source item.</param>
/// <param name="psiDestinationFolder">Pointer to an IShellItem that specifies the destination folder to which the item was copied.</param>
/// <param name="pszNewName">Pointer to the new name that was given to the item after it was copied. This is a null-terminated Unicode string. Note that this might not be the name that you asked for, given collisions and other naming rules.</param>
/// <param name="hrCopy">The return value of the copy operation. Note that this is not the HRESULT returned by CopyItem, which simply queues the copy operation. Instead, this is the result of the actual copy.</param>
/// <param name="psiNewlyCreated">Pointer to an IShellItem that represents the new copy of the item.</param>
/// <summary>Performs caller-implemented actions after the delete process for each item is complete.</summary>
/// <param name="dwFlags">bitwise value that contains flags that were used during the delete operation. Some values can be set or changed during the delete operation. See TRANSFER_SOURCE_FLAGS for flag descriptions.</param>
/// <param name="psiItem">Pointer to an IShellItem that specifies the item that was deleted.</param>
/// <param name="hrDelete">The return value of the delete operation. Note that this is not the HRESULT returned by DeleteItem, which simply queues the delete operation. Instead, this is the result of the actual deletion.</param>
/// <param name="psiNewlyCreated">A pointer to an IShellItem that specifies the deleted item, now in the Recycle Bin. If the item was fully deleted, this value is NULL.</param>
/// <summary>Performs caller-implemented actions after the new item is created.</summary>
/// <param name="dwFlags">bitwise value that contains flags that were used during the creation operation. Some values can be set or changed during the creation operation. See TRANSFER_SOURCE_FLAGS for flag descriptions.</param>
/// <param name="psiDestinationFolder">Pointer to an IShellItem that specifies the destination folder to which the new item was added.</param>
/// <param name="pszNewName">Pointer to the file name of the new item, for instance Newfile.txt. This is a null-terminated, Unicode string.</param>
/// <param name="pszTemplateName">Pointer to the name of the template file (for example Excel9.xls) that the new item is based on, stored in one of the following locations:
/// <list type="bullet">
/// <item><description> CSIDL_COMMON_TEMPLATES. The default path for this folder is %ALLUSERSPROFILE%\Templates.</description></item>
/// <item><description>CSIDL_TEMPLATES. The default path for this folder is %USERPROFILE%\Templates.</description></item>
/// <para>This is a null-terminated, Unicode string used to specify an existing file of the same type as the new file, containing the minimal content that an application wants to include in any new file.</para>
/// <para>This parameter is normally NULL to specify a new, blank file.</para>
/// </param>
/// <param name="dwFileAttributes">The file attributes applied to the new item. One or more of the values found at GetFileAttributes.</param>
/// <param name="hrNew">The return value of the creation operation. Note that this is not the HRESULT returned by NewItem, which simply queues the creation operation. Instead, this is the result of the actual creation.</param>
/// <param name="psiNewItem">Pointer to an IShellItem that represents the new item.</param>
/// <summary>Sets the file type that appears as selected in the dialog.</summary>
/// <param name="iFileType">
/// The index of the file type in the file type array passed to IFileDialog::SetFileTypes in its cFileTypes parameter. Note that this is a one-based
/// index, not zero-based.
/// </param>
newvoidSetFileTypeIndex(uintiFileType);
/// <summary>Gets the currently selected file type.</summary>
/// <returns>
/// A UINT value that receives the index of the selected file type in the file type array passed to IFileDialog::SetFileTypes in its cFileTypes parameter.
/// </returns>
newuintGetFileTypeIndex();
/// <summary>Assigns an event handler that listens for events coming from the dialog.</summary>
/// <param name="pfde">A pointer to an IFileDialogEvents implementation that will receive events from the dialog.</param>
/// <returns>
/// A DWORD value identiying this event handler. When the client is finished with the dialog, that client must call the IFileDialog::Unadvise method
/// with this value.
/// </returns>
newuintAdvise(IFileDialogEventspfde);
/// <summary>Removes an event handler that was attached through the IFileDialog::Advise method.</summary>
/// <param name="dwCookie">
/// The DWORD value that represents the event handler. This value is obtained through the pdwCookie parameter of the IFileDialog::Advise method.
/// </param>
newvoidUnadvise(uintdwCookie);
/// <summary>Sets flags to control the behavior of the dialog.</summary>
/// <param name="fos">One or more of the FILEOPENDIALOGOPTIONS values.</param>
newvoidSetOptions(FILEOPENDIALOGOPTIONSfos);
/// <summary>Gets the current flags that are set to control dialog behavior.</summary>
/// <returns>When this method returns successfully, points to a value made up of one or more of the FILEOPENDIALOGOPTIONS values.</returns>
newFILEOPENDIALOGOPTIONSGetOptions();
/// <summary>Sets the folder used as a default if there is not a recently used folder value available.</summary>
/// <param name="psi">A pointer to the interface that represents the folder.</param>
newvoidSetDefaultFolder(IShellItempsi);
/// <summary>Sets a folder that is always selected when the dialog is opened, regardless of previous user action.</summary>
/// <param name="psi">A pointer to the interface that represents the folder.</param>
newvoidSetFolder(IShellItempsi);
/// <summary>
/// Gets either the folder currently selected in the dialog, or, if the dialog is not currently displayed, the folder that is to be selected when the
/// dialog is opened.
/// </summary>
/// <returns>The address of a pointer to the interface that represents the folder.</returns>
newIShellItemGetFolder();
/// <summary>Gets the user's current selection in the dialog.</summary>
/// <returns>
/// The address of a pointer to the interface that represents the item currently selected in the dialog. This item can be a file or folder selected
/// in the view window, or something that the user has entered into the dialog's edit box. The latter case may require a parsing operation
/// (cancelable by the user) that blocks the current thread.
/// </returns>
newIShellItemGetCurrentSelection();
/// <summary>Sets the file name that appears in the File name edit box when that dialog box is opened.</summary>
/// <param name="pszName">A pointer to the name of the file.</param>
/// <summary>Retrieves the set of property values for a saved item or an item in the process of being saved.</summary>
/// <returns>Address of a pointer to an IPropertyStore that receives the property values.</returns>
PropSys.IPropertyStoreGetProperties();
/// <summary>Applies a set of properties to an item using the Shell's copy engine.</summary>
/// <param name="psi">Pointer to the IShellItem that represents the file being saved. This is usually the item retrieved by GetResult.</param>
/// <param name="pStore">
/// Pointer to the IPropertyStore that represents the property values to be applied to the file. This can be the property store returned by IFileSaveDialog::GetProperties.
/// </param>
/// <param name="hwnd">The handle of the application window.</param>
/// <param name="pSink">
/// Pointer to an optional IFileOperationProgressSink that the calling application can use if they want to be notified of the progress of the