【发布时间】:2014-06-17 20:19:15
【问题描述】:
我在 COM 接口中有一些函数通过 HRESULT 返回不同的成功值,但使用定义为“成功”的空间(即SUCCEEDED(hr) 非零)。
例如
HRESULT MyMessageBox( BSTR title /*[in]*/, BSTR text /*[in]*/, long buttons /*[in]*/ );
显示类似于 MessageBox 的对话框的函数;它返回用户用来关闭对话框的按钮的指示符。 (我为此定义了一个枚举,其值位于 HRESULT 空间内,为用户定义的代码保留)。
这在 C++ 客户端中很好;但是,当 VB 是客户端或 Java 包装器(例如 JACOB)时,它似乎会拦截 HRESULT,并且客户端无法判断发生了哪些成功的代码。
让 HRESULT 指示除0 或异常之外的任何内容实际上是一种糟糕的设计吗?我应该改为创建具有[out] 参数的新函数来获取使用哪个按钮?
【问题讨论】:
标签: com