diff options
author | crupest <crupest@outlook.com> | 2020-10-28 20:36:47 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2020-10-28 20:36:47 +0800 |
commit | cf07d193b97168048a72793c59f096504acf78a5 (patch) | |
tree | 8d14f6eba4140265931efc877d6371e8cf5cbf96 /src/win/native/Window.cpp | |
parent | a09a9645d3c823e3559659dc1ddd213510755820 (diff) | |
download | cru-cf07d193b97168048a72793c59f096504acf78a5.tar.gz cru-cf07d193b97168048a72793c59f096504acf78a5.tar.bz2 cru-cf07d193b97168048a72793c59f096504acf78a5.zip |
...
Diffstat (limited to 'src/win/native/Window.cpp')
-rw-r--r-- | src/win/native/Window.cpp | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/src/win/native/Window.cpp b/src/win/native/Window.cpp index 7efc6160..735221ca 100644 --- a/src/win/native/Window.cpp +++ b/src/win/native/Window.cpp @@ -1,16 +1,14 @@ #include "cru/win/native/Window.hpp" -#include "DpiUtil.hpp" -#include "WindowD2DPainter.hpp" #include "WindowManager.hpp" #include "cru/common/Logger.hpp" #include "cru/platform/Check.hpp" +#include "cru/win/graph/direct/WindowPainter.hpp" #include "cru/win/native/Cursor.hpp" #include "cru/win/native/Exception.hpp" #include "cru/win/native/Keyboard.hpp" #include "cru/win/native/UiApplication.hpp" #include "cru/win/native/WindowClass.hpp" -#include "cru/win/native/WindowRenderTarget.hpp" #include <imm.h> #include <windowsx.h> @@ -50,8 +48,10 @@ WinNativeWindow::WinNativeWindow(WinUiApplication* application, SetCursor(application->GetCursorManager()->GetSystemCursor( cru::platform::native::SystemCursorType::Arrow)); - window_render_target_ = std::make_unique<WindowRenderTarget>( - application->GetDirectFactory(), this); + window_render_target_ = + std::make_unique<graph::win::direct::D2DWindowRenderTarget>( + application->GetDirectFactory(), hwnd_); + window_render_target_->SetDpi(dpi_, dpi_); } WinNativeWindow::~WinNativeWindow() { @@ -137,7 +137,8 @@ void WinNativeWindow::RequestRepaint() { } std::unique_ptr<graph::IPainter> WinNativeWindow::BeginPaint() { - return std::make_unique<WindowD2DPainter>(window_render_target_.get()); + return std::make_unique<graph::win::direct::D2DWindowPainter>( + window_render_target_.get()); } void WinNativeWindow::SetCursor(std::shared_ptr<ICursor> cursor) { @@ -334,6 +335,15 @@ bool WinNativeWindow::HandleNativeWindowMessage(HWND hwnd, UINT msg, case WM_IME_COMPOSITION: *result = 0; return true; + case WM_DPICHANGED: { + dpi_ = static_cast<float>(LOWORD(w_param)); + const RECT* suggest_rect = reinterpret_cast<const RECT*>(l_param); + window_render_target_->SetDpi(dpi_, dpi_); + SetWindowPos(hwnd_, NULL, suggest_rect->left, suggest_rect->top, + suggest_rect->right - suggest_rect->left, + suggest_rect->bottom - suggest_rect->top, + SWP_NOZORDER | SWP_NOACTIVATE); + } default: return false; } |