摘要: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中设置;默认的是高). ...
下一页 摘要:threadlocal threadlocal并非是一个线程的本地实现版本,它并不是一个thread,而是thread local variable(线程局部变量)。也许把它命名为threadlocalvar更加合适。线程局部变量(threadlocal)其实的功用非常简单,就是为每一个使用该变量的线程都提供一个变量值的副本,是每一个线程都可以独立地改变自己的副本,而不会和其它线程的副本冲突。从线......