aboutsummaryrefslogtreecommitdiff
path: root/include/cru/win/native/input_method.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'include/cru/win/native/input_method.hpp')
-rw-r--r--include/cru/win/native/input_method.hpp42
1 files changed, 42 insertions, 0 deletions
diff --git a/include/cru/win/native/input_method.hpp b/include/cru/win/native/input_method.hpp
new file mode 100644
index 00000000..3ea16709
--- /dev/null
+++ b/include/cru/win/native/input_method.hpp
@@ -0,0 +1,42 @@
+#pragma once
+#include "resource.hpp"
+
+#include "cru/platform/native/input_method.hpp"
+
+#include <imm.h>
+
+namespace cru::platform::native::win {
+class WinNativeWindow;
+
+class WinInputMethodContextRef : public WinNativeResource,
+ public IInputMethodContextRef {
+ public:
+ WinInputMethodContextRef(WinNativeWindow* window);
+
+ CRU_DELETE_COPY(WinInputMethodContextRef)
+ CRU_DELETE_MOVE(WinInputMethodContextRef)
+
+ ~WinInputMethodContextRef() override;
+
+ ::HIMC GetHandle() const { return handle_; }
+
+ void Reset() override;
+
+ std::string GetCompositionString() override;
+
+ void SetCandidateWindowPosition(const Point& point) override;
+
+ IEvent<std::string>* CompositionTextChangeEvent() override;
+
+ IEvent<std::string>* CharEvent() override;
+
+ private:
+ WinNativeWindow* window_;
+
+ ::HWND window_handle_;
+ ::HIMC handle_;
+
+ Event<std::string> composition_text_change_event_;
+ Event<std::string> char_event_;
+};
+} // namespace cru::platform::native::win