У меня проблема с курицей или яйцом -
Я пытаюсь создать пользовательское контекстное меню для элемента управления RichTextBox, которое ВКЛЮЧАЕТ пункт меню «Реконверсия», предоставляемый контекстным меню текстового поля по умолчанию, когда IME включен.
Так вот в чем проблема -
Дублировать варианты текстового меню по умолчанию (Вырезать,Копировать...) несложно, но как ДОБАВИТЬ меню, которое будет открывать окно реконверсии IME?
Я думал, что можно подключить дескриптор Windows для этого меню, но у меня нет ни малейшего понятия.
(Обратите внимание, что элемент управления RichTextBox НЕ имеет контекстного меню по умолчанию)
Моя проблема в том, что мне нужна возможность форматирования RTF, поэтому я не могу просто использовать текстовое поле с системным меню по умолчанию (которое отлично работает с IME).
Может быть, это поможет? Помещение IME в пользовательское текстовое поле, производное от Control
Maybe you just need ImmSetOpenStatus(), ImmSetStatusWindowPos(), ImmGetDefaultIMEWnd() -- Input Method Manager
ОК, почти готово с небольшим хаком, но, по крайней мере, я могу получить доступ к контекстному меню — я объявил пользовательский API mouseevent и перехватил mouseup. Окно меню открывается, но я не могу перемещаться по нему. Я пробовал SendKeys, не повезло. Может быть, взять оконную ручку?