// AtlHelloDisp.h : Declaration of the CAtlHelloDisp

#ifndef __ATLHELLODISP_H_
#define __ATLHELLODISP_H_

#include "resource.h"       // main symbols
#include <comdef.h>

/////////////////////////////////////////////////////////////////////////////
// CAtlHelloDisp
class ATL_NO_VTABLE CAtlHelloDisp : 
	public CComObjectRootEx<CComSingleThreadModel>,
	public CComCoClass<CAtlHelloDisp, &CLSID_AtlHelloDisp>,
	public IDispatchImpl<IAtlHelloDisp, &IID_IAtlHelloDisp, &LIBID_ATLHELLOAULib>
{
public:

	_bstr_t m_bstrHelloMsg ;

	CAtlHelloDisp()
	{
	    m_bstrHelloMsg = SysAllocString(L"Hello, world");		
	}

	~CAtlHelloDisp()
	{
	    SysFreeString (m_bstrHelloMsg) ;		
	}

DECLARE_REGISTRY_RESOURCEID(IDR_ATLHELLODISP)
DECLARE_NOT_AGGREGATABLE(CAtlHelloDisp)
 
BEGIN_COM_MAP(CAtlHelloDisp)
	COM_INTERFACE_ENTRY(IAtlHelloDisp)
	COM_INTERFACE_ENTRY(IDispatch)
END_COM_MAP()

// IAtlHelloDisp
public:
	STDMETHOD(SayHello)();
	STDMETHOD(get_HelloMessage)(/*[out, retval]*/ BSTR *pVal);
	STDMETHOD(put_HelloMessage)(/*[in]*/ BSTR newVal);
};

#endif //__ATLHELLODISP_H_
