#pragma once #include "resource.hpp" #include "cru/platform/native/input_method.hpp" #include 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* CompositionTextChangeEvent() override; IEvent* CharEvent() override; private: WinNativeWindow* window_; ::HWND window_handle_; ::HIMC handle_; Event composition_text_change_event_; Event char_event_; }; } // namespace cru::platform::native::win