Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

195 lines
6.6 KiB

/******************************************************************************
Copyright (c) 2000 Microsoft Corporation
Module Name:
Behaviors.h
Abstract:
This file contains the declaration of various classes associated with
binary behaviors.
Revision History:
Davide Massarenti (Dmassare) 06/06/2000
created
******************************************************************************/
#if !defined(__INCLUDED___PCH___BEHAVIORS_H___)
#define __INCLUDED___PCH___BEHAVIORS_H___
#include <mshtmlc.h>
class CPCHHelpCenterExternal;
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
class ATL_NO_VTABLE CPCHElementBehaviorFactory : // Hungarian: hcebf
public CComObjectRootEx<MPC::CComSafeMultiThreadModel>,
public IServiceProvider,
public IElementBehaviorFactory
{
CPCHHelpCenterExternal* m_parent;
public:
BEGIN_COM_MAP(CPCHElementBehaviorFactory)
COM_INTERFACE_ENTRY(IServiceProvider)
COM_INTERFACE_ENTRY(IElementBehaviorFactory)
END_COM_MAP()
CPCHElementBehaviorFactory();
void Initialize( /*[in]*/ CPCHHelpCenterExternal* parent );
//////////////////////////////////////////////////////////////////////
//
// IServiceProvider
//
STDMETHOD(QueryService)( REFGUID guidService, REFIID riid, void **ppv );
//
// IElementBehaviorFactory
//
STDMETHOD(FindBehavior)( /*[in]*/ BSTR bstrBehavior ,
/*[in]*/ BSTR bstrBehaviorUrl ,
/*[in]*/ IElementBehaviorSite* pSite ,
/*[out]*/ IElementBehavior* *ppBehavior );
};
/////////////////////////////////////////////////////////////////////////////
class ATL_NO_VTABLE CPCHBehavior :
public CComObjectRootEx<MPC::CComSafeMultiThreadModel>,
public IElementBehavior
{
public:
struct EventDescription
{
LPCWSTR szName;
DISPID id;
};
protected:
typedef HRESULT (CPCHBehavior::*CLASS_METHOD)( DISPID, DISPPARAMS*, VARIANT* );
struct EventSink : public IDispatch
{
long m_lRef;
CPCHBehavior* m_Parent;
CComPtr<IDispatch> m_elem;
CComBSTR m_bstrName;
CLASS_METHOD m_pfn;
bool m_fAttached;
DISPID m_idNotifyAs;
EventSink( CPCHBehavior* parent );
~EventSink();
HRESULT Attach();
HRESULT Detach();
//
// IUnknown
//
STDMETHOD_(ULONG, AddRef)();
STDMETHOD_(ULONG, Release)();
STDMETHOD(QueryInterface)( REFIID iid, void ** ppvObject );
//
// IDispatch
//
STDMETHOD(GetTypeInfoCount)( UINT* pctinfo );
STDMETHOD(GetTypeInfo)( UINT itinfo ,
LCID lcid ,
ITypeInfo* *pptinfo );
STDMETHOD(GetIDsOfNames)( REFIID riid ,
LPOLESTR* rgszNames ,
UINT cNames ,
LCID lcid ,
DISPID* rgdispid );
STDMETHOD(Invoke)( DISPID dispidMember ,
REFIID riid ,
LCID lcid ,
WORD wFlags ,
DISPPARAMS* pdispparams ,
VARIANT* pvarResult ,
EXCEPINFO* pexcepinfo ,
UINT* puArgErr );
static HRESULT CreateInstance( /*[in]*/ CPCHBehavior* parent, /*[out]*/ EventSink*& pObj );
};
typedef std::list< EventSink* > SinkList;
typedef SinkList::iterator SinkIter;
typedef SinkList::const_iterator SinkIterConst;
////////////////////////////////////////
CPCHHelpCenterExternal* m_parent;
CComPtr<IElementBehaviorSiteOM> m_siteOM;
CComPtr<IHTMLElement> m_elem;
CComPtr<IHTMLElement2> m_elem2;
SinkList m_lstEventSinks;
bool m_fRTL;
bool m_fTrusted;
bool m_fSystem;
////////////////////////////////////////
HRESULT AttachToEvent( /*[in] */ LPCWSTR szName ,
/*[in] */ CLASS_METHOD pfn ,
/*[in] */ IDispatch* elem = NULL ,
/*[out]*/ IDispatch* *pVal = NULL ,
/*[in] */ DISPID id = -1 );
HRESULT AttachToEvents( /*[in] */ const EventDescription* pEvents ,
/*[in] */ CLASS_METHOD pfn ,
/*[in] */ IDispatch* elem = NULL );
HRESULT CreateEvent ( /*[in]*/ LPCWSTR szName, /*[out]*/ LONG& lEventCookie );
HRESULT GetEventObject ( /*[out]*/ CComPtr<IHTMLEventObj>& ev );
HRESULT CreateEventObject( /*[out]*/ CComPtr<IHTMLEventObj>& ev );
HRESULT FireEvent ( /*[in ]*/ IHTMLEventObj* ev, /*[in]*/ LONG lEventCookie );
HRESULT FireEvent ( /*[in]*/ LONG lEventCookie );
HRESULT CancelEvent( /*[in]*/ IHTMLEventObj* ev = NULL, /*[in]*/ VARIANT* pvReturnValue = NULL, /*[in]*/ VARIANT_BOOL fCancelBubble = VARIANT_TRUE );
////////////////////////////////////////
HRESULT GetEvent_SrcElement( /*[in]*/ CComPtr<IHTMLElement>& elem );
////////////////////////////////////////
HRESULT GetAsVARIANT ( /*[in]*/ BSTR value, /*[out, retval]*/ VARIANT *pVal );
HRESULT GetAsVARIANT ( /*[in]*/ IDispatch* value, /*[out, retval]*/ VARIANT *pVal );
HRESULT GetAsIDISPATCH( /*[in]*/ IDispatch* value, /*[out, retval]*/ IDispatch* *pVal );
////////////////////////////////////////
public:
BEGIN_COM_MAP(CPCHBehavior)
COM_INTERFACE_ENTRY(IElementBehavior)
END_COM_MAP()
CPCHBehavior();
void Initialize( /*[in]*/ CPCHHelpCenterExternal* parent );
//
// IElementBehavior
//
STDMETHOD(Init )( /*[in]*/ IElementBehaviorSite* pBehaviorSite );
STDMETHOD(Notify)( /*[in]*/ LONG lEvent, /*[in/out]*/ VARIANT* pVar );
STDMETHOD(Detach)( );
};
/////////////////////////////////////////////////////////////////////////////
#endif // !defined(__INCLUDED___PCH___BEHAVIORS_H___)