From 74bb9cd27242b9320f99ff4d2b50c3051576cc14 Mon Sep 17 00:00:00 2001 From: crupest Date: Tue, 8 Feb 2022 16:53:51 +0800 Subject: ... --- src/win/gui/Clipboard.cpp | 8 +++--- src/win/gui/Cursor.cpp | 6 ++--- src/win/gui/GodWindow.cpp | 10 +++---- src/win/gui/InputMethod.cpp | 16 ++++++------ src/win/gui/Keyboard.cpp | 2 +- src/win/gui/Resource.cpp | 4 +-- src/win/gui/TimerManager.cpp | 6 ++--- src/win/gui/TimerManager.h | 61 +++++++++++++++++++++++++++++++++++++++++++ src/win/gui/TimerManager.hpp | 61 ------------------------------------------- src/win/gui/UiApplication.cpp | 32 +++++++++++------------ src/win/gui/Window.cpp | 32 +++++++++++------------ src/win/gui/WindowClass.cpp | 4 +-- src/win/gui/WindowManager.cpp | 8 +++--- src/win/gui/WindowManager.h | 51 ++++++++++++++++++++++++++++++++++++ src/win/gui/WindowManager.hpp | 51 ------------------------------------ 15 files changed, 176 insertions(+), 176 deletions(-) create mode 100644 src/win/gui/TimerManager.h delete mode 100644 src/win/gui/TimerManager.hpp create mode 100644 src/win/gui/WindowManager.h delete mode 100644 src/win/gui/WindowManager.hpp (limited to 'src/win/gui') diff --git a/src/win/gui/Clipboard.cpp b/src/win/gui/Clipboard.cpp index 62db4ed8..6bb5d1c5 100644 --- a/src/win/gui/Clipboard.cpp +++ b/src/win/gui/Clipboard.cpp @@ -1,8 +1,8 @@ -#include "cru/win/gui/Clipboard.hpp" +#include "cru/win/gui/Clipboard.h" #include -#include "cru/common/Logger.hpp" -#include "cru/win/gui/GodWindow.hpp" -#include "cru/win/gui/UiApplication.hpp" +#include "cru/common/Logger.h" +#include "cru/win/gui/GodWindow.h" +#include "cru/win/gui/UiApplication.h" namespace cru::platform::gui::win { WinClipboard::WinClipboard(WinUiApplication* application) diff --git a/src/win/gui/Cursor.cpp b/src/win/gui/Cursor.cpp index a3a7f824..1d421b59 100644 --- a/src/win/gui/Cursor.cpp +++ b/src/win/gui/Cursor.cpp @@ -1,7 +1,7 @@ -#include "cru/win/gui/Cursor.hpp" +#include "cru/win/gui/Cursor.h" -#include "cru/common/Logger.hpp" -#include "cru/win/gui/Exception.hpp" +#include "cru/common/Logger.h" +#include "cru/win/gui/Exception.h" #include diff --git a/src/win/gui/GodWindow.cpp b/src/win/gui/GodWindow.cpp index 31974339..0c385bea 100644 --- a/src/win/gui/GodWindow.cpp +++ b/src/win/gui/GodWindow.cpp @@ -1,9 +1,9 @@ -#include "cru/win/gui/GodWindow.hpp" +#include "cru/win/gui/GodWindow.h" -#include "cru/common/Logger.hpp" -#include "cru/win/gui/Exception.hpp" -#include "cru/win/gui/UiApplication.hpp" -#include "cru/win/gui/WindowClass.hpp" +#include "cru/common/Logger.h" +#include "cru/win/gui/Exception.h" +#include "cru/win/gui/UiApplication.h" +#include "cru/win/gui/WindowClass.h" namespace cru::platform::gui::win { constexpr auto god_window_class_name = L"GodWindowClass"; diff --git a/src/win/gui/InputMethod.cpp b/src/win/gui/InputMethod.cpp index 47e17109..fedb72fe 100644 --- a/src/win/gui/InputMethod.cpp +++ b/src/win/gui/InputMethod.cpp @@ -1,11 +1,11 @@ -#include "cru/win/gui/InputMethod.hpp" - -#include "cru/common/Logger.hpp" -#include "cru/common/StringUtil.hpp" -#include "cru/platform/Check.hpp" -#include "cru/platform/gui/DebugFlags.hpp" -#include "cru/win/Exception.hpp" -#include "cru/win/gui/Window.hpp" +#include "cru/win/gui/InputMethod.h" + +#include "cru/common/Logger.h" +#include "cru/common/StringUtil.h" +#include "cru/platform/Check.h" +#include "cru/platform/gui/DebugFlags.h" +#include "cru/win/Exception.h" +#include "cru/win/gui/Window.h" #include diff --git a/src/win/gui/Keyboard.cpp b/src/win/gui/Keyboard.cpp index b706b240..124d6109 100644 --- a/src/win/gui/Keyboard.cpp +++ b/src/win/gui/Keyboard.cpp @@ -1,4 +1,4 @@ -#include "cru/win/gui/Keyboard.hpp" +#include "cru/win/gui/Keyboard.h" namespace cru::platform::gui::win { KeyCode VirtualKeyToKeyCode(int virtual_key) { diff --git a/src/win/gui/Resource.cpp b/src/win/gui/Resource.cpp index dc4de173..f45c5df5 100644 --- a/src/win/gui/Resource.cpp +++ b/src/win/gui/Resource.cpp @@ -1,5 +1,5 @@ -#include "cru/win/gui/Resource.hpp" -#include "cru/win/gui/Window.hpp" +#include "cru/win/gui/Resource.h" +#include "cru/win/gui/Window.h" namespace cru::platform::gui::win { String WinNativeResource::kPlatformId = u"Windows"; diff --git a/src/win/gui/TimerManager.cpp b/src/win/gui/TimerManager.cpp index f3da1f09..ce8fead6 100644 --- a/src/win/gui/TimerManager.cpp +++ b/src/win/gui/TimerManager.cpp @@ -1,7 +1,7 @@ -#include "TimerManager.hpp" +#include "TimerManager.h" -#include "cru/win/gui/Base.hpp" -#include "cru/win/gui/Exception.hpp" +#include "cru/win/gui/Base.h" +#include "cru/win/gui/Exception.h" #include "gsl/gsl_util" #include diff --git a/src/win/gui/TimerManager.h b/src/win/gui/TimerManager.h new file mode 100644 index 00000000..c44bd5bd --- /dev/null +++ b/src/win/gui/TimerManager.h @@ -0,0 +1,61 @@ +#pragma once +#include "cru/common/Event.h" +#include "cru/win/WinPreConfig.h" + +#include "cru/common/Base.h" +#include "cru/win/gui/GodWindow.h" +#include "cru/win/gui/WindowNativeMessageEventArgs.h" + +#include +#include +#include +#include + +namespace cru::platform::gui::win { +enum class TimerType { Immediate, Timeout, Interval }; + +struct TimerInfo { + TimerInfo(long long id, TimerType type, int period, + std::function action, UINT_PTR native_timer_id = 0) + : id(id), + type(type), + period(period), + action(std::move(action)), + native_timer_id(native_timer_id) {} + + long long id; + TimerType type; + int period; // in milliseconds + std::function action; + UINT_PTR native_timer_id; +}; + +class TimerManager : public Object { + public: + TimerManager(GodWindow* god_window); + + CRU_DELETE_COPY(TimerManager) + CRU_DELETE_MOVE(TimerManager) + + ~TimerManager() override = default; + + // Period is in milliseconds. When type is immediate, it is not checked and + // used. + long long SetTimer(TimerType type, int period, std::function action); + void CancelTimer(long long id); + + private: + void HandleGodWindowMessage(WindowNativeMessageEventArgs& args); + + void CreateNativeTimer(TimerInfo* info); + void KillNativeTimer(TimerInfo* info); + + private: + GodWindow* god_window_; + + EventRevokerListGuard event_guard_; + + long long next_id_ = 1; + std::unordered_map info_map_; +}; +} // namespace cru::platform::gui::win diff --git a/src/win/gui/TimerManager.hpp b/src/win/gui/TimerManager.hpp deleted file mode 100644 index a8db1075..00000000 --- a/src/win/gui/TimerManager.hpp +++ /dev/null @@ -1,61 +0,0 @@ -#pragma once -#include "cru/common/Event.hpp" -#include "cru/win/WinPreConfig.hpp" - -#include "cru/common/Base.hpp" -#include "cru/win/gui/GodWindow.hpp" -#include "cru/win/gui/WindowNativeMessageEventArgs.hpp" - -#include -#include -#include -#include - -namespace cru::platform::gui::win { -enum class TimerType { Immediate, Timeout, Interval }; - -struct TimerInfo { - TimerInfo(long long id, TimerType type, int period, - std::function action, UINT_PTR native_timer_id = 0) - : id(id), - type(type), - period(period), - action(std::move(action)), - native_timer_id(native_timer_id) {} - - long long id; - TimerType type; - int period; // in milliseconds - std::function action; - UINT_PTR native_timer_id; -}; - -class TimerManager : public Object { - public: - TimerManager(GodWindow* god_window); - - CRU_DELETE_COPY(TimerManager) - CRU_DELETE_MOVE(TimerManager) - - ~TimerManager() override = default; - - // Period is in milliseconds. When type is immediate, it is not checked and - // used. - long long SetTimer(TimerType type, int period, std::function action); - void CancelTimer(long long id); - - private: - void HandleGodWindowMessage(WindowNativeMessageEventArgs& args); - - void CreateNativeTimer(TimerInfo* info); - void KillNativeTimer(TimerInfo* info); - - private: - GodWindow* god_window_; - - EventRevokerListGuard event_guard_; - - long long next_id_ = 1; - std::unordered_map info_map_; -}; -} // namespace cru::platform::gui::win diff --git a/src/win/gui/UiApplication.cpp b/src/win/gui/UiApplication.cpp index 6cacc8b2..59076a9c 100644 --- a/src/win/gui/UiApplication.cpp +++ b/src/win/gui/UiApplication.cpp @@ -1,19 +1,19 @@ -#include "cru/win/gui/UiApplication.hpp" - -#include "TimerManager.hpp" -#include "WindowManager.hpp" -#include "cru/common/Logger.hpp" -#include "cru/platform/Check.hpp" -#include "cru/win/DebugLogger.hpp" -#include "cru/win/StdOutLogger.hpp" -#include "cru/win/graphics/direct/Factory.hpp" -#include "cru/win/gui/Base.hpp" -#include "cru/win/gui/Clipboard.hpp" -#include "cru/win/gui/Cursor.hpp" -#include "cru/win/gui/Exception.hpp" -#include "cru/win/gui/GodWindow.hpp" -#include "cru/win/gui/InputMethod.hpp" -#include "cru/win/gui/Window.hpp" +#include "cru/win/gui/UiApplication.h" + +#include "TimerManager.h" +#include "WindowManager.h" +#include "cru/common/Logger.h" +#include "cru/platform/Check.h" +#include "cru/win/DebugLogger.h" +#include "cru/win/StdOutLogger.h" +#include "cru/win/graphics/direct/Factory.h" +#include "cru/win/gui/Base.h" +#include "cru/win/gui/Clipboard.h" +#include "cru/win/gui/Cursor.h" +#include "cru/win/gui/Exception.h" +#include "cru/win/gui/GodWindow.h" +#include "cru/win/gui/InputMethod.h" +#include "cru/win/gui/Window.h" namespace cru::platform::gui { std::unique_ptr CreateUiApplication() { diff --git a/src/win/gui/Window.cpp b/src/win/gui/Window.cpp index f30b4e59..ada3d59f 100644 --- a/src/win/gui/Window.cpp +++ b/src/win/gui/Window.cpp @@ -1,19 +1,19 @@ -#include "cru/win/gui/Window.hpp" - -#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" -#include "cru/win/graphics/direct/WindowPainter.hpp" -#include "cru/win/gui/Cursor.hpp" -#include "cru/win/gui/Exception.hpp" -#include "cru/win/gui/InputMethod.hpp" -#include "cru/win/gui/Keyboard.hpp" -#include "cru/win/gui/UiApplication.hpp" -#include "cru/win/gui/WindowClass.hpp" +#include "cru/win/gui/Window.h" + +#include "WindowManager.h" +#include "cru/common/Logger.h" +#include "cru/platform/Check.h" +#include "cru/platform/graphics/NullPainter.h" +#include "cru/platform/gui/Base.h" +#include "cru/platform/gui/DebugFlags.h" +#include "cru/platform/gui/Window.h" +#include "cru/win/graphics/direct/WindowPainter.h" +#include "cru/win/gui/Cursor.h" +#include "cru/win/gui/Exception.h" +#include "cru/win/gui/InputMethod.h" +#include "cru/win/gui/Keyboard.h" +#include "cru/win/gui/UiApplication.h" +#include "cru/win/gui/WindowClass.h" #include #include diff --git a/src/win/gui/WindowClass.cpp b/src/win/gui/WindowClass.cpp index 9d86d791..25229406 100644 --- a/src/win/gui/WindowClass.cpp +++ b/src/win/gui/WindowClass.cpp @@ -1,6 +1,6 @@ -#include "cru/win/gui/WindowClass.hpp" +#include "cru/win/gui/WindowClass.h" -#include "cru/win/gui/Exception.hpp" +#include "cru/win/gui/Exception.h" namespace cru::platform::gui::win { WindowClass::WindowClass(std::wstring name, WNDPROC window_proc, diff --git a/src/win/gui/WindowManager.cpp b/src/win/gui/WindowManager.cpp index 31b868b9..1e0f797a 100644 --- a/src/win/gui/WindowManager.cpp +++ b/src/win/gui/WindowManager.cpp @@ -1,8 +1,8 @@ -#include "WindowManager.hpp" +#include "WindowManager.h" -#include "cru/win/gui/UiApplication.hpp" -#include "cru/win/gui/Window.hpp" -#include "cru/win/gui/WindowClass.hpp" +#include "cru/win/gui/UiApplication.h" +#include "cru/win/gui/Window.h" +#include "cru/win/gui/WindowClass.h" namespace cru::platform::gui::win { LRESULT __stdcall GeneralWndProc(HWND hWnd, UINT Msg, WPARAM wParam, diff --git a/src/win/gui/WindowManager.h b/src/win/gui/WindowManager.h new file mode 100644 index 00000000..dba3f0a6 --- /dev/null +++ b/src/win/gui/WindowManager.h @@ -0,0 +1,51 @@ +#pragma once +#include "cru/win/WinPreConfig.h" + +#include "cru/common/Base.h" + +#include +#include +#include + +namespace cru::platform::gui::win { +class WinUiApplication; +class WinNativeWindow; +class WindowClass; + +class WindowManager : public Object { + public: + WindowManager(WinUiApplication* application); + + CRU_DELETE_COPY(WindowManager) + CRU_DELETE_MOVE(WindowManager) + + ~WindowManager() override; + + // Get the general window class for creating ordinary window. + WindowClass* GetGeneralWindowClass() const { + return general_window_class_.get(); + } + + // Register a window newly created. + // This function adds the hwnd to hwnd-window map. + // It should be called immediately after a window was created. + void RegisterWindow(HWND hwnd, WinNativeWindow* window); + + // Unregister a window that is going to be destroyed. + // This function removes the hwnd from the hwnd-window map. + // It should be called immediately before a window is going to be destroyed, + void UnregisterWindow(HWND hwnd); + + // Return a pointer to the Window object related to the HWND or nullptr if the + // hwnd is not in the map. + WinNativeWindow* FromHandle(HWND hwnd); + + std::vector GetAllWindows() const; + + private: + WinUiApplication* application_; + + std::unique_ptr general_window_class_; + std::map window_map_; +}; +} // namespace cru::platform::gui::win diff --git a/src/win/gui/WindowManager.hpp b/src/win/gui/WindowManager.hpp deleted file mode 100644 index 3b037f89..00000000 --- a/src/win/gui/WindowManager.hpp +++ /dev/null @@ -1,51 +0,0 @@ -#pragma once -#include "cru/win/WinPreConfig.hpp" - -#include "cru/common/Base.hpp" - -#include -#include -#include - -namespace cru::platform::gui::win { -class WinUiApplication; -class WinNativeWindow; -class WindowClass; - -class WindowManager : public Object { - public: - WindowManager(WinUiApplication* application); - - CRU_DELETE_COPY(WindowManager) - CRU_DELETE_MOVE(WindowManager) - - ~WindowManager() override; - - // Get the general window class for creating ordinary window. - WindowClass* GetGeneralWindowClass() const { - return general_window_class_.get(); - } - - // Register a window newly created. - // This function adds the hwnd to hwnd-window map. - // It should be called immediately after a window was created. - void RegisterWindow(HWND hwnd, WinNativeWindow* window); - - // Unregister a window that is going to be destroyed. - // This function removes the hwnd from the hwnd-window map. - // It should be called immediately before a window is going to be destroyed, - void UnregisterWindow(HWND hwnd); - - // Return a pointer to the Window object related to the HWND or nullptr if the - // hwnd is not in the map. - WinNativeWindow* FromHandle(HWND hwnd); - - std::vector GetAllWindows() const; - - private: - WinUiApplication* application_; - - std::unique_ptr general_window_class_; - std::map window_map_; -}; -} // namespace cru::platform::gui::win -- cgit v1.2.3