windows-nt/Source/XPSP1/NT/base/win32/fusion/appweek/host2/3host2.h
2020-09-26 16:20:57 +08:00

104 lines
2.4 KiB
C++

/*
*/
#pragma once
#include "mshtml.h"
#include "ihost.h"
#include "SxApwComPtr.h"
#include "atlwin.h"
#include <vector>
#include "FusionTrace.h"
#include "iuiview.h"
#include "SxApwWin.h"
#include "mshtmdid.h"
#include "comdef.h"
#include "exdisp.h"
extern _ATL_FUNC_INFO s_OnClickSignature;
class __declspec(uuid(CLSID_CSxApwHost_declspec_uuid))
CSxApwHost
:
public ATL::CComObjectRootEx<CComSingleThreadModel>,
public ATL::CComCoClass<CSxApwHost, &__uuidof(CSxApwHost)>,
public ISxApwHost,
//public IDispatch,
//public CSxApwHtmlEventSink
public ATL::IDispEventSimpleImpl<1, CSxApwHost, &DIID_HTMLElementEvents2>,
public ATL::IDispEventSimpleImpl<2, CSxApwHost, &DIID_HTMLElementEvents2>
{
typedef ATL::IDispEventSimpleImpl<1, CSxApwHost, &DIID_HTMLElementEvents2> EventDisp1;
typedef ATL::IDispEventSimpleImpl<2, CSxApwHost, &DIID_HTMLElementEvents2> EventDisp2;
public:
CSxApwHost() { }
BEGIN_COM_MAP(CSxApwHost)
COM_INTERFACE_ENTRY(ISxApwHost)
//COM_INTERFACE_ENTRY(IDispatch)
END_COM_MAP()
DECLARE_NO_REGISTRY();
void __stdcall OnClick1()
{
printf("%s\n", __FUNCTION__);
}
void __stdcall OnClick2()
{
printf("%s\n", __FUNCTION__);
}
BEGIN_SINK_MAP(CSxApwHost)
//SINK_ENTRY(1, DISPID_HTMLELEMENTEVENTS2_ONCLICK, OnClick1)
//SINK_ENTRY(2, DISPID_HTMLELEMENTEVENTS2_ONCLICK, OnClick2)
SINK_ENTRY_INFO(1, DIID_HTMLElementEvents2, DISPID_HTMLELEMENTEVENTS2_ONCLICK, OnClick1, &s_OnClickSignature)
SINK_ENTRY_INFO(2, DIID_HTMLElementEvents2, DISPID_HTMLELEMENTEVENTS2_ONCLICK, OnClick2, &s_OnClickSignature)
END_SINK_MAP()
virtual void OnClick()
{
}
STDMETHOD(SetDataSource)(
LPCWSTR
);
STDMETHOD(CreateView)(
LPCWSTR
);
STDMETHOD(DestroyView)(
LPCWSTR
) { return S_OK; }
STDMETHOD(RunQuery)(
LPCWSTR
);
STDMETHOD(OnNextRow)(
int nColumns,
const LPCWSTR columns[]
);
STDMETHOD(OnRowCountEstimateAvailable)(
int
);
STDMETHOD(OnQueryDone)(
) { return S_OK; }
STDMETHOD(InformSchema)(
const SxApwColumnInfo rgColumnInfo[],
int nColumnCount
);
HRESULT Main();
private:
typedef std::vector<CSxApwComPtr<ISxApwUiView> > Views_t;
Views_t m_views;
CSxApwComPtr<ISxApwDataSource> m_dataSource;
};