当前位置:首页 » 服务器技术
开发技术指南» 文章正文
    引言: 访问智能文档内容 为了能起到作用,你的智能文档操作DLL一般需要访问(并且可能修改)下层的Office文档。
 

 

 ·使用c++和xml建立智能文档(二)    »显示摘要«
    摘要:ismartdocument接口教程 下一步是建立智能文档操作dll并安装它。在你编写智能文档操作处理程序dll(它实现了ismartdocument接口方法)之前,最好先了解一下这个接口。 当用户在文档中移动的时候,你的操作处理程序dll将建立并管理一组出现在文档操作事务面板中的控件,允许你基于文档中的位置提供自定义的用户界面。映射到文档的xml大纲元素定义了用户在文档中的位置。xml元素应该指......
    摘要:java 2 平台引入了 java.lang.ref 包,其中包括的类可以让您引用对象,而不将它们留在内存中。这些类还提供了与垃圾收集器(garbage collector)之间有限的交互。peter haggar 在本文中分析了 softreference、weakreference 和 phantomreference 类的功能和行为,并就这些类的使用给出了一些编程风格上的建议。当在 java......


使用C++和XML建立智能文档(三)
上一页   ...接着,我按下ctrl-b打开“new breakpoints”对话框,在function字段中输入dllmain,当出现“disambiguate symbol”窗口(显然有两个重载的dllmain函数)的时候选择了它们两个,通过这些操作在dllmain中设置了一个断点.我的目的是当excel第一次调用该dll的时候得到控制权.接着我按下f5,excel启动了.visual studio警告没有excel符号,但是我早就知道了.我打开智能文档,使用data | xml | xml expansion packs试图再次附加xml大纲.visual studio同atl生成的dllmain中的断点一起出现了.

【程序编程相关:IBM宣布13亿美元收购ISS 踏步挺进

【推荐阅读:播放功能

这个时候我的目标是确定dll中是否有方法.哪些方法被调用了.我在自己的ismartdocument接口实现中的所有方法上设置了断点,以确定它们其中的哪些被调用了.实际上,有几个方法被调用了,并且通过逐步运行我找到了一个普通的索引问题,传递到get_smartdocxmltypename的控件索引是从1开始的,但是c++代码把它处理为从0开始的,因此对最后一个元素的调用返回了e_invalidarg.后来我给所有的接口方法的入口点添加了atltrace2宏,使自己更容易知道正在调用什么.什么时候调用. 【扩展信息:巨头打响数字家庭争夺战 思科执著索尼迷茫

改变通知

对于示例解决方案,我需要知道用户什么时候选择了电子表格的数据项区域中的某行,这意味着他希望编辑该事务的相关信息.接着我从当前行中抓取信息并填充事务面板,允许他输入本周的工作与下一周的计划工作的相关信息.当他改变了事务面板中的某些东西的时候,我将使用excel对象模型把新的信息复制回原工作表行.但是我如何知道什么时候选择了新的行?有一种比较复杂的解决方案,即使用excel事件(在visual basic中容易,但是在c++中不是太容易),但是我发现这是没有必要的.在excel中无论选择什么时候发生了改变,都会调用ismartdocument接口方法,因此无论什么事情,你仅仅需要改变通知.通过更新每次改变后的进度表事务内部视图,我能够忽略行选择的变化.

安全性

因为宏病毒与其它的脚本技术的恶意使用变得很普遍,office在两个途径做了修改:通过提高默认的安全性设置,防止运行大多数没有签名的.潜在的恶意代码;通过增加安全性设置的数量,为即使没有数字签名的解决方案的运行提供了更多的管理权限.这考虑了现实情况:很多office解决方案(嵌入word或excel文档中的宏)都已经广泛的布署在大型组织中,要让它们完全安全将花费一定时间.如果新版本office突然要求所有的解决方案必须有数组签名(理想的解决方案),这将给很多组织带来布署方面的障碍.但是,office安全性设置的增加也使安全性更加复杂,在本文中我没有谈到这个主题.

应用于宏与插件程序的相同的office安全性设置也可应用于智能文档.这些设置包括:

·用户宏的安全性设置(高.中或低,在tools | macro | security中设置;默认的是高).


...   下一页
 ·java中threadlocal的设计与使用    »显示摘要«
    摘要:threadlocal threadlocal并非是一个线程的本地实现版本,它并不是一个thread,而是thread local variable(线程局部变量)。也许把它命名为threadlocalvar更加合适。线程局部变量(threadlocal)其实的功用非常简单,就是为每一个使用该变量的线程都提供一个变量值的副本,是每一个线程都可以独立地改变自己的副本,而不会和其它线程的副本冲突。从线......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE