社区
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分!
...全文
113
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的高手都不上网了吗?
教程系列
ATL
之窗口
类
的秘密
ATL
提供了一些工具
类
以
实现
窗口.mht
ATL
的艺术(一)-
实现
简单COM
对象
--kruglinski的马桶.mht BUG: Tstcon 32 _exe 无法调用与参数
类
型 BSTR 方法.mht C C++程序设计 c&c++深层探索 c++ primer 3rd edition c++ 入门 c++ 和面向
对象
的数值计算 C++
VC++与Access图书管理系统开发实战:从数据库设计到MFC界面
实现
数据库操作是软件开发的核心基础,其原理在于通过结构化查询语言(SQL)对数据进行增删改查,确保数据的一致性与完整性。这项技术的价值在于为各
类
应用系统提供了可靠的数据存储与管理能力,广泛应用于从桌面软件到企业级系统的众多场景。在桌面应用开发领域,经典的“客户端+本地数据库”架构,如使用VC++的MFC框架配合Access数据库,是
实现
快速原型开发与深入理解底层逻辑的有效途径。本文以图书管理系统为例,详细解析了如何利用
ADO
技术进行数据库连接与操作,并通过MFC构建图形用户界面,涵盖了从表结构设计、SQL执行到
程序员技术升级攻略(转)
月光博客6月12日发表了《写给新手程序员的一封信》,翻译自《An open letter to those who want to start programming》,我的朋友(他在本站的id是Mailper)告诉我,他希望在酷壳上看到一篇更具操作性的文章。因为他也是喜欢编程和技术的家伙,于是,我让他把他的一些学习Python和Web编程的一些点滴总结一下。于是他给我发来了一些他的心得和经历,...
MFC超市库存系统:Windows桌面开发实战入门指南
MFC(Microsoft Foundation Classes)是深入理解Windows桌面应用开发原理的核心技术框架,其基于Win32 API的消息驱动机制、C++内存管理模型与ODBC数据库集成能力,构成了工业级C++客户端开发的基础范式。本文以超市仓库管理系统为教学载体,系统解析MFC消息循环、CRecordset数据
访问
、GDI打印、虚拟列表优化等关键技术原理,强调CString与std::string混用风险、Access数据库NULL处理、事务ACID落地等易错实践要点。内容覆盖从资源脚本(.
Windows Mobile下SQLite的Native C++轻量封装实践
SQLite是一种嵌入式关系型数据库引擎,其核心设计强调零配置、自包含与事务可靠性;在资源受限的嵌入式系统中,需绕过高级抽象、禁用异常与RTTI,并基于原生C API构建确定性
访问
层。Native C++封装能规避托管运行时开销,满足硬实时、低内存占用及跨语言调用需求,广泛应用于工业PDA、医疗终端、电力巡检等离线场景。本文聚焦Windows Mobile 6.5(ARMV4I/CE 5.2)平台,详解如何通过纯C导出接口、手动临界区同步、WAL日志适配与路径归一化等关键技术,
实现
稳定、可预测、可部署的SQ
ATL
3,248
社区成员
48,530
社区内容
发帖
与我相关
我的任务
ATL
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
复制链接
扫一扫
分享
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章