aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2022-01-12 23:01:40 +0800
committercrupest <crupest@outlook.com>2022-01-12 23:01:40 +0800
commitab63f82a383804fe1787c0daf2b5d98512fa7398 (patch)
tree89681fca2f762e7e3ca264bba56d24a975e4661c
parentc409caa8873e25699fc10ae435e8d123685f28f3 (diff)
downloadcru-ab63f82a383804fe1787c0daf2b5d98512fa7398.tar.gz
cru-ab63f82a383804fe1787c0daf2b5d98512fa7398.tar.bz2
cru-ab63f82a383804fe1787c0daf2b5d98512fa7398.zip
...
-rw-r--r--include/cru/win/gui/Window.hpp4
-rw-r--r--src/win/gui/Window.cpp11
2 files changed, 10 insertions, 5 deletions
diff --git a/include/cru/win/gui/Window.hpp b/include/cru/win/gui/Window.hpp
index 7a982da7..41eac5fa 100644
--- a/include/cru/win/gui/Window.hpp
+++ b/include/cru/win/gui/Window.hpp
@@ -173,8 +173,8 @@ class WinNativeWindow : public WinNativeResource, public virtual INativeWindow {
WinUiApplication* application_;
WindowStyleFlag style_flag_{};
- WindowVisibilityType visibility_{};
- Rect client_rect_;
+ WindowVisibilityType visibility_ = WindowVisibilityType::Hide;
+ Rect client_rect_{100, 100, 400, 300};
HWND hwnd_ = nullptr;
WinNativeWindow* parent_window_ = nullptr;
diff --git a/src/win/gui/Window.cpp b/src/win/gui/Window.cpp
index 827cc0a8..7ee2fb71 100644
--- a/src/win/gui/Window.cpp
+++ b/src/win/gui/Window.cpp
@@ -3,6 +3,7 @@
#include "WindowManager.hpp"
#include "cru/common/Logger.hpp"
#include "cru/platform/Check.hpp"
+#include "cru/platform/graphics/NullPainter.hpp"
#include "cru/platform/gui/Base.hpp"
#include "cru/platform/gui/DebugFlags.hpp"
#include "cru/platform/gui/Window.hpp"
@@ -16,6 +17,7 @@
#include <windowsx.h>
#include <winuser.h>
+#include <memory>
namespace cru::platform::gui::win {
namespace {
@@ -76,7 +78,7 @@ void WinNativeWindow::Close() {
if (hwnd_) ::DestroyWindow(hwnd_);
}
-void WinNativeWindow::SetParent(INativeWindow *parent) {
+void WinNativeWindow::SetParent(INativeWindow* parent) {
auto p = CheckPlatform<WinNativeWindow>(parent, GetPlatformId());
parent_window_ = p;
@@ -204,8 +206,11 @@ void WinNativeWindow::RequestRepaint() {
}
std::unique_ptr<graphics::IPainter> WinNativeWindow::BeginPaint() {
- return std::make_unique<graphics::win::direct::D2DWindowPainter>(
- window_render_target_.get());
+ if (hwnd_)
+ return std::make_unique<graphics::win::direct::D2DWindowPainter>(
+ window_render_target_.get());
+ else
+ return std::make_unique<graphics::NullPainter>();
}
void WinNativeWindow::SetCursor(std::shared_ptr<ICursor> cursor) {