Но для действительного копирования строки редактора в приложение после ввода последнего символа необходимо нажать клавишу Enter второй раз, чтобы передать приложению сообщение WM_IME_C0MP0SITI0N.
Стандартный управляющий элемент Edi t не обрабатывает сообщения WM_IME_C0M-P0SITI0N и не обеспечивает взаимодействия с редактором ШЕ. Чтобы не воспроизводить самостоятельно всю функциональность элемента Edit, нужно подменить оконную процедуру элемента Edit процедурой BOOL CALLBACK IMEEdit(HWND hWnd. UI NT m. LPARAM w. WPARAM 1), в которой будет выполняться обработка WM_IME_C0MP0SITI0N, а для других сообщений можно будет вызывать стандартный обработчик.
Процедура IMEEdi t() должна не только обеспечивать ввод иероглифов, но и поддерживать стандартный обмен данными с родительским диалоговым окном. Чтобы это продемонстрировать, по щелчку на кнопке Передать функцией SetDl gltemText () в окно Edit должна выводиться строка иероглифов, а по щелчку на кнопке Получить содержимое элемента Edit должно читаться при помощи функции Get-DlgltemText() и выводиться в рабочую область диалогового окна.
С учетом последнего требования оконная процедура такого диалога будет мало отличаться от аналогичного проекта ANSI, что и показывает код, приведенный в листинге 9.2.
Рис. 9.2. Строка редактора IME
Ввод иероглифов Листинг 9.2
WNDPROC Def"opengl4_136.html">⇐ Предыдущая| |Следующая ⇒