aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--src/error.hpp3
-rw-r--r--src/main.cpp29
2 files changed, 21 insertions, 11 deletions
diff --git a/src/error.hpp b/src/error.hpp
index e8f47a4..0c5b917 100644
--- a/src/error.hpp
+++ b/src/error.hpp
@@ -7,6 +7,7 @@
#include <Windows.h>
+#include <exception>
#include <system_error>
typedef std::system_error Error;
@@ -24,7 +25,7 @@ namespace error
throw make(function_name);
}
- void report(const Error& e)
+ void report(const std::exception& e)
{
MessageBoxA(NULL, e.what(), NULL, MB_OK);
}
diff --git a/src/main.cpp b/src/main.cpp
index be8d5e7..3ae2bcc 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -15,6 +15,7 @@
#include <CommCtrl.h>
#include <windowsx.h>
+#include <exception>
#include <string>
#pragma comment(linker, "/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
@@ -223,17 +224,25 @@ int APIENTRY wWinMain(
wchar_t*,
int)
{
- const auto ret = DialogBoxW(
- instance,
- MAKEINTRESOURCE(IDD_MAINDIALOG),
- NULL,
- dialog_main);
+ try
+ {
+ const auto ret = DialogBoxW(
+ instance,
+ MAKEINTRESOURCE(IDD_MAINDIALOG),
+ NULL,
+ dialog_main);
- switch (ret)
+ switch (ret)
+ {
+ case -1:
+ error::report(error::make("DialogBoxW"));
+ default:
+ return static_cast<int>(ret);
+ }
+ }
+ catch (const std::exception& e)
{
- case -1:
- error::report(error::make("DialogBoxW"));
- default:
- return static_cast<int>(ret);
+ error::report(e);
+ return 1;
}
}