powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Visual Style Tooltips для обычных кнопок
2 сообщений из 2, страница 1 из 1
Visual Style Tooltips для обычных кнопок
    #38578461
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чет я не понимаю.
Манифесты на месте, ICC_USEREX_CLASSES Or ICC_BAR_CLASSES "активированы", этого всегда хватало "для счастья".
Понадобилось добавить примечания к обычным button.
Ну естественно Tooltip Text.
И на тебе.
На тулбарах тултипы белые стильные, а на кнопках желтенькие "а-ля классик".
В глаза бросается.
Ну и как лечить?
Вычитал тут про TTS_USEVISUALSTYLE , но тултип то вроде встроенный, на раз два до него не доберешься.

Еще бесит то, что тултип выскакивает на 5 км "южнее" курсора (между кнопкой и тултипом палец влезет, даже если в ее верхнюю часть тыкать).

Ловлю себя на том, что тултипами к кнопкам ранее не увлекался. Но вот понадобилось.
Ну не через отдельный c_Tooltip же их вышибать?

Еще нужны тултипы к API-версиям слайдера (для самого, а не для значения ползунка) и прогрессбара, но с этим пока не разбирался.
...
Рейтинг: 0 / 0
Visual Style Tooltips для обычных кнопок
    #38579988
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77,

Не такая уж рутинная задача оказалась, как оно казалось.

Свои тултипы у кнопок в VB6 (и думаю не только у них) судя по всему не родные (не контрол тултип), и поведение их даже на классике неправильное. Выражается в том, что после наведения на кнопку подсказка не исчезнет по таймауту. Ожидать поддержки стилей на вистах было бы глупо + они как я написал выскакивают далеко от кнопок.

Посему решил использовал C_Tooltip (API).
На вистах и выше достаточно статически привязать по своему независимому тултипу к каждому контролу.
Но на XP нарвался на проблему. Если API-тултип исчез по таймеру или по нажатию на контрол когда он отображался, то второй раз он уже не появится никогда. Признанный но неисправленный баг Microsoft.
Выход один - пересоздать.

Но для этого надо убить по Mouse_Leave и создать по Mouse_Enter.
Но объектных таких событий в VB6 нет, пришлось сабклассить "каждую кнопку".
Mouse_Enter -это первый Move, надо делать фигню с static boolean переменной.
WM_MOUSELEAVE еще надо высекать через TME_LEAVE + TrackMouseEvent.

Решил сэкономить на спичках, используя один тултип на всех, типа все равно пересоздается. И тут попал. Если контролы стоят вплотную без зазора (у меня комбинация кнопки, прогрессбара и слайдера), то WM_MOUSEMOVE следующего на пути мыши контрола как правило генерируется ДО WM_MOUSELEAVE предыдущего, т.е. пересозданный тултип может тут же убиться об стенку.
Пришлось городить огород из нескольких C_Tooltip.

Вроде сделал. Давненько так не развлекался.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Visual Style Tooltips для обычных кнопок
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]