diff options
author | 杨宇千 <crupest@outlook.com> | 2018-12-06 21:32:58 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-12-06 21:32:58 +0800 |
commit | b028e74a48de181ca078ad3bf4ababf4fa146cd3 (patch) | |
tree | 5b15e3f97c67e81ad99fb531f30681300a79b5a9 /src/ui/window.cpp | |
parent | f0e2b2d3763dd100a5e9d6cda566724d2b7da965 (diff) | |
parent | de5d84f64ba7673a5155aab67244fedc04753b94 (diff) | |
download | cru-b028e74a48de181ca078ad3bf4ababf4fa146cd3.tar.gz cru-b028e74a48de181ca078ad3bf4ababf4fa146cd3.tar.bz2 cru-b028e74a48de181ca078ad3bf4ababf4fa146cd3.zip |
Merge pull request #36 from crupest/tree
Enhance tree.
Diffstat (limited to 'src/ui/window.cpp')
-rw-r--r-- | src/ui/window.cpp | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/src/ui/window.cpp b/src/ui/window.cpp index dfc6db43..86fa4436 100644 --- a/src/ui/window.cpp +++ b/src/ui/window.cpp @@ -116,7 +116,7 @@ namespace cru::ui const auto cursor = control->GetCursor(); if (cursor != nullptr) return cursor; - control = control->GetParent(); + control = control->GetInternalParent(); } return cursors::arrow; } @@ -132,8 +132,11 @@ namespace cru::ui return new Window(tag_popup_constructor{}, parent, caption); } - Window::Window(tag_overlapped_constructor) : Control(WindowConstructorTag{}, this) + + Window::Window(tag_overlapped_constructor) { + BeforeCreateHwnd(); + const auto window_manager = WindowManager::GetInstance(); hwnd_ = CreateWindowEx(0, @@ -149,11 +152,13 @@ namespace cru::ui AfterCreateHwnd(window_manager); } - Window::Window(tag_popup_constructor, Window* parent, const bool caption) : Control(WindowConstructorTag{}, this) + Window::Window(tag_popup_constructor, Window* parent, const bool caption) { if (parent != nullptr && !parent->IsWindowValid()) throw std::runtime_error("Parent window is not valid."); + BeforeCreateHwnd(); + parent_window_ = parent; const auto window_manager = WindowManager::GetInstance(); @@ -172,6 +177,11 @@ namespace cru::ui AfterCreateHwnd(window_manager); } + void Window::BeforeCreateHwnd() + { + window_ = this; + } + void Window::AfterCreateHwnd(WindowManager* window_manager) { window_manager->RegisterWindow(hwnd_, this); @@ -459,7 +469,7 @@ namespace cru::ui return PiToDip(point); } - Point Window::GetPositionRelative() + Point Window::GetOffset() { return Point(); } |