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
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_
|