1

我正在编写一个 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;
4

1 回答 1

0

使用时,CoCreateInstance()您可以指定从新创建的对象中检索哪个接口。如果您需要多个接口 - 在调用时检索一个CoCreateInstance()并用于QueryInterface()检索其他接口。不要忘记Release()调用每个成功的接口检索。

只是不要 C 样式转换 COM 指针 - 不保证接口按照类型库中指定的顺序,也不保证实际类实际实现了接口。始终用于QueryInterface()从 COM 对象检索接口指针。

于 2012-07-11T08:18:06.323 回答