`

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

阅读更多
  写这个东东,其实就是写一个COM加载项。用VC开发,可以使用MFC、也可以使用ATL;用VB也是个不错的选择。我最终选用了ATL。主要是VC我用得比较多,而ATL通过模板库会给开发带来极大的便利,因此选用了VC使用ATL方式开发。事实证明我的选择是正确的。
  使用VB调用COM接口要相对要方便一些,VB可以很方便地对COM进行编程,编程中也可以直接使用Word的宏代码,基本不用做代码转换。VB不好的地方:发布的时候要带它的运行时库(有点大),还有就是VB的运行效率比不上VC(不过小工程不明显)。
  开始编程,使用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的方法移动控件。
     简单写了一下思路,欢迎交流。
 
  软件下载:http://wallimn.ys168.com
 
参考资料推荐:
1、深入解析ATL(第二版,不知有没有更新的版本出现)、电子工业出版社
2、ATL开发指南、电子工业出版社
3、COM技术内幕、清华大学出版社

/***********本人原创,欢迎转载,转载请保留本人信息*************/
作者:wallimn 电邮:wallimn@sohu.com 时间:2005-10-15
博客:http://wallimn.iteye.com
网络硬盘:http://wallimn.ys168.com
/***********文章发表请与本人联系,作者保留所有权利*************/
3
0
分享到:
评论
1 楼 wallimn 2010-09-13  
软件下载,请到我的网络硬盘,http://wallimn.ys168.com 。

相关推荐

    VC6.0_ATL_COM.rar_ATL_COM 组件_atl com vc6_com atl_vc6.0 ATL

    VC6.0是Microsoft Visual Studio 6.0的简称,这是一个较早版本的集成开发环境,广泛用于Windows平台的C++开发。在本资源"VC6.0_ATL_COM.rar"中,我们将深入探讨如何在VC6.0环境下使用ATL创建COM组件,并了解如何在...

    VC 6.0 ATL简单示例程序

    这个程序是基于VC的 ATL的简单程序,程序生成一个DLL的activex空件, 只包含一个函数 add 可以用下面代码实现网页调用(当然要先注册控件了) <TITLE>ATL 3.0 test page for object MyFunAdd ...

    VC6.0全集(包含VC6.0中英文版和MSDN以及相关插件)

    ### VC6.0全集(包含VC6.0中英文版和MSDN以及相关插件) #### 一、概述 Microsoft Visual C++ 6.0(简称VC6.0)是微软公司推出的一款非常经典的集成开发环境(IDE),主要用于Windows平台下的C/C++程序开发。该...

    vc 6.0编写word2003

    在VC 6.0中编写Word 2003插件的过程主要涉及到ATL COM技术,这是一种用于创建COM对象的Microsoft开发工具包。下面将详细解释这个过程中的关键知识点: 1. **ATL COM AppWizard工程创建**: - 首先,你需要通过向导...

    VC6.0COM2.zip_VC6.0调用C#_vc6 调用C

    标题“VC6.0COM2.zip_VC6.0调用C#_vc6 调用C”涉及的主题是使用Microsoft Visual C++ 6.0(简称VC6.0)开发的COM组件如何被Visual Studio 2005中的C#代码调用。在这个过程中,我们将探讨COM(Component Object Model...

    用VC6.0编写Word插件(Office2007篇)

    在本文中,我们将深入探讨如何使用Visual C++ 6.0(简称VC6.0)开发针对Microsoft Word 2007的插件。在 Office 2007 中,开发者可以通过COM(组件对象模型)接口来创建自定义功能,为用户提供独特的功能扩展。以下是...

    vc6.0插件支持.rar

    开发者需要在DLL中实现特定的导出函数,以便VC6.0加载并执行插件功能。而"源码"的提供,意味着你可以看到这些插件是如何编写的,这对于学习和改进现有插件非常有价值。 在开发过程中,你可能会遇到一些挑战,比如...

    vc6.0绿色rar

    3. ** ATL(Active Template Library)**:ATL是微软提供的另一项技术,主要用于快速开发COM(Component Object Model)组件,尤其适合创建轻量级且高性能的服务器对象。 4. **调试器**:VC6.0的调试器功能强大,...

    VC 6.0 ATL方法编写实现ActiveX DLL控件.rar

    VC 6.0使用ATL方法编写实现ActiveX控件,编译最终生成Polygon.dll文件,没有窗口可查看。这个源码是来自国外,源代码含注释,代码规整,在ATL方法编写DLL控件方面,还是很有参考价值的。

    VC6.0 经典下载

    【VC6.0 经典下载】:Microsoft Visual C++ 6.0,简称VC6.0,是微软公司发布的一款经典且强大的C++集成开发环境。它在20世纪90年代末期至21世纪初期广泛应用于软件开发,尤其在Windows平台下,为程序员提供了高效...

    vc6.0安装心得

    在探讨《vc6.0安装心得》这一主题时,我们首先需要理解VC6.0(Visual C++ 6.0)是一款由微软公司开发的集成开发环境(IDE),主要用于C++语言的编程工作。它发布于1998年,尽管年代久远,但在某些特定的开发场景下,...

    VC6.0精简安装版

    Visual C++ 6.0,简称VC6.0,是由微软公司推出的经典C++集成开发环境。这款工具在编程领域具有里程碑式的意义,尤其是在Windows平台上的应用程序开发中,它曾经是许多开发者首选的开发工具。尽管现在已经有更新的...

    vc6.0 MSDN精简CHM版

    《VC6.0 MSDN精简CHM版》是一款针对微软Visual C++ 6.0集成开发环境的中文文档合集,它以CHM(Compiled Help Manual)格式提供,便于用户快速查阅和学习VC6.0的相关知识。该版本相较于完整的MSDN Library进行了精简...

    vc6.0 精简版安装包

    Visual C++ 6.0(简称VC6.0)是由微软公司推出的一款强大的C++集成开发环境,它在1998年发布,是许多开发者心目中的经典版本。VC6.0以其高效、灵活和对Windows API的深度支持而闻名,尤其在游戏开发、系统编程以及...

    VC6.0中文版类库

    Visual C++ 6.0(简称VC6.0)是微软公司推出的一款经典且广泛使用的C++集成开发环境。它在20世纪90年代末期至21世纪初期是许多程序员进行Windows应用程序开发的首选工具。这个“VC6.0中文版类库”主要包含了微软的...

    VC6.0目录设置

    在介绍VC6.0目录设置之前,首先要了解VC++ 6.0是一款由微软公司开发的集成开发环境(IDE),主要用于C++语言的程序设计。在VC6.0中进行目录设置是非常重要的,因为它涉及到编译器如何寻找头文件、链接器如何找到库...

    VC 6.0动态生成Word表格

    在VC 6.0环境下,动态生成Word表格是一项常见的任务,尤其在开发文档自动化或集成办公系统的应用中。本文将详细介绍如何使用MFC(Microsoft Foundation Classes)库在Visual C++ 6.0中实现这一功能。 首先,我们...

    VC6.0编写的自定义WORD工具栏

    在Microsoft Visual C++ 6.0(简称VC6.0)环境下,开发人员可以利用COM(Component Object Model)技术创建自定义的Word工具栏,从而扩展Microsoft Word的功能。本项目"VC6.0编写的自定义WORD工具栏"就是这样一个...

    VC6.0安装包(自带中文教程)

    VC6.0不仅提供了强大的C++编译器,还包括了调试器、资源编辑器、类视图、代码编辑器等一整套开发工具,支持Windows API、MFC(Microsoft Foundation Classes)库以及ATL(Active Template Library)。 这个“VC6.0...

    GetDocument.zip_getdocument_vc6.0_vc6.0读取word_获取word内容_读取word内容

    本教程主要关注如何使用VC6.0这一经典的微软开发环境来读取Word文档的内容。"GetDocument.zip_getdocument_vc6.0_vc6.0读取word_获取word内容_读取word内容"这个压缩包文件提供了一个示例,帮助开发者了解如何实现这...

Global site tag (gtag.js) - Google Analytics