gpt4 book ai didi

c++ - 使用实现多个接口(interface)的 coclass

转载 作者:太空宇宙 更新时间:2023-11-04 14:15:46 25 4
gpt4 key购买 nike

我正在编写一个 C++/CLI 应用程序,该应用程序使用提供多个类的 COM dll。它们中的大多数实现了一些接口(interface)。我想知道如何访问每个不同接口(interface)的方法。例如,当我查看类型库时,其中一个类定义为:

coclass FWFile {
[default] interface IFWFile;
interface _IFWFileInternal;
[default, source] interface _FWFileEvents;
interface CStatistics;
interface IFWFile2;
interface IFWFile3;
interface IFWFile4;
};

当我创建这种类型的对象时,它似乎实现了 IFWFile 接口(interface)。但是,我想使用 IFWFile2 中的方法。我可以简单地创建一个 IFWFile2 类型的对象并转换它吗?

IFWFile2 file2 = (IFWFile2)file1;

最佳答案

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

只是不要使用 C 风格转换 COM 指针 - 接口(interface)不能保证按照类型库中指定的顺序并且不能保证实际的类实际实现了接口(interface)。始终使用 QueryInterface() 从 COM 对象检索接口(interface)指针。

关于c++ - 使用实现多个接口(interface)的 coclass,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11424607/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com