mirror of https://github.com/tongzx/nt5src
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.
103 lines
2.4 KiB
103 lines
2.4 KiB
/*
|
|
*/
|
|
#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;
|
|
};
|