社区
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分!
...全文
104
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的高手都不上网了吗?
教程系列
本博客精选了C++及MFC编程领域的经典资料与教程,覆盖了从C++基础知识到MFC高级应用的内容。其中包括C++语言特性、面向
对象
编程、MFC框架解析、控件开发等多个方面。
程序员技术升级攻略(转)
本文提供了
一个
从编程新手到高级程序员的实战技术指南,涵盖了从脚本语言到系统架构的全面内容,强调动手实践和理解技术背后的原理。
Windows Mobile下SQLite的Native C++轻量封装实践
本文详述在Windows Mobile 6.5(ARMV4I/CE 5.2)平台下,基于SQLite源码直编译、纯C接口导出、CE临界区线程同步、LocalAlloc内存管理的Native C++轻量封装实践。重点解决UNC路径转换、WAL日志在CF卡上的可靠性适配、BLOB零拷贝读写及SQLite错误码到CE语义的映射。
实现
<12KB代码体积、<8KB常驻内存、零托管堆依赖,保障工业PDA等嵌入式设备离线数据强一致性。
springboot测试实例(JUnit 5 + SpringBootTest + MockMvc + H2 + Mockito).rar
springboot测试实例(JUnit 5 + SpringBootTest + MockMvc + H2 + Mockito).rar本文件为https://andyy.blog.csdn.net/article/details/160367956?spm=1011.2415.3001.5331博客所对应的源代码文件,适合新手小白入门学习
全域GEO智能推广系统 企业线上获客源码
全域GEO智能推广系统 企业线上获客源码 多平台排名优化搭建
ATL
3,248
社区成员
48,530
社区内容
发帖
与我相关
我的任务
ATL
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
复制链接
扫一扫
分享
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章