2013-10-03 3 views

ответ

8

Это делает трюк.

QString getLastErrorMsg() { 
    LPWSTR bufPtr = NULL; 
    DWORD err = GetLastError(); 
    FormatMessageW(FORMAT_MESSAGE_ALLOCATE_BUFFER | 
        FORMAT_MESSAGE_FROM_SYSTEM | 
        FORMAT_MESSAGE_IGNORE_INSERTS, 
        NULL, err, 0, (LPWSTR)&bufPtr, 0, NULL); 
    const QString result = 
     (bufPtr) ? QString::fromUtf16((const ushort*)bufPtr).trimmed() : 
        QString("Unknown Error %1").arg(err); 
    LocalFree(bufPtr); 
    return result; 
} 

Всегда следует указать FORMAT_MESSAGE_IGNORE_INSERTS при вызове FormatMessage. Некоторые сообщения об ошибках содержат заполнители, что приведет к ошибкам, если ваш код не перейдет в список аргументов. Поскольку мы передаем NULL, это будет ошибкой, ожидающей появления.

Смежные вопросы