如何在 COM 中的方法上设置返回类型?

fah*_*ash 1 c++ com atl

我知道 COM 现在已经过时了,但是我们时不时地必须对它做一些工作。我正在 Visual Studio 中开发 ATL COM 应用程序,我尝试向接口添加方法,但它不允许我将返回类型从 HRESULT 更改为 long 或 BSTR 等其他类型。

我不记得具体是如何完成的,可能是通过一些输出参数完成的。有人可以告诉我如何在 COM 接口方法中返回类型吗?

Ser*_*bry 5

COM 中的返回类型始终为 HRESULT(特殊方法 AddRef 和 Release 除外),因此需要使用out参数:

HRESULT GetString([out] BSTR* val);
Run Code Online (Sandbox Code Playgroud)

您还可以添加retval属性以将输出参数转换为脚本语言(使用 IDispatch)的返回值:

HRESULT GetString([out, retval] BSTR* val);
Run Code Online (Sandbox Code Playgroud)