Page 57 - 4989
P. 57
помилки:
void ShowError(DWORD code)
{
LPVOID lpMsgBuf;
FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS,
NULL, code,
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
(LPTSTR)&lpMsgBuf, 0, NULL);
MessageBox(NULL, (LPCTSTR)lpMsgBuf, TEXT("Error"), MB_OK);
LocalFree(lpMsgBuf);
}
У консольній програмі замість MessageBox можна застосувати
також вивід у консоль за допомогою cout.
Приклади використання функції ShowError:
1) для функції, що повертає дескриптор:
HANDLE hFile = CreateFile(L"c:\\1.txt", GENERIC_WRITE,
0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL,
NULL);
if (hFile == INVALID_HANDLE_VALUE)
{
DWORD dw = GetLastError();
ShowError(dw);
}
2) для функції, що повертає код помилки:
HKEY keySoft;
DWORD res = RegOpenKeyEx(HKEY_LOCAL_MACHINE,
L"Software", 0, KEY_CREATE_SUB_KEY, &keySoft);
if (res != ERROR_SUCCESS)
{
ShowError(res);
}
Детальна довідка по функціям Windows API міститься в
MSDN (Microsoft Developer Network). Актуальна версія MSDN
доступна онлайн (https://msdn.microsoft.com/en-
57