feat: 实现 Window 与 InputModule 消息集成

This commit is contained in:
2026-03-22 17:14:11 +08:00
parent cf9229fc21
commit fa2d2713d7
9 changed files with 256 additions and 24 deletions

View File

@@ -1,4 +1,5 @@
#pragma once
#include <cstddef>
namespace XCEngine {
namespace Input {
@@ -10,6 +11,7 @@ public:
virtual void Initialize(void* windowHandle) = 0;
virtual void Shutdown() = 0;
virtual void PumpEvents() = 0;
virtual void HandleMessage(size_t hwnd, unsigned int msg, size_t wParam, size_t lParam) = 0;
protected:
InputModule() = default;

View File

@@ -16,16 +16,15 @@ public:
void Initialize(void* windowHandle) override;
void Shutdown() override;
void PumpEvents() override;
void HandleMessage(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam);
void HandleMessage(size_t hwnd, unsigned int msg, size_t wParam, size_t lParam) override;
private:
void ProcessKeyDown(WPARAM wParam, LPARAM lParam);
void ProcessKeyUp(WPARAM wParam);
void ProcessMouseMove(WPARAM wParam, LPARAM lParam);
void ProcessMouseButton(WPARAM wParam, LPARAM lParam, bool pressed, MouseButton button);
void ProcessMouseWheel(WPARAM wParam, LPARAM lParam);
void ProcessCharInput(WPARAM wParam);
void ProcessKeyDown(size_t wParam, size_t lParam);
void ProcessKeyUp(size_t wParam);
void ProcessMouseMove(size_t wParam, size_t lParam);
void ProcessMouseButton(size_t wParam, size_t lParam, bool pressed, MouseButton button);
void ProcessMouseWheel(size_t wParam, size_t lParam);
void ProcessCharInput(size_t wParam);
KeyCode VKCodeToKeyCode(int vkCode);

View File

@@ -2,6 +2,10 @@
#include "PlatformTypes.h"
namespace XCEngine {
namespace Input {
class InputModule;
}
namespace Platform {
class Window {
@@ -23,6 +27,12 @@ public:
virtual bool ShouldClose() const = 0;
virtual void* GetNativeHandle() = 0;
void SetInputModule(Input::InputModule* module);
Input::InputModule* GetInputModule() const { return m_inputModule; }
protected:
Input::InputModule* m_inputModule = nullptr;
};
} // namespace Platform