· Начало · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.WIN32 —› ToolTip & Unicode…

Посл.отвђт Сообщенiе


Дата: Янв 8, 2004 19:08:17
Правка

…несовместимы?
Создал ToolTip по примерам из MSDN, но отображается в нём только 1 буква.
Поместил строку в ресурс, сказав системе, чтобы сама её оттуда вытаскивала -
отображается весь текст нормально. Попробовал обновить текст - снова только 1 буква.
Получил текст, который система вытащила из ресурсов - он оказался не Unicode.

Как заставить систему создавать ToolTip, поддерживающий Unicode? Ведь у неё самой все эти "всплывающие сообщения" под Unicode. А указатель на текст в структуре TOOLINFO объявлен как LPTSTR, т.е. он может указывать как на простой текст, так и на Unicode.

P.S. В ресурсах строки всегда хранятся под Unicodе. И при отключенной поддержке русского отображаются правильно, даже если не устанавливать язык
(т.е. у меня строки хранятся под "LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US")…


Дата: Янв 8, 2004 20:08:49
Правка

Нет, я, конечно, понимаю, что все дружно за FASM уселись, но эта проблема для меня очень важна! (точнее, её устранение)

Неужели никто не в курсе, что за проблема?

Кто-то говорил, что если окно создать через CreateWindowExW, то и обмен сообщениями с ним будет происходить тоже на Unicode.

Я так и сделал, но ToolTip упорно отказывается отображать строку на Unicode!
как быть?


Дата: Янв 8, 2004 20:12:13

IceStudent
Прости, если задаю глупый вопрос, но ты учел, что для unicode WM_ совсем другие?


Дата: Янв 8, 2004 20:18:39
Правка

Toxic
Чтоо? А подробнее, пожалуйста?
Может это я глупый? (если так, то покаюсь и сяду за очередной сеанс медитации над PlatformSDK)

А какие WM_*?
Они что, тоже различаются? Типа:
WM_GETTEXTA
WM_GETTEXTW ???


Дата: Янв 8, 2004 20:24:24

Ну да. У большинства из них коды разные. Я когда-то части commctrl.h переводил на VB, так я заметил, что они отличаются.

Но если ты пишешь на С, то у тебя этих проблем быть не должно(там автоматически нужное подставляется). А про ассемблер я не знаю - не пробовал. Я обычно использую без постфиксов A/W.


Дата: Янв 8, 2004 20:33:04 · Поправил: IceStudent
Правка

У большинства из них коды разные
КОДЫ?
М-да, я правда об этом не знал…
Но как обычно — копаешься в том, что не работает правильно.
У меня до этого проблем не было, хотя активно использовал сообщения под Unicode.
Я переводил только функции.

там автоматически нужное подста
Так и в MASM'e автоматом добавляется *A, если бы кто-то не поленился и написал не
CreateWindowExA PROTO ...
CreateWindowEx textequ <CreateWindowExA>
CreateWindowExW PROTO ...

а так

CreateWindowExA PROTO ...
CreateWindowExW PROTO ...
if _UNICODE
CreateWindowEx textequ <CreateWindowExW>
else
CreateWindowEx textequ <CreateWindowExA>

то и не было бы столько лишней ручной работы!
кстати, потому я в своём скрипте предусмотрел и conditional defines для препроцессора С/С++…


Дата: Янв 11, 2004 16:20:36
Правка

Toxic
Спасибо, ты оказался прав!
Но в windows.inc v1.26e сообщения или
TTM_ADDTOOL или TTM_ADDTOOLW!
А где с *А? Нехорошо получается. Стандарты от Microsoft не стоит игнорировать, раз уж пишем для Windows®…

кто-то не поленился и написал
и этим кто-то стал я. см. архив в теме Header converters…