各位高手:如何在ATL中(没有MFC)实现类似CObject的序列化功能,从文件中载入并动态构造出对象???

zr_smalldog 2003-08-18 04:19:45
我在做一个图形设计控件功能类似一个报表设计器,有一个基类CRepControlBase
由它派生出一些子类如CRepControlLine,CRepControlRect...等等,用户设计时产生一些控件对象放在std::list中,后要保存为文件,这样如何把对象中的信息存入文件并读出再动态生成原来的对象呢? 如果用MFC的话当然很简单因为它们都是从
CObject派生而来,但在ATL中如何解决呢?请高手帮我一下,不胜感激!!!
...全文
25 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
lop5712 2003-08-19
  • 打赏
  • 举报
回复
你的基类转成一个接口定义,如IRepControlBase,在实现的COM组件中(如CLSID_RepControlLine,CLSID_RepControlRect),除了实现IRepControlBase接口外,再实现IPersistStreamInit接口(其定义可查MSDN),在你的组件客户程序中(也就是你的基本框架程序,生成COM组件实例的程序),自己处理关于存储方面的代码,如果是MFC则应在CDocument的派生类中,自己将得到的File句柄转成流对象(支持IStream接口的COM组件),转的具体方法请参考MSDN,再通过对每个绘图对象的IPersistStreamInit接口的方法的调用来实现存储。
如果嫌上面的麻烦,也可利用IMoniker接口(接口名可能错了一两个字母,记不到了)来自动生成COM对象,但仍需要每个绘图COM组件实现IPersistStreamInit接口,至于IMoniker接口的用法,请参考MSDN

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧