王力猛的博客

-=☆开发手记☆=-

老王ID:wallimn
30070次访问,排名3602(1)好友1人,关注者5
写过一些软件,VC、Delphi、Java都会一些,Oracle数据库也懂一点。这几年一直在同这些东西打交道。
wallimn的文章
原创 45 篇
翻译 0 篇
转载 7 篇
评论 72 篇
wallimn的公告

  我是一名编程爱好者,在此记录一些我编程过程中遇到的问题及解决方法,希望对遇到类似问题的朋友有所帮助。
  欢迎有共同爱好的朋友联系交流。
邮件:
wallimn@yahoo.cn
QQ:
54871876
MSN:
wallimn@hotmail.com
网络硬盘:
http://wallimn.ys168.com
最近评论
agjyfm:wow gold
fromnpu:需要一个omdt的安装程序,邮箱asheng200325@qq.com,先行谢谢楼主了!
nino:牛,我顶,今天我也遇到这个问题~谢谢~
dongzheng:那个WORD签名插件在保存关闭之后再打开,好像插件就不透明了啊
dongzheng:老王,那个WORD
文章分类
收藏
    相册
    个人相册
    友情链拉
    我的博客2
    我的网络硬盘
    我老婆的博客
    存档
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

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

    新一篇: ATL学习笔记01

    /***********本人原创,欢迎转载,转载请保留本人信息*************/
    作者:王力猛 (wallimn)
    电邮:wallimn@sohu.com
    博客:http://wallimn.bokee.com
       http://blog.csdn.net/wallimn
    时间:2006-11-15
    /***********本人原创,欢迎转载,转载请保留本人信息*************/
    开发思路:
      写这个东东,其实就是写一个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的方法移动控件。
         简单写了一下思路,欢迎交流。

    发表于 @ 2006年04月17日 22:31:00|评论(loading...)|编辑

    评论

    #zgyao 发表于2006-09-15 16:38:00  IP: 218.107.13.*
    有没有代码贴上来,学习下
    #wallimn 发表于2006-12-12 10:17:35  IP: 219.238.21.*
    有个免费使用版,可以到我的网络硬盘上下载。地址:http://wallimn.bgaopan.com
    #wallimn 发表于2008-05-14 14:06:06  IP: 219.238.21.*
    迅速入门:
    看一下vc知识库(www.vckbase.com)里的一篇文章,讲如何编写WORD的插件(也称加载项),可以用WORD做关键字搜一下,那篇文章很不错,仔细分析源码,可以学到两个重要的知识:一个是COM加载项的原理;一个是如何使用ATL相关语句来实现VBA的功能(相应的基础知识可以有《ATL深入解析》中找到)。掌握这两个重要的知识,就可以实现心中理想了。
    #dongzheng 发表于2008-06-10 12:39:50  IP: 210.76.108.*
    你好,对你的项目介绍很感兴趣;可以请教一个问题吗?那就是:能不能实现图章的透明啊?我看了一下你的WORD插件,图章会盖住文档上的文字,能解决吗?
    #dongzheng 发表于2008-06-10 12:42:42  IP: 210.76.108.*
    呵呵,补充一下,我见过有类似的插件做成的图章是不会盖住文字的,也就是说可以从图章下看到文字
    发表评论  


    登录
    Csdn Blog version 3.1a
    Copyright © wallimn