过时功能的标准COM HRESULT是什么?

时间:2012-06-21 14:44:37

标签: c++ com vb6

我正在开发一个VB6项目。有一些我想要废弃的方法。删除方法体后,想法是引发标准COM错误,例如

Err.Raise E_NOTIMPL

在这种情况下,我使用标准的“方法未实现”错误,但这不是我想要返回的正确消息。

有什么想法吗?

1 个答案:

答案 0 :(得分:5)

如果方法仍然有效,但已弃用,请将其保留,并在IDL中将其标记为隐藏和不可浏览,并在帮助字符串中添加适当的注释。这将它们隐藏在开发人员面前。

如果它们不再起作用,那么理论上你需要一个新的CLSID,因为你违反了合同。

如果它们不再工作,但没有客户端实际使用它们,那么你可以使用E_NOTIMPL - 这是合适的。 (还要将它们标记为隐藏并添加帮助字符串解释。)

但是请注意,如果调用者 调用该方法,那么无论是返回E_NOTIMPL还是创建新的clsid并重新编译它们,它们都会被破坏。