Windows ErrorMessage返回代码而不是消息

时间:2013-10-22 08:48:42

标签: c++ com msmq

我有一些代码调用_com_object的ErroerMessage()函数来返回try,catch中的错误代码。

catch(const _com_error& error)
{
   myError = _T("Failed, Reason:")+error.ErrorMessage();
}

而不是让实际的Windows字符串解释错误我得到错误代码返回。在这种情况下为0xC00E001E

我已经包含mqoa.dll以允许访问MSMQ的Windows dll

我使用了断点并逐步执行,发现返回的wCode始终为0.

任何帮助都将不胜感激。

由于

1 个答案:

答案 0 :(得分:1)

_T("Failed, Reason:")是指向TCHAR的const指针。 ErrorMessage()还返回一个指向TCHAR的const指针。 +运算符最终执行指针运算而不是连接字符串。

如果myErrorCString,您可以使用其+=运算符:

myError = _T("Failed, Reason: ");
myError += error.ErrorMessage();

或其Format()方法:

myError.Format(_T("Failed, Reason: %s"), error.ErrorMessage());