Rei*_*ica 0 winapi qt getlasterror qtcore
GetLastError()可以某种方式传递给FormatMessageW格式化的消息.目标是最终得到一个QString.这样做的正确和安全的方法是什么?
这样就可以了.
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;
}
Run Code Online (Sandbox Code Playgroud)
在调用FormatMessage时,应始终指定FORMAT_MESSAGE_IGNORE_INSERTS.一些错误消息确实包含占位符,这将导致错误,除非您的代码传递参数列表.由于我们传递NULL,这将是等待发生的错误.
| 归档时间: |
|
| 查看次数: |
1616 次 |
| 最近记录: |