Для тех кто будет эту же конюшню чистить:
Время у меня было 2 дня, посему нельзя сказать что проблему решил - скорее муляж поставил:
На одном индусском сайте нашел такую-же проблему, пост примерно от того же времени (неверное мой ментальный двойник
) - умные гуру-индусы объяснили почему лажа такая происходит, пару слов насоветовали и послали на сайт
http://www.cyberactivex.com/UnicodeTutorialVb.htmВ общем, прикрутил я unicode-aware TextEdit из Forms 2.0 Object Library, и написал тупой обработчик нажатий клавиш для блокировки кодов, которые Windows посылает в ansi-форму VB. Я мапировал в зависимости от KeyboardLayout эти коды в соответствующие Unicode-символы и записывал в свойство text.
Выглядит так - как будто работает
.
А проблема в том, что судя по всему VB регистрирует класс формы через Ansi версию функции RegisterClass (RegisterClassA), а значит IsWindowUnicode возвращает False и система сама мапирует Unicode коды в соответствующие Ansi коды перед посылкой форме сообщения.