/*++

Copyright (c) 1996  Microsoft Corporation

Module Name:

    faxsnapin.h

Abstract:

    This header is the root ATL class for the fax snapin, 
    and contains misc junk. This was originally generated by
    VC++. It inherits it's implementation of IComponentData from
    faxcompd.h.

Environment:

    WIN32 User Mode

Author:

    Darwin Ouyang (t-darouy) 30-Sept-1997

--*/

// FaxSnapin.h : Declaration of the CFaxSnapin

#ifndef __FAXSNAPIN_H_
#define __FAXSNAPIN_H_

#include "resource.h"           // main symbols
#include "faxadmin.h"

#include "faxcomp.h"            // IComponent
#include "faxcompd.h"           // IComponentData
#include "faxpersist.h"         // IPersistStream
#include "faxproppg.h"          // IExtendPropertyPage
#include "faxconmenu.h"         // IExtendContextMenu
#include "faxconbar.h"
#include "faxdataobj.h"         // IDataObject
#include "faxshelp.h"           // ISnapinHelp

/////////////////////////////////////////////////////////////////////////////
// CFaxSnapin
class ATL_NO_VTABLE CFaxSnapin : 
    public CComObjectRootEx<CComSingleThreadModel>,
    public CComCoClass<CFaxSnapin, &CLSID_FaxSnapin>,
    public IFaxSnapin,
    public CFaxComponentData,
    public CFaxPersistStream,
    public CFaxExtendPropertySheet,
    public CFaxExtendContextMenu,
    public CFaxExtendControlbar,
    public CFaxSnapinHelp,
    public CFaxSnapinTopic
{
public:
    CFaxSnapin()
    {
        DebugPrint(( TEXT("FaxSnapin Created") ));
        CFaxExtendContextMenu::m_pFaxSnapin = this;  
        CFaxExtendPropertySheet::m_pFaxSnapin = this;  
        CFaxPersistStream::m_pFaxSnapin = this;  
        CFaxExtendControlbar::m_pFaxSnapin = this;
        CFaxSnapinHelp::m_pFaxSnapin = this;
        CFaxSnapinTopic::m_pFaxSnapin = this;
    }
    ~CFaxSnapin()
    {
        DebugPrint(( TEXT("FaxSnapin Destroyed") ));
    }

    DECLARE_REGISTRY_RESOURCEID(IDR_FAXSNAPIN)
    DECLARE_NOT_AGGREGATABLE(CFaxSnapin)

    BEGIN_COM_MAP(CFaxSnapin)
        COM_INTERFACE_ENTRY(IFaxSnapin)  
        COM_INTERFACE_ENTRY(IComponentData)  
        COM_INTERFACE_ENTRY(IPersistStream)
        COM_INTERFACE_ENTRY(IExtendPropertySheet)
        COM_INTERFACE_ENTRY(IExtendContextMenu)
        COM_INTERFACE_ENTRY(IExtendControlbar)
        COM_INTERFACE_ENTRY(ISnapinHelp)
        COM_INTERFACE_ENTRY(IDisplayHelp)
    END_COM_MAP()

    // IFaxSnapin
    public:        
};

#endif //__FAXSNAPIN_H_
