• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >vc/mfc > 我想做一个类似Word的具有向客户抛标准COM的二次开发接口的应用程序,不知道如何下手??????

我想做一个类似Word的具有向客户抛标准COM的二次开发接口的应用程序,不知道如何下手??????

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-04

佚名通过本文主要向大家介绍了 我想做一个类似Word的具有向客户抛标准COM的二次开发接口的应用程序,不知道如何下手??????等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 我想做一个类似Word的具有向客户抛标准COM的二次开发接口的应用程序,不知道如何下手??????
描述:

对于这个技术我比较好奇:
1.MDI的EXE和二次开发组件我猜应该是两个独立开发的程序.
2.那么这个EXE程序是如何和二次开发COM组件进行联系的呢?
3.Word 有打开文件之前的事件,类似这样的事件又是如何从EXE抛到二次开发接口的组件呢?
......
希望有高手指点一二,最好有点例子.谢谢!!


解决方案1:


2.Word应用程序可以通过MSWord.olb达到后台启动,而且可以链接上已经启动的Word应用程序,这一点又是如何办到呢? 
MSWord.olb只是个类型库,你到通过GetActiveObject连接到你的程序,只要通过ole自动提供的RegisterActiveObject注册你程序内部包装的app对象即可,这种逻辑和COM的机制很类似的,先
注册后调用,GetActiveObject等同于COM库提供CoCreateIntance方法,这些都是由ole库提供的
功能,下面是它提供几个方法:
/*---------------------------------------------------------------------*/
/*            Active Object Registration API                           */
/*---------------------------------------------------------------------*/
/* flags for RegisterActiveObject */
#define ACTIVEOBJECT_STRONG 0x0
#define ACTIVEOBJECT_WEAK 0x1
WINOLEAUTAPI RegisterActiveObject(IUnknown * punk, REFCLSID rclsid,
            DWORD dwFlags, DWORD * pdwRegister);
WINOLEAUTAPI RevokeActiveObject(DWORD dwRegister, void * pvReserved);
WINOLEAUTAPI GetActiveObject(REFCLSID rclsid, void * pvReserved,
            IUnknown ** ppunk);

解决方案2:

胡哥,有没有相关资料?
我最近也需要实现类似功能,不过稍有差别。
自己也有一些想法,不过很零散,感觉离一个成功的程序框架还有相当的距离。

解决方案3:

office和VS的插件规范是统一的,要求组件实现_IDTExtensibility2接口,你也可以完全模仿它们定义插件也必须实现_IDTExtensibility2接口。
使用方式大致如下:
1、应用程序启动时,扫描注册表中某一个特定的子键,比如Software\yourapp\plugins,枚举其下所有的子键,并寻找某个值(代表组件的CLSID)。
2、按照这个CLSID,调用CoCreateInstance来启动该插件,获得_IDTExtensibility2接口。
3、调用该组件接口的OnConnection方法,给它机会进行初始化。
4、在退出前调用该组件接口的OnDisconnection方法,给它机会进行各种清理工作。
5、调用接口的Release方法释放组件。
6、应用程序退出。
通常,在OnConnection方法里面要传递给插件足够的信息,以便工作过程中插件能利用这些信息执行工作,有条件的话在应用程序中实现一些对象模型供插件使用,在这些对象中提供连接点用于发生某些事件时能通知组件(就像你说的打开文件事件)。当然不用连接点也完全可以。
当然你完全可以不用这套规范,自己设计一个插件接口(比如IxxxPlugin,提供Init和Uninit方法),原理跟上面都是一样的。


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 我想做一个类似Word的具有向客户抛标准COM的二次开发接口的应用程序,不知道如何下手??????

相关文章

  • 2017-06-04 如何把下面的宏翻译成VC代码?vc自动化的问题
  • 2017-06-05 TerminateThread不能结束线程,怎么办?
  • 2017-06-04 请问,vc中的直方图控件有吗?谁能提供
  • 2017-06-04 为何CreateDispatch总是失败?
  • 2017-06-04 我在用#import导入MSWORDOLB后,编译出现了奇怪的问题
  • 2017-06-04 bho中如何判断当前鼠标在点击选项卡?
  • 2017-06-05 关于MSCOMM控件问题
  • 2017-06-04 用vc如何取回系统的象素,如“1024×768”这两个值。谢谢!
  • 2017-06-04 各位大哥大姐,看看小弟这个问题
  • 2017-06-04 用IOleInPlaceObjectWindowlessImpl实现的ACTIVEX无法刷新

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • vc如何嵌入word,求详细步骤
    • 关于数组越界问题
    • Boost正则编译
    • 有谁能回答这个问题吗?头通不已!!!
    • 有关断点调试时字符串显示的问题?急!现在线
    • 请问什么是ATL什么是COM什么是COM+什么是SDK,与MFC有什么联系,他们之间又有什么关系吗?
    • ATL调用strcasecmp出错
    • 谁能系统介绍一下net与com的关系,现在还有学习atl、dcom的必要吗?原帖子出问题了,进不去,没法加分!
    • 请部动态链接库和静态链接库的区别?
    • 多线程的问题导致程序失去响应的问题!

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有