diff options
author | John Ankarström <john@ankarstrom.se> | 2022-07-18 03:03:56 +0200 |
---|---|---|
committer | John Ankarström <john@ankarstrom.se> | 2022-07-18 03:03:56 +0200 |
commit | 41745326d8440340a87b5179139b2915efe3715d (patch) | |
tree | 7ae465793cc80793efc5392b2628aebaf18819bd /c/main.cpp | |
parent | 0531bf802017b7792b90270b6346b3c88ffcea70 (diff) | |
download | EpisodeBrowser-41745326d8440340a87b5179139b2915efe3715d.tar.gz |
Add Unicode support to Win32Error.
Diffstat (limited to 'c/main.cpp')
-rw-r--r-- | c/main.cpp | 18 |
1 files changed, 9 insertions, 9 deletions
@@ -59,6 +59,10 @@ void OnTerminate() } else MessageBoxA(NULL, "The program was terminated due to a Prolog exception.", "Fatal Error", MB_ICONERROR); + } catch (Win32Error& e) { + std::basic_string<TCHAR> tstr = TEXT("The program was terminated due to a Windows error: "); + tstr += e.twhat(); + MessageBox(NULL, tstr.c_str(), TEXT("Fatal Error"), MB_ICONERROR); } catch (std::exception& e) { std::string str = "The program was terminated due to an exception: "; str += e.what(); @@ -86,8 +90,7 @@ int WINAPI WinMain(const HINSTANCE hInstance, const HINSTANCE, char* const, cons INITCOMMONCONTROLSEX icc; icc.dwSize = sizeof(icc); icc.dwICC = ICC_WIN95_CLASSES; - if (!InitCommonControlsEx(&icc)) - throw std::runtime_error("Could not initialize common controls."); + if (!InitCommonControlsEx(&icc)) throw Win32Error(GetLastError()); g_hPopupMenu = LoadMenu(NULL, MAKEINTRESOURCE(IDR_POPUPMENU)); g_hPopupMenu = GetSubMenu(g_hPopupMenu, 0); @@ -103,14 +106,11 @@ int WINAPI WinMain(const HINSTANCE hInstance, const HINSTANCE, char* const, cons wc.lpszMenuName = MAKEINTRESOURCE(IDR_MENU); wc.lpszClassName = TEXT("Episode Browser"); wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION); - if (!RegisterClassEx(&wc)) - throw std::runtime_error("Could not register window class."); + if (!RegisterClassEx(&wc)) throw Win32Error(GetLastError()); /* Create window. A CBT hook is used to initialize important * global variables before any messages are sent to the new - * window. It is vital that the hook is set up and torn down - * correctly. Note that if the unhook fails, it is useless to - * try to show an error dialog. */ + * window. It is vital that the hook is set up correctly. */ const HHOOK hHook = SetWindowsHookEx(WH_CBT, CBTProc, 0, GetCurrentThreadId()); if (!hHook) throw Win32Error(GetLastError()); const HWND hWnd = CreateWindowEx( @@ -121,9 +121,9 @@ int WINAPI WinMain(const HINSTANCE hInstance, const HINSTANCE, char* const, cons CW_USEDEFAULT, CW_USEDEFAULT, 0, 0, NULL, NULL, hInstance, NULL ); + if (!hHook) throw Win32Error(GetLastError()); + if (!hWnd) throw Win32Error(GetLastError()); UnhookWindowsHookEx(hHook); - if (!hHook) _Exit(1); - if (!hWnd) throw std::runtime_error("Could not create main window."); g_hWndStatus = CreateStatusBar(hWnd, hInstance); ShowWindow(hWnd, nCmdShow); |