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

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

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

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

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

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

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

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

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

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

Шаманство.


Если пост полезен для вас вы можете подписаться на RSS или мы можем доставлять вам новые посты прямо в ваш почтовый ящик.

Related:

Posted in Oбщее

Comments are closed.