Word手写签名插件(COM加载项、VC6.0ATL)开发思路

 
开发思路:
  写这个东东,其实就是写一个COM加载项。可以使用MFC、也可以使用ATL,也可以使用VB,我最终选用了ATL。主要是VC我用得比较多,而ATL通过模板库会给开发带来极大的便利,参考资料也比较多,因此选用了ATL。事实证明我的选择是正确的。不过使用VB相对要方便一些,VB可以很方便地对COM进行编程,编程中也可以直接使用Word的宏代码,根本不用做代码转换。
  开始编程,使用VC向导,可以很快的生成COM的框架,然后向工程里插入一个simple object(在菜单插入->插入ATL对象里面)。通过这个对象来改变WORD的菜单、TOOLBAR,这方面的文章很多,我的开发就是介绍了徐景周的一篇文章,到网上找一下,很多转载(我发现网上原创的东西实在不多呀)。这样一个简单的COM加载项的框架就建好了。
  手写签名部分的实现,这部分都是一些相对编程者容易的问题。简单说一下,首选插入一个对话框(在菜单插入->插入ATL对象里面),加入几个按钮,写一个单向链表用来存签名的笔画,用兼容DC、兼容位图、OleCreatePictureIndirect,把图片创建成一个IPictureDisp对象,以供下面的使用。
  再插入一个Full Control对象,方法同上。把上面一步生成的IPictureDisp写进Full Control对象,再调用WORD的AddOleCtrol方法将这个东东插入就可以了。
  这就是一个简单的流程。说的很粗略,因为不知道感兴趣的人多不多。
  在开发的过程中我遇到了以下这样一些问题,后来慢慢解决了,如果大家有兴趣可以来交流一下。
  1.如何在插入对象中取到WORD的ActiveDocument的指针(这个不能通过保存的方法来)。
    取Container的指针,再查IDispatch的接口。
      2.如果在程序里控制控件的删除,如在控件内点击,通过上下文菜单文菜单删除控件。
    可以给控件设置一下标志,然后通过Word的方法遍历对象组,检查对应的标志,然后删除。
      3.如何保存。
   可以重载框架的Save和Load方法,把对象的相关属性保存。这两个方法会由WORD自动调用。
      4.如何使用TOOLTIP。
    这个在MSDN里有详细的帮助,可以参照解决。
      5.如何移动控件。
    处理控件的OnLButtonDown/OnMouseMove/OnLButtonUp消息,然后通过Word的方法移动控件。
     简单写了一下思路,欢迎交流。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
WORD2003签名签章插件 1.前言 这是我学习ATL的成果,学习过程及程序的编写,前前后后共用了一个多月的时间,花了不少的心血。其间遇到了不少困难,终于都一一解决了。这要感谢www.csdn.net上的热心朋友,从他们的BLOG文章中,我获得了不少灵感。现在这个软件基本完成了,全部实现了我自己定的设计需求,自己觉得这个软件还有一定的用处,就把它的测试版发布一下,希望使用者多提宝贵意见。 注:测试版没有任何的功能限制,只是“关于”对话框中显示测试版字样。 2.功能 可以完成手写签名及插入签章的功能。插入签名或签章后,可以监控WORD文档是否被修改。软件的使用界面很简单,只是在WORD里插入了一个工具栏,上面有三个按钮。其它的功能在插入的签名或签章上按右键根据弹出菜单选择执行。 印章支持多种格式图片,如BMP,JPG,GIF(静止的)等,使用时用印章管理工具把这些导入到印章库即可。 印章库管理密码:12345   几个内置的印章使用密码:111111 3.软件的使用:   使用windows系统带的控件注册工具regsvr32.exe,注册一下XXHSignature.dll即可;或者直接运行当前目录下的Register.exe,也可完成注册。这样打开word就可以看到签名工具栏。 软件包含以下几个文件: steal.mdb 印章库。 xxhsignature.ini 配制文件,如果没有会自动生成。 XXHSignature.dll WORD2003的COM加载。程序的主体。 Register.exe 注册/卸载XXHSignature.dll用,可以不使用,直接使用regsvr32。 register.bat 注册的快捷方式,调用register.exe。纯属辅助,方便使用。 unregister.bat 卸载的快捷方式,带命令行参数调用register.exe。纯属辅助,方便使用。 StealManager.exe 印章管理工具。 说明文档.txt 说明文档。 软件使用VC6、ATL开发,没有使用MFC,所以每个软件都很小巧。 我在开发时使用的环境为XP、WORD2003,对软件在其它环境下没有进行过测试,不知道存不存在兼容问题。期待大家的反馈,可以给我发EMAIL,或者到我的博客留言。 如果程序运行有问题,可以使用Unregister.bat或regsvr32 /u将其卸载即可。也可以使用WORD加载管理菜单(该菜单默认时不显示,可以点击工具->自定义中找到使之显示),禁止插插件启动时运行。 另外:软件编译为UNICODE,对WIN98肯定是不支持。 欢迎转载,转载时请不要删除这些信息。谢谢。 2006-04-25 作者:wallimn email:wallimn@sohu.com QQ:54871876 博客:http://blog.csdn.net/wallimn 1.1版更新   新版的进行了以下几改进:     a.签名及签字对文档内容、文档字体颜色以及文档字体大小敏感,也就是说:修改文档内容、文档中任意字的字体颜色或大小,都会导致文档签名失效。这是个很重要的功能,不知大家有没有意识到。试想一下,如果对合同签字,合同金额为100000,在WORD里将数字的后几个0改成白色,如果签名不对字体颜色敏感,那么签名仍然有效,而合同金额看起来就锐减了。所以说,对字体颜色及大小不敏感,是个很严重的漏洞。市场上的几款其它签名软件基本都有这个漏洞。     b.修改了WORD签名工具栏有时不显示的BUG。     c.当文档签名失效时,重新打开文档的时候,会显示个红叉,直观的显示签名失效。 2008-02-23 1.2版更新   添加了读取网络图章功能,可以通过HTTP协议读取放在远程网络上的图章。不需要专门的图章服务器,可以使用任意的WEB服务提供程序,如IIS,tomcat等,将软件包中的web目录部署(白话:拷贝)到WEB的某个目录(tomcat中,考到某个上下文)就可以了。   然后在“网络图章”对话框中,输入对应的地址,如:http://127.0.0.1/web,点刷新就可以了。 2008-10-17
控件正支持全部Office菜单,支持Office的打印预览,控件强大的B/S通讯技术, 能够将服务器数据库中的数据或者用户自定义的数据插入当前文档的指定位置,而且 还可以将文档中的指定数据随时保存到服务器数据库或者指定的目录中.控件能够在浏 览器窗口中直接编辑Word文档并保存到Web服务器上。实现文档和数据库的统一管理。 控件同时支持痕迹保留,手写签名,电子印章等办公自动化系统必备的功能。 控件采用标准HTTP协议,支持任意后台Web服务器,任意后台编程语言(Asp, Jsp, Php,VB.NET,C#.NET等) 控件功能: 1.控件采用xml数据格式传输,有良好的扩展性. 2.控件支持多种网络传输协议(Ftp,http). 3.控件支持标准的http协议80端口(自已可定义端口),可以有效地跨过防火墙对控件的影响. 4.控件支持多种存储方式,可以直接存放在指定的目录也可以存储在数据库中方便管理. 5.存储在数据库中或存储在目录中的文档数据是加密处理(需要密钥)大大加强文档的安全性. 6. 数据库支持功能 支持文件保存到服务器数据库中,可以支持多种数据库,如SQL Server,Oracle,Sybase,MySql,Access等。 7.控件支持数据模板拟稿时选择模版套红. 8.强制留痕受到密码保存,文档就算脱离控件也可以继续强制留留痕. 9.手写签名,可支持任意的手写板(不可以鼠标画)签名或签意见. 10.可以准确检测有效的签名,还可以做到对有效签名进行特显,使得更形象展示有效的签名. 11.控件电子盖章功能实现印章或签名资源预保存功能,用户可以通过密码的方式来获得自己的签名或印章,印章和签名与 文档保存在一起,印章或签名可以功过系统的验证来判断真伪。 12.盖章数据是根据标准的加密方式.用户只有通过明钥和密钥的认证后才可以得到用户的盖章数据.大大加强了盖章的安全性. 13.控件的二次开发提供强大的函数库,支持多种系统环境,多种开发语言,多种数据库。 14.控件支持日志功能,文档的每一个修改操作都可以记录以供用户校对. 15.控件完全支持office菜单功能. 16.控件可以做到打印预览. 17、模版套红.控件支持数据模板拟稿或定搞时选择模版套红。 18.插入透明浮动图片.支持从服务器插入透明浮动图片到Word文档支持将服务器图片插入到Word文档的指定位置。 19.版本控制功能.版本控制功能,能够让您对WORD和EXCEL文档有更多的控制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值