社区
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分!
...全文
90
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
编程的曲折经历
因为
ADO
本身也是一系列组件,因此,
ATL
项目要引入
ADO
类
型库,我是用以下语句引入的(假设Windows安装在C盘):#import "C:/Program Files/Common Files/System/
ADO
/ms
ado
15.dll" no_namespace named_guids rename...
Atl
与WTL结合创建COM组件用户界面
简介:
Atl
是微软的C++模板库,用于简化COM组件开发,而WTL是微软提供的用于Windows GUI应用...首先建立
Atl
工程,并集成WTL来创建窗口和控件。然后定义并
实现
一个
Atl
COM接口,利用WTL
实现
界面生成和业务逻辑...
数据库操作组件的
ATL
实现
数据库操作组件的
ATL
实现
COM表示Component Object Model即组件
对象
模型,是Microsoft生成软件组件的标准。它最大的优点在于它是二进制兼容软件组件的规范,即不论用什么语言生成COM组件,它都与其它COM组件兼容和...
基于
ADO
的Access数据库
访问
封装
类
设计与
实现
Microsoft Jet(Joint Engine Technology)最初为 Microsoft Access 设计,后扩展支持 Excel、FoxPro 等多种数据源。...Jet 引擎采用三层架构:graph TBA[应用程序] --> B[OLE DB Provider for Jet]C --> D[MDB 文件]
ATL
3,248
社区成员
48,531
社区内容
发帖
与我相关
我的任务
ATL
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
复制链接
扫一扫
分享
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章