⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mapxdataset.h

📁 mapx程序的源代码
💻 H
字号:
// MapXDataset.h : Declaration of the CMapXSampleDataset

#ifndef __MAPXDATASET_H_
#define __MAPXDATASET_H_

#include "resource.h"       // main symbols
#include "mdatasetint.i"
#include "mmapxcolumninfo.i"

// TODO: change this ID to be the ID of your dataset.
#define DATASETENGINE_ID 2000

class CMapXColumnInfoContainer
{
public:
  IClassFactory* m_pColumnInfoFactory;
  long m_lCols;
  IMMapXColumnInfo **cols;
  void InitColumns(long);
  void InitColumn(long, BSTR, VARTYPE, long);
  void DestroyColumns();
  CMapXColumnInfoContainer() {m_lCols = 0; cols = NULL; m_pColumnInfoFactory=NULL;}
  ~CMapXColumnInfoContainer();
};

/////////////////////////////////////////////////////////////////////////////
// CMapXSampleDataset
class ATL_NO_VTABLE CMapXSampleDataset : 
	public CComObjectRootEx<CComSingleThreadModel>,
	public CComCoClass<CMapXSampleDataset, &CLSID_MapXSampleDataset>,
  public IMMapXStaticDataset,
  public IMMapXDynamicDataset,
  public IMMapXColumnInfoContainer,
  public CMapXColumnInfoContainer
{
protected:

public:
	CMapXSampleDataset();
  ~CMapXSampleDataset();

DECLARE_REGISTRY(CMapXSampleDataset, "CMapXSampleDataset1.0", "CMapXSampleDataset", 0, 0)
DECLARE_NOT_AGGREGATABLE(CMapXSampleDataset)

BEGIN_COM_MAP(CMapXSampleDataset)
    COM_INTERFACE_ENTRY2(IMMapXDataset, IMMapXDynamicDataset)
    COM_INTERFACE_ENTRY(IMMapXStaticDataset)
	COM_INTERFACE_ENTRY(IMMapXDynamicDataset)
	COM_INTERFACE_ENTRY(IMMapXColumnInfoContainer)
END_COM_MAP()

// IMapXStaticDataset
public:
  STDMETHOD(Init)(short sType, VARIANT* pvSourceData, VARIANT* pvFields);
	STDMETHOD(GetSample)(long lColNum, long lNumSampleValuesRequested, VARTYPE vtRequested, VARIANT * pvarData, long * pNumRecordsFetched);
	STDMETHOD(FetchData)(long lColNum, long lIdxRow, VARTYPE vtRequested, VARIANT* pvarData, BOOL * pbNoMoreData);
	STDMETHOD(BeginFetch)();
	STDMETHOD(EndFetch)();

// IMMapXDynamicDataset
public:
	STDMETHOD(FetchData)(long lColNum, long lKeyColNum, BSTR bstrKey, long lRefineColNum, BSTR bstrRefiningKey, VARTYPE vtRequested, VARIANT *pvarData);

// IMMapXColumnInfoContainer
public:
  STDMETHOD(GetColumnInfoByName)(BSTR bstrColumnName, IMMapXColumnInfo** ppIMMapXColumnInfo);
  STDMETHOD(GetColumnInfoByIndex)(long lIndex, IMMapXColumnInfo** ppIMMapXColumnInfo);
  STDMETHOD(GetColumnInfoEnumerator)(IMEnumMapXColumnInfo** ppIMEnumMapXColumnInfo);
};

class CMEnumMapXColumnInfo : 
	public CComObjectRoot,
	public CComEnumImpl<IMEnumMapXColumnInfo, &IID_IMEnumMapXColumnInfo, 
		IMMapXColumnInfo*, _CopyInterface<IMMapXColumnInfo> >
{
// Construction/Destruction
public:
	CMEnumMapXColumnInfo() {};
	virtual ~CMEnumMapXColumnInfo() {};

	typedef CComEnumImpl<IMEnumMapXColumnInfo, &IID_IMEnumMapXColumnInfo, IMMapXColumnInfo*, _CopyInterface<IMMapXColumnInfo> > CComEnumBase;

	// ATL's COM map, synthesizes QI
	BEGIN_COM_MAP(CMEnumMapXColumnInfo)
		COM_INTERFACE_ENTRY_IID(IID_IMEnumMapXColumnInfo, CComEnumBase)
	END_COM_MAP()

	DECLARE_NOT_AGGREGATABLE(CMEnumMapXColumnInfo)

// Unimplemented
private:
	CMEnumMapXColumnInfo(const CMEnumMapXColumnInfo &);
	CMEnumMapXColumnInfo &operator=(const CMEnumMapXColumnInfo &);

};

#endif //__MAPXDATASET_H_

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -