diff options
Diffstat (limited to 'c')
-rw-r--r-- | c/defs.h | 9 | ||||
-rw-r--r-- | c/main.cpp | 8 |
2 files changed, 8 insertions, 9 deletions
@@ -2,6 +2,7 @@ #define DEFS_H #include <memory> +#include <optional> #include <windows.h> #include <commctrl.h> #include <SWI-Prolog.h> @@ -144,15 +145,13 @@ inline int Dpi(int i) } template <class T, typename ...A> -std::unique_ptr<T> try_make_unique(A ...args) +std::optional<T> try_make(A ...args) { - std::unique_ptr<T> up; try { - up = std::make_unique<T>(args...); + return T(args...); } catch (...) { - up = nullptr; + return {}; } - return up; } #endif @@ -35,14 +35,14 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR tszErr; /* Set constant values. */ - if (auto upLib = try_make_unique<Library>(TEXT("uxtheme.dll"))) + if (auto upLib = try_make<Library>(TEXT("uxtheme.dll"))) if (upLib->GetProcAddress("SetWindowTheme")) { g_bThemes = 1; } g_cxVScroll = GetSystemMetrics(SM_CXVSCROLL); /* Setup fonts. */ - if (auto upLib = try_make_unique<Library>(TEXT("User32.dll"))) { + if (auto upLib = try_make<Library>(TEXT("User32.dll"))) { if (upLib->GetProcAddress("SystemParametersInfo" WA)) { NONCLIENTMETRICS m; m.cbSize = sizeof(NONCLIENTMETRICS); @@ -140,8 +140,8 @@ static LRESULT CALLBACK CBTProc(int nCode, WPARAM wParam, LPARAM lParam) g_hWnd = (HWND)wParam; /* Get DPI. */ - if (auto upLib = try_make_unique<Library>(TEXT("User32.dll"))) - if (auto GetDpiForWindow = (UINT (*)(HWND))upLib->GetProcAddress("GetDpiForWindow")) + if (auto opLib = try_make<Library>(TEXT("User32.dll"))) + if (auto GetDpiForWindow = (UINT (*)(HWND))opLib->GetProcAddress("GetDpiForWindow")) g_iDPI = GetDpiForWindow(g_hWnd); /* Create child windows. */ |