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[]
- Rejestracja:około 4 lata
- Ostatnio:ponad rok
- Postów:103
0

- Rejestracja:ponad 21 lat
- Ostatnio:około 2 godziny
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);
}
edytowany 3x, ostatnio: Azarien

- Rejestracja:prawie 16 lat
- Ostatnio:około 3 godziny
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);
}
edytowany 3x, ostatnio: several

kq
Z reguły łatwiej używać numerycznych kodów błędów, lub pary numer+string
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.