1

我有一些代码调用 _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。

任何帮助,将不胜感激。

谢谢

4

1 回答 1

1

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

如果myError是 a CString,您可以使用它的+=运算符:

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

或者它的Format()方法:

myError.Format(_T("Failed, Reason: %s"), error.ErrorMessage());
于 2013-10-22T09:12:54.200 回答