Welcome

首页 / 软件开发 / VC.NET / COM组件开发实践(四)---From C++ to COM :Part 1

COM组件开发实践(四)---From C++ to COM :Part 12010-05-29 博客园 Phinecos(洞庭散人)一,C++客户重用C++对象

假设已经有一个可以重用的类,我们就可以在自己的程序中去重用它,只需要将其定义和实现文件加入到我们自己的工程中,并且在使用它的文件中包含此类的定义文件就可以了,这也是我们最常用的C++标准重用方法。就拿我自己来说,在CodeProject上遇到比较好的控件代码,都是这样直接用到自己的项目中来的。

下面就给出我这个系列的第一个代码示例,在接下来的几篇文章中,将基于此代码不断进行改进,一步步从C++走向COM.

简单介绍下我们要重用的C++对象,它是一个简单的类似数据库的对象,用来管理内存中的数据,它包含一个指向“数据库”中所有表的指针数组,表实际是一个字符串数组,每个数组元素表示表格的一行。另外这个类还包含有一个数据表表名的数组。

DBSRV.h文件:

typedef long HRESULT;//模拟COM中的HRESULT
//内存数据库类
class CDB
{
// Interfaces
public:
// Interface for data access
HRESULT Read(short nTable, short nRow, LPTSTR lpszData);//读数据,nTable指定数据表,nRow指定数据行
HRESULT Write(short nTable, short nRow, LPCTSTR lpszData);//写数据,nTable指定数据表,nRow指定数据行
// Interface for database management
HRESULT Create(short &nTable, LPCTSTR lpszName);//创建数据表,表名为lpszName
HRESULT Delete(short nTable);//删除数据表
// Interface for database information
HRESULT GetNumTables(short &nNumTables);//获取数据表个数
HRESULT GetTableName(short nTable, LPTSTR lpszName);//获取指定数据表表名,nTable为数据表索引号
HRESULT GetNumRows(short nTable, short &nRows);//获取指定数据表的数据行数,nTable为数据表索引号,nRows保存返回的行数
// Implementation
private:
CPtrArraym_arrTables;//指向“数据库”中所有表的指针数组
CStringArray m_arrNames; //数据表名称数组
public:
~CDB();
};