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
   52   53   54   55   56   57   58   59   60   61   62