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.
 
 
 
 
 
 

94 lines
2.5 KiB

// BrowCap.h : Declaration of the CBrowserCap
#ifndef __BROWSERCAP_H_
#define __BROWSERCAP_H_
#include "resource.h" // main symbols
#include <asptlb.h> // Active Server Pages Definitions
#include "Lock.h"
/////////////////////////////////////////////////////////////////////////////
// CBrowserFactory
// --- Create BrowsCap objects from cache.
class CBrowserFactory : public CComClassFactory
{
LONG m_cRefs;
public:
HRESULT STDMETHODCALLTYPE QueryInterface(const IID &, void **);
ULONG STDMETHODCALLTYPE AddRef();
ULONG STDMETHODCALLTYPE Release();
HRESULT STDMETHODCALLTYPE CreateInstance(IUnknown *, const IID &, void **);
};
/////////////////////////////////////////////////////////////////////////////
// CBrowserCap
class ATL_NO_VTABLE CBrowserCap :
public CComObjectRootEx<CComMultiThreadModel>,
public CComCoClass<CBrowserCap, &CLSID_BrowserCap>,
public ISupportErrorInfo,
public IDispatchImpl<IBrowserCap, &IID_IBrowserCap, &LIBID_BrowserType>
{
public:
CBrowserCap();
~CBrowserCap();
public:
DECLARE_REGISTRY_RESOURCEID(IDR_BROWSERCAP)
DECLARE_GET_CONTROLLING_UNKNOWN()
DECLARE_CLASSFACTORY_EX(CBrowserFactory)
BEGIN_COM_MAP(CBrowserCap)
COM_INTERFACE_ENTRY(IBrowserCap)
COM_INTERFACE_ENTRY(IDispatch)
COM_INTERFACE_ENTRY(ISupportErrorInfo)
COM_INTERFACE_ENTRY_AGGREGATE(IID_IMarshal, m_pUnkMarshaler.p)
END_COM_MAP()
HRESULT FinalConstruct()
{
return CoCreateFreeThreadedMarshaler(
GetControllingUnknown(), &m_pUnkMarshaler.p );
}
void FinalRelease()
{
m_pUnkMarshaler.Release();
}
// methods to build property DB
void AddProperty(TCHAR *szName, TCHAR *szValue, BOOL fOverwriteProperty = FALSE);
// Clone the object
HRESULT Clone(CBrowserCap **ppBrowserCapCopy);
// ISupportsErrorInfo
STDMETHOD(InterfaceSupportsErrorInfo)(REFIID riid);
// Load string resource
void LoadString(UINT, TCHAR *szText);
public:
// IUnknown methods
HRESULT STDMETHODCALLTYPE QueryInterface(const IID &, void **);
ULONG STDMETHODCALLTYPE AddRef();
ULONG STDMETHODCALLTYPE Release();
// IDispatch Methods
STDMETHOD(Invoke)(DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*);
STDMETHOD(GetIDsOfNames)( REFIID, LPOLESTR*, UINT, LCID, DISPID* );
//Active Server Pages Methods
STDMETHOD(get_Value)(BSTR, /*[out, retval]*/ VARIANT *pVal);
private:
DISPID DispatchID( LPOLESTR );
CComPtr< IUnknown > m_pUnkMarshaler;
TSafeStringMap< CComVariant > m_strmapProperties;
};
#endif //__BROWSERCAP_H_