我用ATL做了一个dll,里面有5个类.每个类连接一个硬件设备(各不相同),每个类有10个对外的函数,这个dll对外的接口就是10个函数.我怎样做能够通过一个属性来调用不同类中的函数呢?不知道说明白了没有,请大家帮帮忙吧
解决方案 »
- 高分!串口通信读取线程,PC端如何完整读取下位机(单片机)发过来的数据呢? 能提供代码吗?谢谢
- 求教:如何迅速加积分
- Drag Drop的register问题
- 我在画图的时候用Ellipse函数画同心圆,结果半径大的总会覆盖掉小的,有什么办法?(顺序是先画小圆后画大圆)
- CRegKey的问题.
- 菜鸟请教:如何使 按钮控件 变灰成不可用状态
- $#$这嬷难的问题三天没有结决。
- 三层结构的迷惑
- VC6.0中按F1没有帮助怎么办
- VS2012+opencv3.0一直无法打开文件“opencv_contrib300d.lib”
- 如何将自定义组建及帮助添加到Visual Studio .net 中
- IDispatch::Invoke如何通过dispid调用方法?
ATL的DLL也是DLL,你同样可以导出其他的全局的接口函数,让调用者调用这些全局的导出函数操作你每个类的内容或者是实例!
你都知道你要建哪个类的对象了,而这些类都有不同的CLSID来标识。
那么你找到一个“属性”<--->CLSID对应的关系不就完事了嘛。我这有个例子,和你的要求有些类似,短信给我E-Mail,我给你发过去看看,或许对你有帮助。
你所说的“根据属性”的属性就是Out类的属性。当然Out类也可以实现“同一接口”,然后它的10个函数映射为它内部的a的10个函数,^_^
你在外部可以只传递一个名字来指明类型,在内部可以把字符串转化为比较容易维护的类型,然后操作时根据类型进行不同的操作。一个典型的实现是XML的各种element。
switch (a) {
case 1: fun1();
case 2: fun2();
case 4: fun3();
case 8: fun4();
case 0xF: fun5();
}
}