Не показывается tooltips под Windows 2000

September 3rd, 2008 Begemot Posted in Oбщее

Баги + плохая память = даром потраченное время  и нервы. Не совсем про wxWidgets, но может кому полезно будет.

Собираю вчера альфу для своих, типа наконец дожил – радуюсь. Ставлю жене на машину и тут облом, не работают тултипсы. Код на винапи, перетащил со старой программы на мфц и вставил с минимальными правками.  Под ХП все работает, под Windows 2000 не показывается tooltips.

Потратил целый день. Собираю у себя тестовый билд, заливаю на хостиг, иду в соседнюю комнату, скачиваю его с инета  на комп жены(до чего дошел прогресс), тестирую, обламываюсь и бегом на следующую итерацию.

Исправил проблемное место в этом коде – не помогло, исправил попутно еще два бага в программе никак не связанных с этим. Самое обидное что в старой версии программы (mfc) этот код работает, в новой(wxwidgets) уже нет.

Вечером дошло что старая версия – ansi, новая – юникодная. Вспомнил что код используется еще в одной программе на мфц, но уже юникодной, посмотрел – работает под двушкой нормально.  Полез в сорцы, нашел одну строчку и долго матерился. С этой багой я уже сталкивался, тоже долго е****я и все-таки решил, но забыл:) Единственное мое оправдание что было это больше двух лет назад.

Вот строчка которую я нашел:

[sourcecode language=”cpp”]
ZeroMemory(&ti, sizeof(TOOLINFO));
//ti.cbSize = sizeof(TOOLINFO);
// Я знаю что тут должно быть sizeof(TOOLINFO) =48, но при числах более 44 оно не показывает подсказку – под win2K, похоже только в юникоде
ti.cbSize = 44;
[/sourcecode]

Глюк этот похоже появлятся только в юникодных версиях программ под Windows 2000 – tooltip создается, но не появляется на экране. Решается вот таким грязным хаком.

Шаманство.

Related:

Posted in Oбщее

Comments are closed.