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.
111 lines
2.3 KiB
111 lines
2.3 KiB
/*
|
|
*/
|
|
#pragma once
|
|
|
|
#include <set>
|
|
#include <assert.h>
|
|
#include <string>
|
|
#include "mshtml.h"
|
|
#include "ihost.h"
|
|
#include "SxApwComPtr.h"
|
|
#include "atlwin.h"
|
|
#include "FusionTrace.h"
|
|
#include "iuiview.h"
|
|
#include "SxApwWin.h"
|
|
#include "HostFrame.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:
|
|
CSxApwHost() { }
|
|
|
|
BEGIN_COM_MAP(CSxApwHost)
|
|
COM_INTERFACE_ENTRY(ISxApwHost)
|
|
END_COM_MAP()
|
|
|
|
DECLARE_NO_REGISTRY();
|
|
|
|
STDMETHOD(SetDataSource)(
|
|
LPCWSTR
|
|
);
|
|
|
|
STDMETHOD(CreateView)(
|
|
LPCWSTR
|
|
);
|
|
|
|
STDMETHOD(DestroyView)(
|
|
LPCWSTR
|
|
);
|
|
|
|
STDMETHOD(RunQuery)(
|
|
LPCWSTR
|
|
);
|
|
|
|
STDMETHOD(OnNextRow)(
|
|
int nColumns,
|
|
const LPCWSTR columns[]
|
|
);
|
|
|
|
STDMETHOD(OnRowCountEstimateAvailable)(
|
|
int
|
|
);
|
|
|
|
STDMETHOD(OnQueryDone)(
|
|
);
|
|
|
|
STDMETHOD(InformSchema)(
|
|
const SxApwColumnInfo rgColumnInfo[],
|
|
int nColumnCount
|
|
);
|
|
|
|
HRESULT Main();
|
|
|
|
private:
|
|
void MdiTile();
|
|
|
|
class CView
|
|
{
|
|
public:
|
|
CView() { }
|
|
~CView() { }
|
|
|
|
CView(const CView& that) :
|
|
m_string(that.m_string)
|
|
{
|
|
assert(that.m_axMdiChild.m_hWnd == NULL);
|
|
assert(that.m_iuiview == NULL);
|
|
}
|
|
|
|
void operator=(const CView& that)
|
|
{
|
|
this->m_string = that.m_string;
|
|
assert(this->m_axMdiChild.m_hWnd == NULL);
|
|
assert(that.m_axMdiChild.m_hWnd == NULL);
|
|
assert(this->m_iuiview == NULL);
|
|
assert(that.m_iuiview == NULL);
|
|
}
|
|
|
|
bool operator<(const CView& that) const
|
|
{
|
|
return _wcsicmp(this->m_string.c_str(), that.m_string.c_str()) < 0;
|
|
}
|
|
|
|
std::wstring m_string;
|
|
CSxApwHostAxMdiChild m_axMdiChild;
|
|
CSxApwComPtr<ISxApwUiView> m_iuiview;
|
|
};
|
|
|
|
typedef std::set<CView> CViews;
|
|
typedef std::pair<CViews::iterator, bool> CViewsConditionalInsertPair;
|
|
|
|
CViews m_views;
|
|
CSxApwComPtr<ISxApwDataSource> m_dataSource;
|
|
CSxApwHostMdiClient m_mdiClient;
|
|
};
|