在word里面内嵌的ActiveX控件,属性值变化以后,被保存到哪里?

JeanLove 2010-02-26 04:37:32
看到这么一个doc文档(有的是excel的),里面嵌入了一个控件,实现了一个小游戏,这个游戏可以计分和保存,下次再打开的时候,上次游戏的分数还在。

我的问题是:
一般来说ActiveX的持久化是实现一个持久化的接口,例如保存到一个外部文件里面。
但是现在看起来,控件的持久化数据就保存在当前的Office文档里面。

这个是怎么实现的呢,是不是在制作这个控件的时候要实现一些东西,还是制作这个word/excel文档的时候设定一些东西就可以了?

还请大虾讲一下这里面的原理,如何实现的。
先拜过了。
...全文
101 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
JeanLove 2010-02-26
  • 打赏
  • 举报
回复
谢谢,现在有点头绪了... ...

不过还有一个问题,就是我的ActiveX假如用到了MFC库之类的,然后编译出来一个release版本,那么是不是运行的时候还需要当前VS对应的库文件一起发布呢? 但是我觉得一般还是一个word/excel文件搞定,没有见到需要拖一堆.dll库的情况。

这个怎么办呢?
fengrx 2010-02-26
  • 打赏
  • 举报
回复
保存代码:

//将数据压入流中
hRet = pStm->Write(pData,nLen,&nWritten);
//保存
hRet = IPersistStreamInitImpl<CResoftSignCtrl>::Save(pStm,fClearDirty);
fengrx 2010-02-26
  • 打赏
  • 举报
回复
例如,对于ATL控件:
//IPersistStreamInit
STDMETHODIMP Load(LPSTREAM pStm);
STDMETHODIMP Save(LPSTREAM pStm, BOOL fClearDirty);

保存时就是对Save函数的pStm操作。将数据放在pStm中就可以了。

下次加载是直接通过Load函数的pStm解析。
JeanLove 2010-02-26
  • 打赏
  • 举报
回复
引用 1 楼 fengrx 的回复:
COM控件有一个数据持久化的接口,可以直接保存到流里边,作为文档中的一部分。

我只知道实现IPersist接口,你说的保存到流里面,是把本文件作为一个流打开吗?
能否稍微具体一点呢?

谢谢!!!!!
fengrx 2010-02-26
  • 打赏
  • 举报
回复
COM控件有一个数据持久化的接口,可以直接保存到流里边,作为文档中的一部分。

3,245

社区成员

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

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