Пример лежит в соседнем топике.
viewtopic.php?f=1&t=56533На вскидку, если без субклассинга и оставив за скобками проблему прозрачности:
- Код: Выделить всё
hwTx = CreateWindowExW(WS_EX_TRANSPARENT, StrPtr("Edit") _
, StrPtr("ля-ля-ля") _
, WS_BORDER Or WS_CHILD Or WS_VISIBLE Or &H4& _
, 0, 0, 150, 150, Me.hwnd, 0, App.hInstance, 0)
Установив соотсветствующие раскладки, в поле можно печатать на иврите, арабском, вьетнамском и пр. Нельзя печатать на грузинском, санскрите и пр. Напечатанное в блокноте, можно через буфер вставить любое.
К эдиту не приходит ни одного сообщения WM_UNICHAR.
Ось семёрка, но, думаю, это не принципиально - в блокноте всё печатается, а это ведь тоже эдит.
С DispatchMessageA , на сколько у меня удалось проверить, проблема не связана. Установил в программе хук WH_GETMESSAGE, при получении клавиатурных сообщений дополнительно их транслирую:
- Код: Выделить всё
Case WM_KEYDOWN, WM_KEYUP ', WM_CHAR
TranslateMessage ByVal lParam
DispatchMessageW ByVal lParam
Получаю, в эдите, как и предполагал, строенные знаки, но уникодного среди них нет - все три одинаковые.
WM_CHAR перетранслировать сначала не решился - думал, это вызовет зацикливание, но потом оказалось, что нет, знаки так же высыпаются по три, и уникодного среди них всё равно нет. WM_UNICHAR так и не приходит.
С ричэдитом абсолютно такая же ситуация