class CBindStatusCallback : public IBindStatusCallback, public ICodeInstall 
{
  public:

    // Data members
	  
	DWORD           m_RefCount ;
	DWORD			m_LastSize ;
	CClientView*	m_pView ;
	char *			m_pBuf ;
	IBinding *		m_pBinding ;
	BOOL			m_BeganDownload ;

	// constructor/destructor
	
	CBindStatusCallback(CClientView *);
    ~CBindStatusCallback();
	
    // IUnknown methods

	STDMETHODIMP    QueryInterface(REFIID riid,void ** ppv);
    STDMETHODIMP_(ULONG)    AddRef() ;
    STDMETHODIMP_(ULONG)    Release() ;  

    // IBindStatusCallback methods
    
	STDMETHODIMP    OnStartBinding(DWORD grfBSCOption, IBinding* pbinding);
    STDMETHODIMP    GetPriority(LONG* pnPriority);
    STDMETHODIMP    OnLowResource(DWORD dwReserved);
    STDMETHODIMP    OnProgress(ULONG ulProgress, ULONG ulProgressMax, ULONG ulStatusCode,
                        LPCWSTR pwzStatusText);
    STDMETHODIMP    OnStopBinding(HRESULT hrResult, LPCWSTR szError);
    STDMETHODIMP    GetBindInfo(DWORD* pgrfBINDF, BINDINFO* pbindinfo);
    STDMETHODIMP    OnDataAvailable(DWORD grfBSCF, DWORD dwSize, FORMATETC *pfmtetc,
                        STGMEDIUM* pstgmed);
    STDMETHODIMP    OnObjectAvailable(REFIID riid, IUnknown* punk);

	// ICodeInstall methods

	STDMETHODIMP GetWindow (REFGUID , HWND *) ;
	STDMETHODIMP OnCodeInstallProblem (ULONG, LPCWSTR, LPCWSTR, DWORD) ;



} ;

