//void CALLBACK TimerProc (HWND hWnd, UINT umsg, UINT id, DWORD time) ;
unsigned long __stdcall TimerProc (void *pAdviseHolder) ;

class CTimeData : public IDataObject
{

    public:
        long	            m_RefCount ; 
		LPADVISESINK		m_pAdvSink ;

		IUnknown *			m_pFreeThreadedMarshaler ;
		BOOL				m_bBothThreadingModels ;

		CRITICAL_SECTION	m_csDAdvise ;

		HANDLE				m_hThread ;
		DWORD				m_ThreadID ;

    public:
     	
        CTimeData(BOOL);
        ~CTimeData(void);

        //IDropTarget interface members
        STDMETHODIMP	QueryInterface(REFIID, LPVOID FAR *);
        STDMETHODIMP_(ULONG)	AddRef(void);
        STDMETHODIMP_(ULONG)	Release(void);

        STDMETHODIMP GetData (LPFORMATETC, LPSTGMEDIUM) ;
    	STDMETHODIMP GetDataHere (LPFORMATETC, LPSTGMEDIUM) ;
    	STDMETHODIMP QueryGetData (LPFORMATETC) ;
    	STDMETHODIMP GetCanonicalFormatEtc (LPFORMATETC, LPFORMATETC) ;
    	STDMETHODIMP SetData (LPFORMATETC, STGMEDIUM FAR *, BOOL) ;
    	STDMETHODIMP EnumFormatEtc (DWORD, LPENUMFORMATETC FAR*) ;

    	STDMETHODIMP DAdvise (FORMATETC FAR*, DWORD, LPADVISESINK, DWORD FAR*) ;
    	STDMETHODIMP DUnadvise  (DWORD) ;
    	STDMETHODIMP EnumDAdvise  (LPENUMSTATDATA FAR*);  

//		void SendDataChangeToClient ( ) ;

};

