2013-10-03 22 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; 
} 

調用FormatMessage時,應該總是指定FORMAT_MESSAGE_IGNORE_INSERTS。有些錯誤消息確實包含佔位符,這會導致錯誤,除非您的代碼傳遞參數列表。由於我們傳遞NULL,這將是等待發生的錯誤。

相關問題