aboutsummaryrefslogtreecommitdiff
path: root/src/win/native/Window.cpp
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2020-10-28 20:36:47 +0800
committercrupest <crupest@outlook.com>2020-10-28 20:36:47 +0800
commitcf07d193b97168048a72793c59f096504acf78a5 (patch)
tree8d14f6eba4140265931efc877d6371e8cf5cbf96 /src/win/native/Window.cpp
parenta09a9645d3c823e3559659dc1ddd213510755820 (diff)
downloadcru-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.cpp22
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;
}