• 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 > idl和COM组件的一个菜鸟级问题

idl和COM组件的一个菜鸟级问题

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

佚名通过本文主要向大家介绍了com idl,com idl connect,idl,idl是什么意思,envi idl技术殿堂等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: idl和COM组件的一个菜鸟级问题
描述:

[
uuid(B24262D5-0FBF-48CC-816A-FB2AD85E398D),
version(1.0),
helpstring("A")
]
library ALib
[
..............
..............
#include"B.idl"
#include"C.idl"
]
如上边所举的例子,是不是可以这样理解。
1.library ALib所在的IDL可以理解为一个COM组件,而B.idl和C.idl则可以理解为相应的接口。
2.是不是可以使用B接口的对象指针调用QueryInterface函数找到C接口,或是用C调到B.
谢谢~~~


解决方案1:

library ALib是一上COM组件。而不是所在的IDL是一个组件。
组件中可以定义多个接口,再定义类继承你所定义的一个或多个接口,实现接口定义的方法。
这里有一个组件和接口定义的事例,你可以参考一下。

// ProcessManager.idl : IDL source for ProcessManager.dll
//
// This file will be processed by the MIDL tool to
// produce the type library (ProcessManager.tlb) and marshalling code.
import "oaidl.idl";
import "ocidl.idl";
#include "olectl.h"
[
object,
uuid(F328C384-8063-424D-B03A-EAB3A348CDAC),
dual,
helpstring("IProcessList Interface"),
pointer_default(unique)
]
interface IProcessList : IDispatch
{
[id(1), helpstring("method ShowProcessListDlg")] HRESULT ShowProcessListDlg();
[id(2), helpstring("method LoadProcessListFun")] HRESULT LoadProcessListFun();
[id(3), helpstring("method UnloadProcessListFun")] HRESULT UnloadProcessListFun();
};
[
uuid(E49555EC-6BB7-416A-A94C-9DB7D992DC80),
version(1.0),
helpstring("ProcessManager 1.0 Type Library")
]
library PROCESSMANAGERLib
{
importlib("stdole32.tlb");
importlib("stdole2.tlb");
[
uuid(2F533D8F-7201-4955-B7FD-9DDE5600F563),
helpstring("_IProcessListEvents Interface")
]
dispinterface _IProcessListEvents
{
properties:
methods:
};
[
uuid(B4B62183-505E-4887-B17A-5566C56DF539),
helpstring("ProcessList Class")
]
coclass ProcessList
{
[default] interface IProcessList;
};
};

解决方案2:

是想说接口查询吧
接口通过QueryInterface可以查询到定义在一个组件内的其他接口,这是COM的规范之一。
所以准确的说是
可以使用B接口的对象指针调用QueryInterface函数找到C接口
也可以使用C接口的对象指针调用QueryInterface函数找到B接口


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

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

  • 想通过COM接口设置一个回调函数,如何定义idl?
  • com技术内幕的第十章:如何编译idl文件(先20分试探)?
  • 如何在COM接口中传递IDL基本类型的数组
  • 给一个已经存在的类添加COM接口是否只能手工修改IDL文件?
  • COM入门问题,与idl文件和uuid有关
  • idl和COM组件的一个菜鸟级问题
  • com中idl文件问题!?
  • COM数据库组件:在IDL文件中定义枚举类型遇到的问题

相关文章

  • 2017-06-05 请问我动态调用dll的delphi程序中的一段对应vc代码是什么?
  • 2017-06-05 多个线程中能修改全局变量吗?
  • 2017-06-05 gflags堆参数使用的疑问
  • 2017-06-05 请问在VS中怎么在使用flashget的com接口
  • 2017-06-05 请高手指点迷津~~~~~急~~~~~(DLL调用问题)
  • 2017-06-05 不同工程下的类库的调用问题?????
  • 2017-06-04 dxshow能否控制扫描仪和数码相机
  • 2017-06-05 rawsocket为什么只能抓到incoming?2贴200分求助!<2>
  • 2017-06-04 DCOM“没有注册类别”的错误
  • 2017-06-05 AfxBeginThread的参数传递问题!!!!

文章分类

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

最近更新的内容

    • 想教大家问题ACTIVX中TCP函数的问题,提供源码让大家调试
    • 线程中使用PostMessage的一个问题
    • 多线程问题,一个线程写文件,另几个线程读文件
    • 高手帮忙!!
    • Sleep/Suspend
    • atl做word插件少文件!!
    • 为什么我的线程占如此高的CPU?
    • 问一个关于static类型的问题
    • 网页调用activex控件
    • 我想学习和DLL相关的东西,大家能给我推荐几本书么?

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

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