社区
ATL
帖子详情
200分!(不过不知道怎么给200分)如何用ATL实现类ADO的对象树?比如通过 A.B.C 来访问一个对象?
coinicon
2004-08-04 12:31:44
如何用ATL实现类ADO的对象树?
此问题包括两个方面内容:
1。如何通过一个接口 A 访问另一个接口 B,且只能通过 A 访问,从表现上来看,B 为 A 在对象树中的子节点?
2。如何实现对象(非基本数据类型)的集合、枚举?比如ADO中的Fields,RecordSets等。
两个问题各100分!
...全文
73
6
打赏
收藏
200分!(不过不知道怎么给200分)如何用ATL实现类ADO的对象树?比如通过 A.B.C 来访问一个对象?
如何用ATL实现类ADO的对象树? 此问题包括两个方面内容: 1。如何通过一个接口 A 访问另一个接口 B,且只能通过 A 访问,从表现上来看,B 为 A 在对象树中的子节点? 2。如何实现对象(非基本数据类型)的集合、枚举?比如ADO中的Fields,RecordSets等。 两个问题各100分!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
jim3000
2004-08-07
打赏
举报
回复
做这种集合类很常见的,很简单,你看看书就明白了。
假如你实现了一个点组件(CPoint,接口为IPoint),想实现一个点集合组件(CPoints,接口为IPoints),可以这样做:
在Points.h文件里定义一个点的数组类
typedef std::vector<ISPoint*> VecPoints;
在CPoints中定义成员变量,用于保存点接口
VecPoints m_vecPoints;
在IPoints接口中实现几个基本的方法和属性:
Add([in]IPoint* pPoint); //增加一个新点,引用记数+1
Remove([in]long Index); //删除指定的点,引用记数-1
Count([out, retval] long *pVal);//取的点的个数
Item([in]long Index, [out, retval] IPoint* *pVal);//返回指定的项,引用记数+1
RemoveAll();//所有的引用记数-1
要注意引用记数的增加和释放!!在FinalRelease()中要调用RemoveAll()
coinicon
2004-08-07
打赏
举报
回复
非常感谢两位!
-------------------
mg1616(内网网站:neweb.dhcn.net) :
只能通过 A 访问 B 恐怕不可能
例如Office程序的对象,一般都是以Application为对象树的根,其他对象只能通过Application访问或创建,如何类似实现呢?
-------------------
jim3000(jim):
2.定义这个对象的集合接口并实现,定义枚举类型在接口中直接应用
有无具体例子提供呢?我就是卡在实现对象集合的问题上了,写的代码可能不对,编译都通不过。
=========
再次感谢二位!!
coinicon
2004-08-07
打赏
举报
回复
谢谢!
对于集合对象,必须实现的方法、属性有Count、Item、_NewEnum,对于Count、Item以及附加的Add,Remove,RemoveAll等方法,实现应该不难,但对于_NewEnum,则有些困难,因_NewEnum得到的IEnumVARIANT必须实现Clone等方法。
jim3000(jim)的实现,需要自己手动写较多代码,且容易出错,而ATL框架中提供了辅助类,如ICollectionOnSTLImpl,_Copy,_CopyInterface,我的意思是,如何利用这些辅助类在ATL的框架内快速简洁地实现对象集合?
还望jim3000(jim)不奢指教。
jim3000
2004-08-06
打赏
举报
回复
这是ATL很基本的问题了,所以高手懒得回答。
1.将B以包容或聚合的方式在A中实现,将C以包容或聚合的方式在B中实现
2.定义这个对象的集合接口并实现,定义枚举类型在接口中直接应用
mg1616
2004-08-06
打赏
举报
回复
1。在接口A之前声明接口B,A的属性类型为接口B,但只能通过 A 访问 B 恐怕不可能。
2。对象集合应该是接口属性加参数,作为对象的索引值,比如A.B[1],或者A.B["ID"],枚举就有待研究了
coinicon
2004-08-06
打赏
举报
回复
没人回答,难道csdn的高手都不上网了吗?
VC++数据库编程三部教学文档+源代码
9.1.3
ADO
对象
模型... 263 9.1.4
ADO
编程... 266 9.2
ADO
的数据库
访问
规范... 266 9.3
ADO
数据库编程实例... 267 9.3.1 实例概述... 267 9.3.2 实例
实现
过程... 268 9.3.3 运行
ADO
Demo工程... 299 9.3.4 ...
我的
ATL
/
ADO
编程的曲折经历
我在用VC6的
ATL
作
一个
组件,它内部通过
ADO
访问
Access数据库。因为
ADO
本身也是一系列组件,因此,
ATL
项目要引入
ADO
类
型库,我是用以下语句引入的(假设Windows安装在C盘):#import "C:\Program Files\Common...
数据库操作组件的
ATL
实现
数据库操作组件的
ATL
实现
COM表示Component Object Model即组件
对象
模型,是Microsoft生成软件组件的标准。它最大的优点在于它是二进制兼容软件组件的规范,即不论用什么语言生成COM组件,它都与其它COM组件兼容和...
ADO
.NET 跟踪数据
访问
简介 自 ODBC Trace 发布以来,我一直在期待面向数据
访问
的良好的通用内置跟踪工具。OLE DB 有许多不同
类
型的跟踪方式;我想到的两个是与 Visual Studio
分
析器兼容的工具和
ATL
TRACE(用于 A...
VC/MFC Q&A
200
409
当然,不能使用CStdioFile的
类
,因为他不支持UNICODE的读写,我做的
一个
给你参考 #ifndef __TEXTFILE_H #define__TEXTFILE_H class CTextFile : public CFile { public: virtual BOOL ReadString(CString& rString...
ATL
3,245
社区成员
48,539
社区内容
发帖
与我相关
我的任务
ATL
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
复制链接
扫一扫
分享
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章