3

SUCCEEDED() 的定义:#define SUCCEEDED(hr) (((HRESULT)(hr)) >= 0)

背景:当在对话框上单击 Ok 按钮时,我需要返回一个HRESULT值为truehr的值。SUCCEEDED(hr)如果单击取消按钮,我需要返回一个负值。我本可以使用布尔值,但这会破坏现有模式(通常 hr 值来自系统 dll 的深度)。所以,我知道我可以S_OK在确定时返回,但是在取消时我应该返回什么?我可以return (HRESULT)-1;,但必须有更好的方法 - 一些 HRESULT 文字常量,它具有负值并代表一般故障。S_FALSE不是吗,因为它的值被定义为1L.

请帮我找到正确的常数。

4

4 回答 4

7

E_FAILE_ABORT。但是,这只会带来一个更大的问题,SUCCEEDED(hr)如果您只想检查S_OK.

于 2010-04-08T16:27:44.590 回答
6

也许 E_ABORT

于 2010-04-08T16:23:20.943 回答
3

典型值如下所示:http: //msdn.microsoft.com/en-us/library/aa378137 (VS.85).aspx

E_FAIL 或 E_ABORT 似乎是最明显的。

于 2010-04-08T16:27:01.097 回答
3

正如Kyle Alons 所说E_ABORT(或)可能适用于您的目的,或者您可以使用宏E_FAIL设计自己的,或者如果存在与您想要指示的内容相匹配的 Win32 错误代码。MAKE_HRESULT()HRESULT_FROM_WIN32()

也许HRESULT_FROM_WIN32( ERROR_CANCELLED)

于 2010-04-08T16:30:14.647 回答