vbAccelerator - Contents of code file: ISHFoldr.odl

//=============================================================
// IShellFolder::GetDisplayNameOf/SetNameOf uFlags

typedef enum tagSHGDN
{
    SHGDN_NORMAL            = 0,        // default (display purpose)
    SHGDN_INFOLDER          = 1,        // displayed under a folder (relative)
    SHGDN_FORADDRESSBAR     = 0x4000,   // for displaying in the address
     (drives dropdown) bar
    SHGDN_FORPARSING        = 0x8000,   // for ParseDisplayName or path
} ESHGNO;

//=============================================================
// IShellFolder::EnumObjects

typedef enum tagSHCONTF
{
    SHCONTF_FOLDERS         = 32,       // for shell browser
    SHCONTF_NONFOLDERS      = 64,       // for default view
    SHCONTF_INCLUDEHIDDEN   = 128,      // for hidden/system objects
} ESHCONTF;

//=============================================================
// IShellFolder::GetAttributesOf flags
// (turned into enum so that the constants and their 
//  values are accessable outside the typelib)

typedef enum tagSFGAO
{
    SFGAO_CANCOPY         = 0x00000001,     // Objects can be copied, =
     DROPEFFECT_COPY 
    SFGAO_CANMOVE         = 0x00000002,     // Objects can be moved, =
     DROPEFFECT_MOVE 
    SFGAO_CANLINK         = 0x00000004,     // Objects can be linked, =
     DROPEFFECT_LINK 
    SFGAO_CANRENAME       = 0x00000010,     // Objects can be renamed
    SFGAO_CANDELETE       = 0x00000020,     // Objects can be deleted
    SFGAO_HASPROPSHEET    = 0x00000040,     // Objects have property sheets
    SFGAO_DROPTARGET      = 0x00000100,     // Objects are drop target
    SFGAO_CAPABILITYMASK  = 0x00000177,
    SFGAO_LINK            = 0x00010000,     // Shortcut (link)
    SFGAO_SHARE           = 0x00020000,     // shared
    SFGAO_READONLY        = 0x00040000,     // read-only
    SFGAO_GHOSTED         = 0x00080000,     // ghosted icon
    SFGAO_DISPLAYATTRMASK = 0x000F0000,
    SFGAO_FILESYSANCESTOR = 0x10000000,     // It contains file system folder
    SFGAO_FOLDER          = 0x20000000,     // It's a folder.
    SFGAO_FILESYSTEM      = 0x40000000,     // is a file system thing
     (file/folder/root)
    SFGAO_HASSUBFOLDER    = 0x80000000,     // Expandable in the map pane
    SFGAO_CONTENTSMASK    = 0x80000000,
    SFGAO_VALIDATE        = 0x01000000,     // invalidate cached information
    SFGAO_REMOVABLE       = 0x02000000,     // is this removeable media?
    SFGAO_COMPRESSED      = 0x04000000,     // Object is compressed (use alt
     color)
} ESFGAO;

//=============================================================
// IID_IShellFolder
[
    uuid(000214E6-0000-0000-C000-000000000046),
    helpstring("IShellFolder Interface"),
    odl
]
//=============================================================

interface IShellFolder : IUnknown
{
    // *** IShellFolder methods ***
    // all HRESULT rtn types have been replaced.
    // since VB maps HRESULT error to RT errors,
    // app must handle any errors specifically

    [helpstring("ParseDisplayName")]
    long    ParseDisplayName(
                [in]     HWND          hwndOwner,        // Handle of owner
                 window
                [in]     long          pbcReserved,      // Reserved (LPBC)
                [in]     LPOLESTR      lpszDisplayName,  // Pointer to diplay
                 name 
                [in,out] ULONG         *pchEaten,        // Pointer to value
                 for parsed characters
                [in,out] LPITEMIDLIST  *ppidl,           // Pointer to new item
                 identifier list
                [in,out] ULONG         *pdwAttributes);  // Address receiving
                 attributes of file object

    [helpstring("EnumObjects")]
    long    EnumObjects( 
                [in]     HWND          hwndOwner, 
                [in]     DWORD         grfFlags, 
                [in,out] LPENUMIDLIST  *ppenumIDList);

    [helpstring("BindToObject")]
    long    BindToObject(
                [in]     LPCITEMIDLIST pidl, 
                [in]     long          pbcReserved,
                [in]     REFIID        riid, 
                [in,out] LPVOID        ppvOut);

    // VB handles E_NOTIMPL
    [helpstring("BindToStorage")]
    HRESULT BindToStorage(
                [in]     LPCITEMIDLIST pidl, 
                [in]     long          pbcReserved,  // (LPBC)
                [in]     REFIID        riid, 
                [in,out] LPVOID        ppvObj);      // * v1.2, was *ppvObj

    [helpstring("CompareIDs")]
    long    CompareIDs(
                [in]     LPARAM        lParam, 
                [in]     LPCITEMIDLIST pidl1, 
                [in]     LPCITEMIDLIST pidl2);

    [helpstring("CreateViewObject")]
    long    CreateViewObject(
                [in]     HWND          hwndOwner, 
                [in]     REFIID        riid, 
                [in,out] LPVOID        ppvOut);      // * v1.2, was *ppvOut

    [helpstring("GetAttributesOf")]
    long    GetAttributesOf(
                [in]     UINT          cidl, 
                [in]     LPCITEMIDLIST *apidl,
                [in,out] ULONG         *rgfInOut);

    [helpstring("GetUIObjectOf")]
    long    GetUIObjectOf(
                [in]     HWND          hwndOwner,
                [in]     UINT          cidl,
                [in]     LPCITEMIDLIST *apidl,
                [in]     REFIID        riid,
                [in]     UINT          *prgfInOut,
                [in,out] LPVOID        ppvOut);   // *ppvOut

    [helpstring("GetDisplayNameOf")]
    long    GetDisplayNameOf(
                [in]     LPCITEMIDLIST pidl,
                [in]     DWORD         uFlags,
                [in,out] LPSTRRET      lpName);

    [helpstring("SetNameOf")]
    long    SetNameOf(
                [in]     HWND          hwndOwner,
                [in]     LPCITEMIDLIST pidl,
                [in]     LPCOLESTR     lpszName,
                [in]     DWORD         uFlags,
                [in,out] LPCITEMIDLIST *ppidlOut);
}