|
Visual Style Tooltips для обычных кнопок
|
|||
---|---|---|---|
#18+
Чет я не понимаю. Манифесты на месте, ICC_USEREX_CLASSES Or ICC_BAR_CLASSES "активированы", этого всегда хватало "для счастья". Понадобилось добавить примечания к обычным button. Ну естественно Tooltip Text. И на тебе. На тулбарах тултипы белые стильные, а на кнопках желтенькие "а-ля классик". В глаза бросается. Ну и как лечить? Вычитал тут про TTS_USEVISUALSTYLE , но тултип то вроде встроенный, на раз два до него не доберешься. Еще бесит то, что тултип выскакивает на 5 км "южнее" курсора (между кнопкой и тултипом палец влезет, даже если в ее верхнюю часть тыкать). Ловлю себя на том, что тултипами к кнопкам ранее не увлекался. Но вот понадобилось. Ну не через отдельный c_Tooltip же их вышибать? Еще нужны тултипы к API-версиям слайдера (для самого, а не для значения ползунка) и прогрессбара, но с этим пока не разбирался. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2014, 08:54 |
|
Visual Style Tooltips для обычных кнопок
|
|||
---|---|---|---|
#18+
Дмитрий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. Вроде сделал. Давненько так не развлекался. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2014, 12:26 |
|
|
start [/forum/topic.php?fid=60&fpage=45&tid=2156476]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
36ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
43ms |
get tp. blocked users: |
2ms |
others: | 270ms |
total: | 398ms |
0 / 0 |