C++ WINAPI pobieranie ostatniego błędu

0

Witam
Próbuje coś robić w winapi i mam taki problem że chciałbym pobrać ostatni błąd funkcją "GetLastError" która zwraca "DWORD" unsigned long. Chciałbym gdzieś to wyświetlić. Program tworze w wersji okienkowej, wiem że można zrobić konsole, ale to jest dość trudne, później wyświetlanie tych danych.
Tworzę buffor "LPSTR" funkcją GlobalAlloc. a następnie zawartość tego bufora albo narysuję TextOut lub stworzę MessageBox, te dwie funkcje przyjmują takie typy danych jak LPSTR. Tylko nie wiem jak przerzutować DWORD(unsinged long) na char[]

4

Tworzę buffor "LPSTR" funkcją GlobalAlloc.

Nie potrzebujesz GlobalAlloc. Używaj new+delete albo tablicy.

Tylko nie wiem jak przerzutować DWORD(unsinged long) na char[]

std::to_string

#include <string>
#include <windows.h>

int main()
{
    auto err = GetLastError();
    MessageBoxA(nullptr, std::to_string(err).c_str(), "Blah", MB_OK);
    MessageBoxW(nullptr, std::to_wstring(err).c_str(), L"Blah but in Unicode", MB_OK);
}
5

Raczej nie chcesz rzutować liczby na string, tylko dostać sformatowany komunikat błędu. Można to zrobić tak.

std::string winLastErrStr()
{
    CHAR errorMsg[1024];
    const DWORD errorCode = GetLastError();

    FormatMessageA(
      FORMAT_MESSAGE_FROM_SYSTEM,
      NULL,
      errorCode,
      0,
      errorMsg,
      1024,
      NULL);

    return std::string(errorMsg);
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1