cpp_quote("#ifndef _WEBVW_H_")
cpp_quote("#define _WEBVW_H_")

#include <olectl.h>

// webvw.idl : IDL source for webvw.dll
//

// This file will be processed by the MIDL tool to
// produce the type library (webvw.tlb) and marshalling code.

import "oaidl.idl";
import "ocidl.idl";
import "shldisp.idl";
#include "webvwid.h"

// IThumbCtl interface
[
    object,
    uuid(e8accae0-23e6-11d1-9e88-00c04fdcab92),
    dual,
    helpstring("IThumbCtl Interface"),
    pointer_default(unique)
]
interface IThumbCtl : IDispatch
{
    [id(1), helpstring("method displayFile")] HRESULT displayFile(BSTR bsFileName, [retval, out] VARIANT_BOOL *);
    [id(2), helpstring("method haveThumbnail")] HRESULT haveThumbnail([retval, out] VARIANT_BOOL *);
    [propget, id(3), helpstring("property freeSpace")] HRESULT freeSpace([retval, out] BSTR *);
    [propget, id(4), helpstring("property usedSpace")] HRESULT usedSpace([retval, out] BSTR *);
    [propget, id(5), helpstring("property totalSpace")] HRESULT totalSpace([retval, out] BSTR *);
};

// IWebView interface
[
    object,
    uuid(BCFD624C-705A-11d2-A2AF-00C04FC30871),
    dual,
    helpstring("IWebView Interface"),
    pointer_default(unique)
]
interface IWebView : IDispatch
{
    [id(1), helpstring("method OnCSCClick")] HRESULT OnCSCClick();
    [id(2), helpstring("method CSCSynchronize")] HRESULT CSCSynchronize();
    [id(3), helpstring("method OnCSCMouseOver")] HRESULT OnCSCMouseOver();
    [id(4), helpstring("method OnCSCMouseOut")] HRESULT OnCSCMouseOut();
};

// IWebViewFolderIcon interface
[
    object,
    uuid(99DB2085-323A-11d2-A1D4-00A0C9A63FD0),
    dual,
    helpstring("IWebViewFolderIcon Interface"),
    pointer_default(unique)
]

interface IWebViewFolderIcon : IDispatch
{
    [id(DISPID_PROP_WVFOLDERICON_SCALE), propget, helpstring("property scale")] HRESULT scale([retval, out] BSTR *);
    [id(DISPID_PROP_WVFOLDERICON_SCALE), propput, helpstring("property scale")] HRESULT scale([in] BSTR);
    [id(DISPID_PROP_WVFOLDERICON_PATH), propget, helpstring("property path")] HRESULT path([retval, out] BSTR *);
    [id(DISPID_PROP_WVFOLDERICON_PATH), propput, helpstring("property path")] HRESULT path([in] BSTR);
    [id(DISPID_PROP_WVFOLDERICON_VIEW), propget, helpstring("property view")] HRESULT view([retval, out] BSTR *);
    [id(DISPID_PROP_WVFOLDERICON_VIEW), propput, helpstring("property view")] HRESULT view([in] BSTR);
    [id(DISPID_PROP_WVFOLDERICON_ADVPROPERTY), propget, helpstring("advanced properties")] 
        HRESULT advproperty([retval, out] VARIANT_BOOL *);
    [id(DISPID_PROP_WVFOLDERICON_ADVPROPERTY), propput, helpstring("advanced properties")] 
        HRESULT advproperty([in] VARIANT_BOOL);
};

// IWebViewFolderIcon2 interface
[
    object,
    uuid(224AFAC1-3145-11d2-A1D3-00A0C9A63FD0),
    helpstring("IWebViewFolderIcon2 Interface"),
    pointer_default(unique),
    dual
]
interface IWebViewFolderIcon2 : IWebViewFolderIcon
{
    [id(DISPID_WVFOLDERICON_SETSLICE), helpstring("method setSlice")] 
        HRESULT setSlice([in]int index, VARIANT varHiBytes, VARIANT varLoBytes, VARIANT varColorref);
};

// IWebViewFolderIcon3 interface
[
    object,
    uuid(7E20114A-7DB7-4e57-B03C-5CCB8C2B85E2),
    helpstring("IWebViewFolderIcon3 Interface"),
    pointer_default(unique),
    dual
]
interface IWebViewFolderIcon3 : IWebViewFolderIcon2
{
    [id(DISPID_PROP_WVFOLDERICON_ITEM), propget, helpstring("property item")] HRESULT item([retval, out] FolderItem ** ppFolderItem);
    [id(DISPID_PROP_WVFOLDERICON_ITEM), propput, helpstring("property item")] HRESULT item([in] FolderItem * pFolderItem);

    [id(DISPID_PROP_WVFOLDERICON_CLICKSTYLE), propget, helpstring("property clickStyle")]
        HRESULT clickStyle([retval, out] LONG *plClickStyle);
    [id(DISPID_PROP_WVFOLDERICON_CLICKSTYLE), propput, helpstring("property clickStyle")]
        HRESULT clickStyle([in] LONG lClickStyle);

    [id(DISPID_PROP_WVFOLDERICON_LABELGAP), propget, helpstring("property labelGap")]
        HRESULT labelGap([retval, out] LONG *plLabelGap);
    [id(DISPID_PROP_WVFOLDERICON_LABELGAP), propput, helpstring("property labelGap")]
        HRESULT labelGap([in] LONG lLabelGap);

};



// WebView Library
[
    uuid(cd603fc0-1f11-11d1-9e88-00c04fdcab92),
    version(1.0),
    helpstring("webvw 1.0 Type Library")
]
library WEBVWLib
{
    importlib("stdole2.tlb");

    // ThumbCtl
    [
        uuid(58d6f4b0-181d-11d1-9e88-00c04fdcab92),     // DIID_DThumbCtlEvents
        helpstring("Event interface for ThumbCtl")
    ]
    dispinterface DThumbCtlEvents
    {
    properties:
    methods:
        [id(DISPID_ONTHUMBNAILREADY), helpstring("The Thumbnail is ready to be displayed."), helpcontext(0x0000)]
        void OnThumbnailReady();
    }

    [
        uuid(71650000-E8A8-11d2-9652-00C04FC30871),
        helpstring("ThumbCtl Class")
    ]
    coclass ThumbCtl
    {
        [default] interface IThumbCtl;
        [default, source] dispinterface DThumbCtlEvents;
    };

    [
        uuid(BCFD624E-705A-11d2-A2AF-00C04FC30871),
        helpstring("WebView Class")
    ]
    coclass WebView
    {
        [default] interface IWebView;
    };

    [
        uuid(D55780B9-CA4C-4833-A48B-CD779A0A9C3E), // DIID_DWebViewFolderIconEvents
        helpstring("Event interface for WebViewFolderIcon"),
    ]
    dispinterface DWebViewFolderIconEvents
    {
    properties:
    methods:
        [id(DISPID_WEBVIEWFOLDERICON_ONTHUMBNAILREADY), helpstring("(When the foldericon is set to thumbnail mode) the thumbnail is ready to be displayed."), helpcontext(0x0000)]
        void OnWebViewFolderIconThumbnailReady();
    }

    [
        uuid(844F4806-E8A8-11d2-9652-00C04FC30871),
        helpstring("WebViewFolderIcon Class")
    ]
    coclass WebViewFolderIcon
    {
        [default] interface IWebViewFolderIcon3;
        [default, source] dispinterface DWebViewFolderIconEvents;
    };
    
};

cpp_quote("#endif // _WEBVW_H_")
