开发思路:
写这个东东,其实就是写一个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的方法移动控件。
简单写了一下思路,欢迎交流。=========================================
程序样本在我的博客上,欢迎下载试用。
http://wallimn.bokee.com
写这个东东,其实就是写一个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的方法移动控件。
简单写了一下思路,欢迎交流。=========================================
程序样本在我的博客上,欢迎下载试用。
http://wallimn.bokee.com
解决方案 »
- opengl--glmultiDrawElements
- 怎么精简VC2008?
- 怎样把图像的像素保存到文本文档中
- 请问vs.net和vs98里的MFC有什么区别吗?
- 请问:保存数据到一个自建类型的文件中,取数据,画图,显示。这个过程大概是怎样的?(分数可加到300,急)
- 我用ATL做了个控件,大家看看
- 真恼火,早上起来提一下自已昨晚的发问贴,CSDN居然说"你提前太频繁了"!睡了一觉至少隔了12小时吧?这也叫"频繁"?
- 求助,VC,打算先把正在执行的另一个线程关闭,再关闭窗口
- _wfopen的问题
- 谁知道有关股市实时行情的技术,不用applet,用ocx!!!能不能提供一点思路??
- ~~~~~~~~~~~~~~~~~急问!!Activex控件在设计模式下刷新的问题
- 给100分,在线等
插入的OLECONTROL是个窗口呀。自然可以响应右键消息。
用transparentBlt或使用透明的gif就是透明的了。
里那样,打开word文档是嵌入在网页中的,我知道这个肯定是要用axtiveX完成,这个对word的控制,并保留修改痕迹就不知道是怎么弄的啦,是不是放在OLEcontainer里?有大哥帮忙指点吗
IE打开WORD文档有两种方法,有一种是用dsoframer ,是微软的一个例子,
还有一种是服务器上设置一下web.xml,好象是有个东东管这个。
就是当锁定文档后,仍然移动控件会异常退出WORD,我后来在移动插件之前判断了一下文档状态解决了这个问题。
下载请访问我的网络硬盘,地址:http://wallimn.gbaopan.com
软件及作者的更多信息请访问我的博客:http://wallimn.bokee.com补充说明:控件注册使用regsvr32(系统提供的注册控件工具,可以在开始->运行中输入)
regsvr32 控件路径名\插件名
regsvr32 -H 可以看一下帮助注册后,一般会出现个工具栏,有的机器不知为什么不出。
这时,可以工具->自定义,选择命令选项卡,左边选工具,右边找到COM加载项,把它拖到菜单或工具栏上。关闭自定义窗口。点击COM加载项,把签名插件勾选一下就可以了。
那是不是对没有签名的文档进行了签名,而验证是对已签名的文档进行的。
to : lemontree2004(柠檬树)
我的说明文件里有说明,可以通过WORD的加载项控制对其进行控制。