diff options
author | chai <chaifix@163.com> | 2021-11-09 19:22:13 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2021-11-09 19:22:13 +0800 |
commit | d8417b03b9c2a820d3d3be0dfa80841b4d1f4c04 (patch) | |
tree | 7d036d283bd7a626d56c5c5a725733df439c8368 /Editor/GUI | |
parent | 13f477664c07826c92eac774f0035994c460c057 (diff) |
*misc
Diffstat (limited to 'Editor/GUI')
-rw-r--r-- | Editor/GUI/GUIWindow.cpp | 10 | ||||
-rw-r--r-- | Editor/GUI/GUIWindow.h | 3 | ||||
-rw-r--r-- | Editor/GUI/WindowUtil.cpp | 29 | ||||
-rw-r--r-- | Editor/GUI/WindowUtil.h (renamed from Editor/GUI/WindowBase.h) | 6 |
4 files changed, 46 insertions, 2 deletions
diff --git a/Editor/GUI/GUIWindow.cpp b/Editor/GUI/GUIWindow.cpp index 1a9ea00..c79cb52 100644 --- a/Editor/GUI/GUIWindow.cpp +++ b/Editor/GUI/GUIWindow.cpp @@ -4,6 +4,7 @@ #include "Editor/Graphics/Graphics.h" #include "Editor/Win/Win.h" #include "Runtime/Math/Math.h" +#include "Runtime/Events/InputEvent.h" using namespace LuaBind; @@ -260,7 +261,16 @@ GUIWindow::GUIWindow(LuaBind::VM* vm, std::string name) void GUIWindow::ProcessEventMessages(UINT message, WPARAM wParam, LPARAM lParam) { + InputEvent ie(message, wParam, lParam, m_Handle); + LuaBind::State state = GetVM()->GetCurThread(); + + LuaBind::MemberInvoker invoker = LuaBind::MemberInvoker(state, this); + invoker.member = m_Script; + invoker.method = "OnEvent"; + invoker.AddMember(m_Script); + invoker.AddTable(ie); + invoker.Invoke(0); } bool GUIWindow::SetRenderContext() diff --git a/Editor/GUI/GUIWindow.h b/Editor/GUI/GUIWindow.h index aa81b38..06d8a17 100644 --- a/Editor/GUI/GUIWindow.h +++ b/Editor/GUI/GUIWindow.h @@ -12,8 +12,7 @@ #include "Editor/Utils/HelperFuncs.h" #include "Runtime/Math/Math.h" #include "Runtime/Utilities/Exception.h" - -#include "WindowBase.h" +#include "WindowUtil.h" // GUI窗口,事件相应、绘制、布局的单元 class GUIWindow diff --git a/Editor/GUI/WindowUtil.cpp b/Editor/GUI/WindowUtil.cpp index 34a7b30..2c73573 100644 --- a/Editor/GUI/WindowUtil.cpp +++ b/Editor/GUI/WindowUtil.cpp @@ -1,3 +1,4 @@ +#include "Runtime/Utilities/StaticInitiator.h" #include "EditorWindows.h" #include "WinUtils.h" @@ -9,6 +10,16 @@ static ATOM ContainerWindowClassAtom; static ATOM PopupWindowClassAtom; static ATOM GUIViewClassAtom; +static int s_EditorMouseOffsetX; +static int s_EditorMouseOffsetY; +static HWND s_EditorInputWindow; + +InitializeStaticVariables([]() { + s_EditorMouseOffsetX = 0; + s_EditorMouseOffsetY = 0; + s_EditorInputWindow = NULL; +}); + void WindowUtil::RegisterClasses() { log_info("WindowUtil::Init()"); @@ -16,4 +27,22 @@ void WindowUtil::RegisterClasses() ContainerWindowClassAtom = winutils::RegisterWindowClass(kContainerWindowClassName, ContainerWindow::ContainerWndProc, CS_HREDRAW | CS_VREDRAW); PopupWindowClassAtom = winutils::RegisterWindowClass(kPopupWindowClassName, ContainerWindow::ContainerWndProc, CS_HREDRAW | CS_VREDRAW | CS_DROPSHADOW);//CS_HREDRAW宽度(水平)变化时重绘、CS_VREDRAW高度(垂直)变化时重绘 GUIViewClassAtom = winutils::RegisterWindowClass(kGUIWindowClassName, GUIWindow::GUIViewWndProc, CS_HREDRAW | CS_VREDRAW | CS_DROPSHADOW); +} + +void WindowUtil::SetEditorMouseOffset(int x, int y, HWND window) +{ + s_EditorMouseOffsetX = x; + s_EditorMouseOffsetY = y; + s_EditorInputWindow = window; +} + +void WindowUtil::GetEditorMouseOffset(int *x, int *y, HWND *window) +{ + *x = s_EditorMouseOffsetX; + *y = s_EditorMouseOffsetY; + + if (NULL != window) + { + *window = s_EditorInputWindow; + } }
\ No newline at end of file diff --git a/Editor/GUI/WindowBase.h b/Editor/GUI/WindowUtil.h index cf3cae6..dcc4eca 100644 --- a/Editor/GUI/WindowBase.h +++ b/Editor/GUI/WindowUtil.h @@ -29,6 +29,9 @@ public: static const wchar_t* kContainerWindowClassName; static const wchar_t* kPopupWindowClassName; static const wchar_t* kGUIWindowClassName; + + static void SetEditorMouseOffset(int x, int y, HWND window); + static void GetEditorMouseOffset(int *x, int *y, HWND *window); }; class WindowManager : Singleton<WindowManager> @@ -41,3 +44,6 @@ private: static std::vector<GUIWindow*> s_GUIWindows; }; + + + |