📄 mydataobject.h
字号:
// MyDataObject.h : Declaration of the CMyDataObject
#ifndef __MYDATAOBJECT_H_
#define __MYDATAOBJECT_H_
#include "resource.h" // main symbols
#include "SimpleDataObject.h"
#include "IGetAsADORecordsetImpl.h"
#include "IGetAsOLEDBRowsetImpl.h"
class CDataObjectRowset;
/////////////////////////////////////////////////////////////////////////////
// CMyDataObject
class ATL_NO_VTABLE CMyDataObject :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CMyDataObject, &CLSID_MyDataObject>,
public IMyDataObject,
public IGetAsADORecordsetImpl<CMyDataObject>,
public IGetAsOLEDBRowsetImpl<CMyDataObject>
{
public:
friend class CDataObjectRowset;
CMyDataObject();
~CMyDataObject();
DECLARE_REGISTRY_RESOURCEID(IDR_MYDATAOBJECT)
DECLARE_PROTECT_FINAL_CONSTRUCT()
BEGIN_COM_MAP(CMyDataObject)
COM_INTERFACE_ENTRY(IMyDataObject)
COM_INTERFACE_ENTRY(_IGetAsOLEDBRowset)
COM_INTERFACE_ENTRY_CHAIN(IGetAsADORecordsetImpl<CMyDataObject>)
END_COM_MAP()
// IMyDataObject
public:
STDMETHOD(SetColumnSize)(
/* [in] */ long columnSize);
STDMETHOD(AddColumn)(
/* [in] */ BSTR columnName,
/* [out, retval] */ long *index);
STDMETHOD (GetColumnName)(
/* [in] */ long index,
/* [out, retval] */ BSTR *columnName);
STDMETHOD(AddRow)(
/* [out, retval] */ long *index);
STDMETHOD(RemoveRow)(
/* [in] */ long index);
STDMETHOD(Depth)(
/* [out, retval] */ long *depth);
STDMETHOD(Width)(
/* [out, retval] */ long *width);
STDMETHOD(SetAt)(
/* [in] */ long rowIndex,
/* [in] */ long columnIndex,
/* [in] */ BSTR value);
STDMETHOD(GetAt)(
/* [in] */ long rowIndex,
/* [in] */ long columnIndex,
/* [out, retval] */ BSTR *value);
STDMETHOD(AsRowset)(
/* [in] */ IUnknown *pUnkCreator,
/* [in] */ IUnknown *pUnkOuter,
/* [in] */ REFIID riid,
/* [out] */ LONG *pcRowsAffected,
/* [out, iid_is(riid)] */ IUnknown **ppRowset);
long AddRow();
private :
size_t m_numCols;
size_t m_numRows;
size_t m_allocatedRows;
size_t m_rowSize;
size_t m_columnSize;
CSimpleValArray<char *> m_columnNames;
char *m_pData;
char *GetAt(
const size_t row,
const size_t col);
void SetAt(
const size_t row,
const size_t col,
const char *const pNewData,
const size_t length);
char *CreateTable();
bool CheckRowAndColumnValid(
const size_t row,
const size_t column);
bool CheckRowValid(const size_t row);
bool CheckColumnValid(const size_t column);
};
#endif //__MYDATAOBJECT_H_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -