我用ATL做了一个dll,里面有5个类.每个类连接一个硬件设备(各不相同),每个类有10个对外的函数,这个dll对外的接口就是10个函数.我怎样做能够通过一个属性来调用不同类中的函数呢?不知道说明白了没有,请大家帮帮忙吧

解决方案 »

  1.   

    不明白!呵呵
    ATL的DLL也是DLL,你同样可以导出其他的全局的接口函数,让调用者调用这些全局的导出函数操作你每个类的内容或者是实例!
      

  2.   

    “据属性来指定对应的类”和“据属性来创建对应的类对象”有什么区别???
    你都知道你要建哪个类的对象了,而这些类都有不同的CLSID来标识。
    那么你找到一个“属性”<--->CLSID对应的关系不就完事了嘛。我这有个例子,和你的要求有些类似,短信给我E-Mail,我给你发过去看看,或许对你有帮助。
      

  3.   

    我的邮件你收到没有?问题还没有解决吗?实际上,flyelf(空谷清音) 所说“虚函数+继承”的方法,就是“多个类实现同一接口”的方法。
      

  4.   

    你的邮件我收到了,最近比较忙所以没有来.你的例子我看了,和我想要的不太一样,我想要只Export一个类,而不是你例子中的多个.“多个类实现同一接口”是可以解决,而这多个类只在内部区分,对外只是一个类,可以吗?
      

  5.   

    你说的也可以,你完全可以在建一个类Out,然后把那“5个类”的实例通过Out来暴露啊!!!你的Out实例去获取“一个属性”,然后根据属性值,分别创建那“5个类”的实例不就OK了嘛。
      

  6.   

    你说的a就是“多个类实现同一接口”中的“同一接口”!!!
    你所说的“根据属性”的属性就是Out类的属性。当然Out类也可以实现“同一接口”,然后它的10个函数映射为它内部的a的10个函数,^_^
      

  7.   

    sinall(走或留,这是个问题)在吗?帮帮忙呀
      

  8.   

    菜鸟更需要看伪代码而不是看源代码。
    你在外部可以只传递一个名字来指明类型,在内部可以把字符串转化为比较容易维护的类型,然后操作时根据类型进行不同的操作。一个典型的实现是XML的各种element。
      

  9.   

    void __stdcall ExportFun(int a){
    switch (a) {
    case 1: fun1();
    case 2: fun2();
    case 4: fun3();
    case 8: fun4();
    case 0xF: fun5();
    }
    }