diff options
| author | Yuqian Yang <crupest@crupest.life> | 2025-11-07 00:11:38 +0800 |
|---|---|---|
| committer | Yuqian Yang <crupest@crupest.life> | 2025-11-07 00:15:26 +0800 |
| commit | ccf48eb93a101ba2412497ad5f3966e4f31d2178 (patch) | |
| tree | 00911e33af6797dcbf897d125d11e44bf596b187 /include/cru/base/platform/win/Base.h | |
| parent | ebb83c66e225375212f8e82e6b1bd8d3e3eb8646 (diff) | |
| download | cru-ccf48eb93a101ba2412497ad5f3966e4f31d2178.tar.gz cru-ccf48eb93a101ba2412497ad5f3966e4f31d2178.tar.bz2 cru-ccf48eb93a101ba2412497ad5f3966e4f31d2178.zip | |
Win Resource.h to Base.h.
Diffstat (limited to 'include/cru/base/platform/win/Base.h')
| -rw-r--r-- | include/cru/base/platform/win/Base.h | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/include/cru/base/platform/win/Base.h b/include/cru/base/platform/win/Base.h new file mode 100644 index 00000000..83420461 --- /dev/null +++ b/include/cru/base/platform/win/Base.h @@ -0,0 +1,49 @@ +#pragma once + +#ifndef _WIN32 +#error "This file can only be included on Windows." +#endif + +#include "../../Base.h" + +#define NOMINMAX +#define WIN32_LEAN_AND_MEAN +#include <Windows.h> +#undef CreateWindow +#undef DrawText +#undef CreateFont +#undef CreateEvent + +namespace cru::platform::win { +class CRU_BASE_API HResultError : public Exception { + public: + explicit HResultError(HRESULT h_result); + HResultError(HRESULT h_result, std::string_view message); + + HRESULT GetHResult() const { return h_result_; } + + private: + HRESULT h_result_; +}; + +inline void ThrowIfFailed(const HRESULT h_result) { + if (FAILED(h_result)) throw HResultError(h_result); +} + +inline void ThrowIfFailed(const HRESULT h_result, std::string_view message) { + if (FAILED(h_result)) throw HResultError(h_result, message); +} + +class CRU_BASE_API Win32Error : public Exception { + public: + // ::GetLastError is automatically called to get the error code. + // The same as Win32Error(::GetLastError(), message) + explicit Win32Error(std::string_view message); + Win32Error(DWORD error_code, std::string_view message); + + DWORD GetErrorCode() const { return error_code_; } + + private: + DWORD error_code_; +}; +} // namespace cru::platform::win |
