zoukankan      html  css  js  c++  java
  • MFC实现COM组件

    一般而言,ATL实现了对COM组件最好的支持,所以不用MFC实现COM组件。但是MFC实际上也是可以实现COM组件的。

    一、MFC DLL优点:

    MFC com组件可以将MFC的类型作为参数进行传递,但ATL com只能用规定的COM数据类型。但实际上MFC 扩展dll也可以用MFC类型作为参数。

    具体代码:https://github.com/moisiet/MFC-COM

    COM组件与普通的DLL区别在于:1.COM组件需要注册才能使用,而普通的DLL不需要注册,直接LoadLibrary使用;2.COM组件通过暴露接口指针被调用,而普通DLL是暴露函数地址被调用。

    MFC实现COM组件必须要选择Automation这个选项。

    选择了这个选项才会提供注册,反注册和类工厂函数。

    MFC实现COM组件时,实现接口的类必须是继承自CCmdTarget(或者其子类)的类,且必须选择Automation或者Created by ID 这个选项,因为只有该类才提供对IUnknown的支持。

    MFC是通过嵌入类真正实现接口的(嵌入类包含再定义的继承自CCmdTarget类中)。

    因此MFC实现COM方式与ATL实现COM方式是不一样的,一定要搞清楚。

    当给定IID使用QuryInterface查找某个接口的时候,返回的实际并不是接口的指针,返回的是实现接口的内置类实例对象的地址,通过这个地址指针我们实现对接口方法的访问。

  • 相关阅读:
    魔兽世界祭拜长者
    Mono嵌入C++
    kxb-shell文件操作-kxb
    GAN初步理解
    Pytorch 常用函数方法的理解
    转载:StyleGAN & StyleGAN2 论文解读
    RepVGG
    多目标跟踪,REID, JDE跟踪器解析
    卷积和反卷积详细说明
    FairMOT解析
  • 原文地址:https://www.cnblogs.com/zhuluqing/p/8919199.html
Copyright © 2011-2022 走看看