pch.h
1 #pragma once 2 #define NOMINMAX 3 #define WIN32_LEAN_AND_MEAN 4 5 #include <initguid.h> 6 #include <windows.h> 7 #include <Unknwn.h> 8 #include <restrictederrorinfo.h> 9 #include <hstring.h> 10 #include <dxgi.h> 11 #include <d3d11.h> 12 #include <d3d11_4.h> 13 #include <dxgi1_6.h> 14 #include <dxgidebug.h> 15 #include <d2d1_3.h> 16 #include <dwrite.h> 17 #include <dwmapi.h> 18 #include <windows.graphics.directX.direct3d11.interop.h> 19 #include <windows.graphics.capture.interop.h> 20 #include <windows.graphics.capture.h> 21 22 #include <thread> 23 #include <functional> 24 #include <cassert> 25 #include <cinttypes> 26 #include <iomanip> 27 #include <limits> 28 #include <sstream> 29 #include <filesystem> 30 #include <string_view> 31 #include <chrono> 32 #include <stdio.h> 33 34 // Undefine GetCurrentTime macro to prevent 35 // conflict with Storyboard::GetCurrentTime 36 #undef GetCurrentTime 37 38 #include <winrt/Windows.Foundation.h> 39 #include <winrt/Windows.Foundation.Collections.h> 40 #include <winrt/Windows.ApplicationModel.Activation.h> 41 #include <winrt/Microsoft.UI.Composition.h> 42 #include <winrt/Microsoft.UI.Xaml.h> 43 #include <winrt/Microsoft.UI.Xaml.Controls.h> 44 #include <winrt/Microsoft.UI.Xaml.Controls.Primitives.h> 45 #include <winrt/Microsoft.UI.Xaml.Data.h> 46 #include <winrt/Microsoft.UI.Xaml.Interop.h> 47 #include <winrt/Microsoft.UI.Xaml.Markup.h> 48 #include <winrt/Microsoft.UI.Xaml.Media.h> 49 #include <winrt/Microsoft.UI.Xaml.Navigation.h> 50 #include <winrt/Microsoft.UI.Xaml.Shapes.h> 51 #include <winrt/Microsoft.UI.Dispatching.h> 52 #include <winrt/Microsoft.Windows.ApplicationModel.Resources.h> 53 #include <winrt/Windows.Graphics.DirectX.h> 54 #include <winrt/Windows.Graphics.DirectX.Direct3d11.h> 55 #include <winrt/Windows.Graphics.Capture.h> 56 57 #include <inspectable.h> 58 59 #include <wil/cppwinrt_helpers.h> 60 #include <wil/resource.h> 61 #include <wil/com.h> 62 63 #include <common/logger/logger.h> 64 #include <common/utils/winapi_error.h> 65 66 namespace winrt 67 { 68 using namespace Windows::Foundation; 69 using namespace Windows::Foundation::Numerics; 70 using namespace Windows::Graphics; 71 using namespace Windows::Graphics::Capture; 72 using namespace Windows::Graphics::DirectX; 73 using namespace Windows::Graphics::DirectX::Direct3D11; 74 using namespace Microsoft::UI::Xaml; 75 using namespace Microsoft::UI::Xaml::Controls; 76 using namespace Microsoft::UI::Xaml::Navigation; 77 using namespace Microsoft::Windows::ApplicationModel::Resources; 78 } 79 80 template<typename Func> 81 [[nodiscard]] std::thread SpawnLoggedThread(const wchar_t* description, Func&& f) 82 { 83 return std::thread{ [f = std::move(f), description = std::wstring{ description }] { 84 try 85 { 86 SetThreadDescription(GetCurrentThread(), description.c_str()); 87 f(); 88 } 89 catch (const std::exception& ex) 90 { 91 Logger::error(L"{}:", description); 92 Logger::error("{}", ex.what()); 93 } 94 catch (winrt::hresult_error const& ex) 95 { 96 Logger::error(L"{}: {}", description, ex.message().c_str()); 97 } 98 catch (...) 99 { 100 Logger::error(L"{} unknown error: {}", description, get_last_error_or_default(GetLastError())); 101 } 102 } }; 103 } 104 105 #define WM_CURSOR_LEFT_MONITOR (WM_USER + 1)