Windows ErrorMessage возвращает код, а не сообщение

У меня есть некоторый код, который вызывает функцию ErroerMessage () _com_object, чтобы вернуть код ошибки при попытке поймать.

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

Вместо того, чтобы получить строку с объяснением ошибки, я получаю код ошибки. В этом случае 0xC00E001E

Я включил mqoa.dll, чтобы разрешить доступ к Windows DLL для MSMQ

Я использовал точки останова, прошел и обнаружил, что возвращаемый wCode всегда равен 0.

Любая помощь будет оценена.

Спасибо

1

Решение

_T("Failed, Reason:") константный указатель на TCHAR, Сообщение об ошибке() также возвращает константный указатель на TCHAR, + оператор заканчивает тем, что выполняет арифметику указателя вместо конкатенации строк.

Если myError это CStringВы можете использовать его +знак равно оператор:

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

Или его Формат() метод:

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

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]