【发布时间】:2021-11-25 09:24:52
【问题描述】:
我在 WinForms 应用程序中有一个 Qt 编辑框。我将鼠标和按键事件从 WinForms 转发到 Qt 编辑框。
在输入法编辑器的情况下,我使用此方法将对话框定位到 Qt 编辑框中的插入符号:
[DllImport("Imm32.dll")]
public static extern bool ImmSetCompositionWindow(IntPtr hImc, COMPOSITIONFORM pCompForm);
这很好,IME 出现在插入符号旁边,我可以在 Qt 编辑框中使用 IME 输入字符。
问题在于,在某些情况下,IME 不会自动隐藏,例如当我在 Qt 编辑框外单击时。我尝试在参数“open”设置为 false 的情况下调用此方法,但之后 IME 不再出现。
[DllImport("Imm32.dll")]
public static extern bool ImmSetOpenStatus(IntPtr hIMC, bool open);
隐藏 IME 对话框的正确方法是什么?
【问题讨论】: