//+-------------------------------------------------------------------------
//
//  Microsoft Windows
//  Copyright (C) Microsoft Corporation, 1995 - 1995.
//
//  File:       share.hxx
//
//  Contents:   CShare class definition to handle Sharing context menu
//              and property sheet shell extensions.
//
//  History:    4-Apr-95 BruceFo  Created
//
//--------------------------------------------------------------------------

#ifndef _SHARE_HXX_
#define _SHARE_HXX_

class CShare
            : public IShellExtInit,
              public IShellPropSheetExt,
              public IContextMenu
{
    DECLARE_SIG;

public:

    CShare();
    ~CShare();

    //
    // IUnknown methods
    //

    STDMETHOD(QueryInterface)(REFIID riid, LPVOID* ppvObj);
    STDMETHOD_(ULONG,AddRef)();
    STDMETHOD_(ULONG,Release)();

    //
    // IShellExtInit methods
    //

    STDMETHOD(Initialize)(
        LPCITEMIDLIST pidlFolder,
        LPDATAOBJECT pDataObject,
        HKEY hkeyProgID);

    //
    // IShellPropSheetExt methods
    //

    STDMETHOD(AddPages)(
        LPFNADDPROPSHEETPAGE lpfnAddPage,
        LPARAM lParam);

    STDMETHOD(ReplacePage)(
        UINT uPageID,
        LPFNADDPROPSHEETPAGE lpfnReplaceWith,
        LPARAM lParam);

    //
    // IContextMenu methods
    //

    STDMETHOD(QueryContextMenu)(
        HMENU hmenu,
        UINT indexMenu,
        UINT idCmdFirst,
        UINT idCmdLast,
        UINT uFlags);

    STDMETHOD(InvokeCommand)(
        LPCMINVOKECOMMANDINFO lpici);

    STDMETHOD(GetCommandString)(
        UINT_PTR    idCmd,
        UINT        uType,
        UINT*       pwReserved,
        LPSTR       pszName,
        UINT        cchMax);

private:

    HRESULT
    _GetFSObject(
        LPWSTR lpPath,
        UINT cbMaxPath
        );

    BOOL
    _IsShareableDrive(
        VOID
        );

    BOOL
    _OKToShare(
        VOID
        );

    ULONG           _uRefs;             // OLE reference count
    TCHAR           _szPath[MAX_PATH];
    BOOL            _fPathChecked;
    BOOL            _fOkToSharePath;
	BOOL			_fMultipleSharesSelected;
};

#endif // _SHARE_HXX_
