Сообщений 2 Оценка 77 Оценить |
Функция GetLastError позволяет получать код последней ошибки. При этом, сам код ошибки может сказать Вам о многом, но иногда нужно ещё и сказать об этом пользователю, выдав вразумительное сообщение. И конечно же лучший вариант - получить текст сообщения об ошибке от самой операционной системы.
В Win32 API есть функция FormatMessage, которая позволяет получать текст ошибки по её коду. Ниже приведён текст функции, которая принимает в качестве параметров код ошибки, буфер в который будет записано сообщение и его длину. Функция возвращает указатель на исходный буфер.
#include <windows.h> #include <tchar.h> LPTSTR GetSystemMessage (DWORD dwError,LPTSTR lpszMessage,DWORD dwMsgLen) { if (lpszMessage) { lpszMessage[0] = 0; if (dwError) { ::FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, NULL, dwError, MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT), lpszMessage,dwMsgLen,NULL); size_t len = _tcslen(lpszMessage); while (len && (lpszMessage[len-1] == '\r' || lpszMessage[len-1] == '\n')) lpszMessage[--len] = 0; } return lpszMessage; } return ""; } |
Сообщений 2 Оценка 77 Оценить |