aboutsummaryrefslogtreecommitdiff
path: root/src/ui/window.cpp
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2018-11-09 21:03:45 +0800
committercrupest <crupest@outlook.com>2018-11-09 21:03:45 +0800
commit4b219b569c16db6027dd36e4656152f261321c60 (patch)
tree2f40c6aeb74382c5a958f153e4598950dffae94c /src/ui/window.cpp
parent6515948e3f5b97f90446536f72e99d71e96f9de7 (diff)
parent9ef75fe91837394620edb91f332065a4f34a0281 (diff)
downloadcru-4b219b569c16db6027dd36e4656152f261321c60.tar.gz
cru-4b219b569c16db6027dd36e4656152f261321c60.tar.bz2
cru-4b219b569c16db6027dd36e4656152f261321c60.zip
Merge branch 'master' into theme-resource
Diffstat (limited to 'src/ui/window.cpp')
-rw-r--r--src/ui/window.cpp22
1 files changed, 15 insertions, 7 deletions
diff --git a/src/ui/window.cpp b/src/ui/window.cpp
index e426bc78..349b78ff 100644
--- a/src/ui/window.cpp
+++ b/src/ui/window.cpp
@@ -31,7 +31,7 @@ namespace cru::ui
}
LRESULT __stdcall GeneralWndProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam) {
- auto window = Application::GetInstance()->GetWindowManager()->FromHandle(hWnd);
+ auto window = WindowManager::GetInstance()->FromHandle(hWnd);
LRESULT result;
if (window != nullptr && window->HandleWindowMessage(hWnd, Msg, wParam, lParam, result))
@@ -40,6 +40,14 @@ namespace cru::ui
return DefWindowProc(hWnd, Msg, wParam, lParam);
}
+ WindowManager* WindowManager::GetInstance()
+ {
+ return Application::GetInstance()->ResolveSingleton<WindowManager>([](auto)
+ {
+ return new WindowManager{};
+ });
+ }
+
WindowManager::WindowManager() {
general_window_class_ = std::make_unique<WindowClass>(
L"CruUIWindowClass",
@@ -106,20 +114,20 @@ namespace cru::ui
}
Window::Window() : Control(WindowConstructorTag{}, this), control_list_({ this }) {
- const auto app = Application::GetInstance();
+ const auto window_manager = WindowManager::GetInstance();
hwnd_ = CreateWindowEx(0,
- app->GetWindowManager()->GetGeneralWindowClass()->GetName(),
+ window_manager->GetGeneralWindowClass()->GetName(),
L"", WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
- nullptr, nullptr, app->GetInstanceHandle(), nullptr
+ nullptr, nullptr, Application::GetInstance()->GetInstanceHandle(), nullptr
);
if (hwnd_ == nullptr)
throw std::runtime_error("Failed to create window.");
- app->GetWindowManager()->RegisterWindow(hwnd_, this);
+ window_manager->RegisterWindow(hwnd_, this);
- render_target_ = app->GetGraphManager()->CreateWindowRenderTarget(hwnd_);
+ render_target_ = graph::GraphManager::GetInstance()->CreateWindowRenderTarget(hwnd_);
SetCursor(cursors::arrow);
}
@@ -511,7 +519,7 @@ namespace cru::ui
}
void Window::OnDestroyInternal() {
- Application::GetInstance()->GetWindowManager()->UnregisterWindow(hwnd_);
+ WindowManager::GetInstance()->UnregisterWindow(hwnd_);
hwnd_ = nullptr;
}