我有一个 COM 工程要做,但是做好了之后肯定还会有新的功能增加,新加功能跟原有的功能类似,我打算首先做一个父类,然后新加功能就用基类派生,用独立的 DLL ,想请问各位仁兄怎么能够实现????具体情况是这样的:要做一个测试软件,分 N 个大类,每类又有 M 个小类,现在我准备把 N 个大类做成父类,目标是以后再增加小类(从现有父类派生)直接增加 DLL 文件即可,不用重新编译工程。目前的思路是:把 CLASSID 和其中文名称写在注册表中,应用程序中让用户选择中文名称,然后按照对应初始化其接口,以后增加从现有父类中派生的产品类型时只需把其 COM 组件注册,然后添加一条注册表对应信息即可,做到不编译工程就好了了。

解决方案 »

  1.   

    新的功能就用新的接口来访问
    某些以数字结尾的接口就是这么来的
    IDirectDrawSurface7
    IHTMLDocument3
      

  2.   

    我自己想到了一个办法,大家看可行否:父类: C1,接口:IC1; 新加入子类: C2,接口:IC2;不重新编译程序直接使用可否这样:hr = IC1.CreateInstance(__uuidof(C2));C2 由注册表获得
      

  3.   

    上述我的方法行不通,我从两个方面尝试了:1、在 IDL 文件中直接写两个有继承关系的类,然后假如工程中,这样做之后工程中类的继承关系很清楚,但是父类和子类都在一个DLL组件中,无法实现我开始说的以后加入一个DLL组件就可以直接调用,而不用重新编译整个工程。2、先创建一个 COM 组件,然后用其做父类再创建一个子类的 COM 组件,但是这样做的时候在子类的 IDL 文件中加入父类的 IDL 文件时编译通不过,提示不能在导出两个类型库
                          error MIDL2016 : two library blocks 。结果现在还处于苦恼中,高手们帮兄弟一把啊请,谢了先!!!!!