我正在编写一个C ++ / CLI应用程序,它使用提供许多类的COM dll。他们中的大多数实现了许多接口。我想知道如何访问各种接口的方法。例如,当我查看类型库时,其中一个类被定义为:
coclass FWFile {
[default] interface IFWFile;
interface _IFWFileInternal;
[default, source] interface _FWFileEvents;
interface CStatistics;
interface IFWFile2;
interface IFWFile3;
interface IFWFile4;
};
当我创建这种类型的对象时,它似乎实现了IFWFile接口。但是,我想利用IFWFile2中的方法。我可以简单地创建一个IFWFile2类型的对象并进行转换吗?
IFWFile2 file2 = (IFWFile2)file1;
答案 0 :(得分:0)
使用CoCreateInstance()
时,您可以指定从新创建的对象中检索哪个接口。如果您需要多个接口 - 在调用CoCreateInstance()
时检索一个接口并使用QueryInterface()
检索其他接口。不要忘记每个成功的界面检索都要Release()
。
不要使用C样式的强制转换COM指针 - 接口不能保证按类型库和中指定的顺序排列,实际的类不能保证实际实现接口。始终使用QueryInterface()
从COM对象中检索接口指针。