| 
 | 
| 
 
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?desktop=1&fid=60&tid=2156476]:  | 
    0ms | 
get settings:  | 
    7ms | 
get forum list:  | 
    11ms | 
check forum access:  | 
    3ms | 
check topic access:  | 
    3ms | 
track hit:  | 
    62ms | 
get topic data:  | 
    11ms | 
get forum data:  | 
    2ms | 
get page messages:  | 
    37ms | 
get tp. blocked users:  | 
    2ms | 
| others: | 12ms | 
| total: | 150ms | 

| 0 / 0 | 

    Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
    
    
    «На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
    
    
    ... ля, ля, ля ...