aboutsummaryrefslogtreecommitdiff
path: root/src/win/gui/Window.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/win/gui/Window.cpp')
-rw-r--r--src/win/gui/Window.cpp11
1 files changed, 8 insertions, 3 deletions
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) {