/* */ #pragma once #include #include #include #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, public ATL::CComCoClass, 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 m_iuiview; }; typedef std::set CViews; typedef std::pair CViewsConditionalInsertPair; CViews m_views; CSxApwComPtr m_dataSource; CSxApwHostMdiClient m_mdiClient; };