2013-10-03 6 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을 전달하기 때문에 이것은 일어날 기다리고있는 버그 일 것입니다.