摘要:ismartdocument接口教程 下一步是建立智能文档操作dll并安装它。在你编写智能文档操作处理程序dll(它实现了ismartdocument接口方法)之前,最好先了解一下这个接口。 当用户在文档中移动的时候,你的操作处理程序dll将建立并管理一组出现在文档操作事务面板中的控件,允许你基于文档中的位置提供自定义的用户界面。映射到文档的xml大纲元素定义了用户在文档中的位置。xml元素应该指......
摘要:java 2 平台引入了 java.lang.ref 包,其中包括的类可以让您引用对象,而不将它们留在内存中。这些类还提供了与垃圾收集器(garbage collector)之间有限的交互。peter haggar 在本文中分析了 softreference、weakreference 和 phantomreference 类的功能和行为,并就这些类的使用给出了一些编程风格上的建议。当在 java......
使用C++和XML建立智能文档(三)访问智能文档内容 【程序编程相关:
IBM宣布13亿美元收购ISS 踏步挺进】 【推荐阅读:
播放功能】为了能起到作用,你的智能文档操作dll一般需要访问(并且可能修改)下层的office文档.在例子中,它是excel项目进程表电子表格.为了这个目的,ismartdocument的几个方法为你下层文档提供了一个idispatch com接口指针.在office上编写com的人知道,idispatch提供了进入office对象模型的通道.在visual basic中,使用idispatch与类型库是相当自动化的,但是在c++中稍微复杂一些. 【扩展信息:
巨头打响数字家庭争夺战 思科执著索尼迷茫】 起先我准备使用#import指令,它允许visual c++为类型库中的所有接口生成atl智能指针包装.但是要让它正确的编译需要做大量的工作,它常常提示有东西出错了.果真,我找到了知识库文章“office application remains in memory after program finishes”,它描述了在office类型库中使用#import指令所遇到的知名的问题以及相应的建议. 最后,我决定建立自己的类cexcelworkbook来包装需要的excel方法.这个类继承自atl模版ccomdispatchdriver,这使它相对容易通过idispatch调用excel对象模型上的方法.使用ccomdispatchdriver的方法getidofname,你可以得到一个给定的属性或方法(例如,excel对象模型中的activesheet的范围)的dispid.你一旦有了dispid(为了效率更高,我在类中对它进行了缓冲处理),就可以使用某个其它的ccomdispatch方法(例如getproperty或invoken,此处的n是参数的数量)访问对象模型中的属性与方法.注意exce range值是作为vba属性(而不是方法)暴露的,但是它也需要一个参数(范围地址).因为ccomdispatchdriver没有提供为getproperty调用传递的参数的途径,我在自定义类(cexcelworkbook)中实现了一个新的方法(getproperty1),它用于处理这种情况. 调试智能文档dll 一切都在预料之中,在我尝试建立智能文档操作dll的时候也没有出现异常.我试图在excel中附加一个xml大纲的时候,收到了一个错误信息“xml扩展包逻辑丢失或无效”.为了调试这个错误,我首先使用listdlls(http://www.sysinternals.com上的一个方便的工具)确定excel是否载入了我的库,这样清单才能看起来足够好,它可以让excel找到该dll的.我退出excel,接着修改了项目的debugging属性(右键点击解决方案并选择“属性”)告诉visual studio使用excel作为该dll的exe容器.我浏览excel.exe并选择它作为command值. ...
下一页 摘要:threadlocal threadlocal并非是一个线程的本地实现版本,它并不是一个thread,而是thread local variable(线程局部变量)。也许把它命名为threadlocalvar更加合适。线程局部变量(threadlocal)其实的功用非常简单,就是为每一个使用该变量的线程都提供一个变量值的副本,是每一个线程都可以独立地改变自己的副本,而不会和其它线程的副本冲突。从线......