|
Помогите со стилем Tooltip "на Висте" (картинка+Title+Text но не Ballon)
|
|||
---|---|---|---|
#18+
Пложу опять новую тему из этой Shell_NotifyIcon + Ballon(?) Tooltip Картинка объяснит лучше. Нужно (на вистообразных): Как Ballon но не Ballon (без stem). Хотя глядя на целевые примеры, подозреваю что шрифты (м.б.) делаются через CustomDraw (ToolTip). Потому что на классике эти "образцы" выглядят без жирного шрифта в Title. И размеры Tooltip тоже "ручками". На счет последнего сомнения, потому что про TTM_SETMARGIN в MSDN написано: Remarks This message has no effect when the application runs on Windows Vista and visual styles are enabled for the tooltip. You can disable visual styles for the tooltip by using SetWindowTheme. А они там (при виста-интерфейсе) явно не отключены. Но если как-то убрать STEM в Ballon то меня бы это устроило. Кстати что интересно TTM_GETBUBBLESIZE (вычисляет width и height) игнорирует область STEM (стрелка указатель в режиме ballon), именно поэтому на моих виста-картинках в режиме баллон tooltip задвигается под Taskbar (вычисляется его положение если бы STEM не было). И еще. Я хотел поиграться с ToolTip в ControlSpy. Я вообще там Tooltip в упор не вижу, т.е. раздел есть а не могу сделать чтоб он появился (Никак!!!) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2013, 15:32 |
|
Помогите со стилем Tooltip "на Висте" (картинка+Title+Text но не Ballon)
|
|||
---|---|---|---|
#18+
Дмитрий77Хотя глядя на целевые примеры, подозреваю что шрифты (м.б.) делаются через CustomDraw (ToolTip). Ага, не тут то было Если делать Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
то шрифт меняется только на классике в IDE -и в Title, и в Text на XP (с манифестом) -только в Title на Висте - ничего не меняется - плевать ей на это ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2013, 17:05 |
|
Помогите со стилем Tooltip "на Висте" (картинка+Title+Text но не Ballon)
|
|||
---|---|---|---|
#18+
Дмитрий77, ответа я конечно-же не знаю, сорри, просто интересно Ваши задачи, которые Вы решаете на всех ЯП так туго идут? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2013, 17:16 |
|
Помогите со стилем Tooltip "на Висте" (картинка+Title+Text но не Ballon)
|
|||
---|---|---|---|
#18+
катастрофаДмитрий77, ответа я конечно-же не знаю, сорри, просто интересно Ваши задачи, которые Вы решаете на всех ЯП так туго идут? Если делать нормально, то думаю ДА. API везде одинаковые, а оболочки как правило кривые. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2013, 17:33 |
|
Помогите со стилем Tooltip "на Висте" (картинка+Title+Text но не Ballon)
|
|||
---|---|---|---|
#18+
Это зелье готовится по-другому. 1. Выводим standard Tooltip (пустой размером как получится). Чтоб был пустым и при этом выводился, надо использовать пробел. На этом этапе примерное желаемое положение и размеры (желаемые) тултипа известны Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
2. Теперь задаем размеры. Делается это в TTN_SHOW Первый вызов SetWindowPos обязательно без SWP_NOSIZE -иначе увеличить размеры не получится Второй вызов SetWindowPos с SWP_NOSIZE - он обеспечивает непотопляемость - чтоб не дай бог куда не задвинулся под другие окна. Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
3. Потом через NM_CUSTOMDRAW в CDDS_PREPAINT возвращаем CDRF_NOTIFYPOSTPAINT и когда система все дорисует (что смогла)- т.е. тематическую рамку Tooltip нужных размеров, получаем CDDS_POSTPAINT. И уже можем рисовать и писать любых размеров картинки и любых цветов/размеров тексты где и как угодно в любой комбинации. И самое приятное, что на этом этапе уже никакая сволочь не помешает. Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45.
Короче проект прилагается. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2013, 05:52 |
|
Помогите со стилем Tooltip "на Висте" (картинка+Title+Text но не Ballon)
|
|||
---|---|---|---|
#18+
Ну вроде как похоже намазюкал. Надо еще посмотреть, насколько к 7-ке и 8-ке это применимо, работать точно должно. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2013, 06:08 |
|
Помогите со стилем Tooltip "на Висте" (картинка+Title+Text но не Ballon)
|
|||
---|---|---|---|
#18+
Маньяк :) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2013, 07:35 |
|
Помогите со стилем Tooltip "на Висте" (картинка+Title+Text но не Ballon)
|
|||
---|---|---|---|
#18+
AntonariyМаньяк :) Ето почему ето? Покритиковал бы результат что ли. Что не так делаю? Кроме общих замечаний, типа что WPF надо использовать. Кстати на WPF постоянно натыкаюсь в поисках, много там проблем у народа. Лучше ответь на 3 неотвеченных вопроса, может вдруг знаешь ответ хотя б на первые 2: 1) Control Spy (v.5 или v.6) Tooltip живой там когда нибудь видел? Высечь его там и не удалось (никакой). 2 темы накросспостил, никто не ответил. 2) Как у Tooltip убрать тень? По не-русски Shadow. Отображается внизу и справа. Если Tooltip примыкает к Taskbar (который "ВНИЗУ") , то она там явно лишняя. Если внимательно посмотришь на мои "маньячные" картинки, то поймешь что на "оригиналах" она отсутствует. 3) Если (1)Windows 7 и (2) иконка находится на на Taskbar а в доп.области уведомлений, то иногда(не всегда! условия возникновения не понял). Симптомы: При наведении мышки сообщения NIN_POPUPOPEN и NIN_POPUPCLOSE начинают генерироваться с высокой частотой (мышка на иконке и неподвижна) , что естественно приводит к "миганию" Tooltip. NIN_POPUPCLOSE (если нормально) срабатывает либо когда убираем мышку с иконки, либо по системному таймеру по умолчанию 10 сек(таймер кот. связан не с Tooltip а с SetNotifyIcon). Если иконка в Win7 отображается в Taskbar (как на более ранних Win)-то поведение всегда нормальное. Также проверил на Win8 - глюк НЕ наблюдается. М.б. конечно "эффект нотебучной мышки" (Win7 счас у меня только на Notebook, а Win8 на стационаре). Кстати, м.б. какой добрый человек с Win7 проверит? (проект приложен). Надо в системе для иконки выбрать "Не показывать значки в области уведомлений", нажать на стрелку рядом и навести мышку на иконку. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2013, 15:24 |
|
Помогите со стилем Tooltip "на Висте" (картинка+Title+Text но не Ballon)
|
|||
---|---|---|---|
#18+
Дмитрий77Покритиковал бы результат что ли. Что не так делаю?Не могу. Результат прекрасный, делаешь все правильно. Ставишь себе цели и с упорством трактора их достигаешь. Просто цели высокие (по моим меркам), а пути и средства достижения на редкость неудобные. Многие другие уже давно сдались бы. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2013, 15:46 |
|
Помогите со стилем Tooltip "на Висте" (картинка+Title+Text но не Ballon)
|
|||
---|---|---|---|
#18+
Antonariy, ну а на вопрос Как в Control Spy увидеть ToolTip??? ответить можешь? В принципе ответ "У меня тоже не получилось. Не знаю." тоже ответ, но никто и этого не говорит. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2013, 16:21 |
|
Помогите со стилем Tooltip "на Висте" (картинка+Title+Text но не Ballon)
|
|||
---|---|---|---|
#18+
В control spy никак. Я писал программку с клавиатурным хуком (не знал про GetAsyncKeyState), которая при нажатии на f9 выводила характеристики окошка под курсором мыши. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2013, 16:27 |
|
Помогите со стилем Tooltip "на Висте" (картинка+Title+Text но не Ballon)
|
|||
---|---|---|---|
#18+
AntonariyВ control spy никак. Т.е. подтверждаешь глюк-недоделку в control spy? Смысл остальной части ответа не уловил. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2013, 16:32 |
|
Помогите со стилем Tooltip "на Висте" (картинка+Title+Text но не Ballon)
|
|||
---|---|---|---|
#18+
Это не глюк а естественные границы его возможностей, обусловленные особенностями интерфейса. Одни окна прячутся при изменении фокуса, другие от мышиных событий, а control spy при выборе окна делает и то и другое. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2013, 16:40 |
|
Помогите со стилем Tooltip "на Висте" (картинка+Title+Text но не Ballon)
|
|||
---|---|---|---|
#18+
Дмитрий77Смысл остальной части ответа не уловил.GetCursorPos + WindowFromPoint, так понятнее? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2013, 16:43 |
|
Помогите со стилем Tooltip "на Висте" (картинка+Title+Text но не Ballon)
|
|||
---|---|---|---|
#18+
Antonariy, Абсолютно непонятно. Это отностится к ответу про Control Spy? Я что-то должен сделать внешней программой применительно к Control Spy чтоб увидеть ToolTip? Я должен изобрести какой-то свой паравоз? (не относящийся к Control Spy). На пальцах можешь объяснить? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2013, 17:48 |
|
Помогите со стилем Tooltip "на Висте" (картинка+Title+Text но не Ballon)
|
|||
---|---|---|---|
#18+
Или это просто объяснение почему не вижу без инструкций к действию? Смысл Control Spy в основном в том чтоб сразу увидеть результат так понимаю? А выписывать константы и изобретать как их всунуть в код я и по MSDN+Google могу только время/умо затраты другие. Особенно с учетом того что ControlSpy можно сразу запустить на "Висте", а VB6 я по определению держу только на рабочем XP. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2013, 17:54 |
|
Помогите со стилем Tooltip "на Висте" (картинка+Title+Text но не Ballon)
|
|||
---|---|---|---|
#18+
Дмитрий77Antonariy, Абсолютно непонятно. Это отностится к ответу про Control Spy? Я что-то должен сделать внешней программой применительно к Control Spy чтоб увидеть ToolTip? Я должен изобрести какой-то свой паравоз? (не относящийся к Control Spy). На пальцах можешь объяснить?>_< Antonariy Я писал программку с клавиатурным хуком (не знал про GetAsyncKeyState), которая при нажатии на f9 выводила характеристики окошка под курсором мыши.У меня кончились пальцы. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2013, 18:20 |
|
Помогите со стилем Tooltip "на Висте" (картинка+Title+Text но не Ballon)
|
|||
---|---|---|---|
#18+
Antonariy, я понял так: ты писал программку, кот. делала ХУК, находила hwnd тултипа сгенеренного Control Spy и выводила его напоказ. Если нет, то я ничего не понял. === Кстати (конечно надо уже с этим тултип завязывать - про себя подумал). >а пути и средства достижения на редкость неудобные Глядючи на финальную часть возникла идея что в данном случае можно сделать проще. 1) Не использовать NOTIFYICON_VERSION_4 в Shell_NotifyIcon. 2) делать .szTip = " " & vbNullChar 3) ловить TTN_SHOW от встроенного Tooltip , там задавать его позицию и размеры (конечно у меня нет GET_X_LPARAM и GET_Y_LPARAM, но все равно ж я их корректирую, да и позицию где он хочет появиться думаю узнать легко). Правда надо будет понять что ЭТО ИМЕННО ОН Вот этого козыря: Код: vbnet 1.
не будет. 4) ну и через CustomDraw рисовать на нем "свистелки" как и в первом варианте. Если быстро получится, то сделаю. Выигрыш будет "независимость от Вистообразности", не надо создавать ToolTip "с нуля" в track стиле и отлавливать специфические уведомления ну и случайные глюки типа описанных "в вопросе 3" автоматом уйдут. Как идея? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2013, 20:44 |
|
Помогите со стилем Tooltip "на Висте" (картинка+Title+Text но не Ballon)
|
|||
---|---|---|---|
#18+
Дмитрий77, Если быстро получится, то сделаю - господя, главное оконечный результат выложите пжл, чтоб приобщится к прекрасному ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2013, 20:52 |
|
Помогите со стилем Tooltip "на Висте" (картинка+Title+Text но не Ballon)
|
|||
---|---|---|---|
#18+
катастрофаглавное оконечный результат выложите пжлА сам не хочешь попробовать? Чем текущий оконечный результат не устраивает? Он по любому "круче", т.к. там реализован механизм вывода[/закрытия] любых окон при наведении на трей-иконку, а не только Tooltip. Т.е. можешь например сделать Код: vbnet 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2013, 21:34 |
|
Помогите со стилем Tooltip "на Висте" (картинка+Title+Text но не Ballon)
|
|||
---|---|---|---|
#18+
Дмитрий77, не то что не устраивает, просто у Вас мысли мол - думаю, думаю может ещё улучшу, а так пока не смотрел, но посмотрю то что есть ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2013, 21:51 |
|
Помогите со стилем Tooltip "на Висте" (картинка+Title+Text но не Ballon)
|
|||
---|---|---|---|
#18+
вот уже и смотрю Чем текущий оконечный результат не устраивает? - а проект можете прикрепить? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2013, 21:53 |
|
Помогите со стилем Tooltip "на Висте" (картинка+Title+Text но не Ballon)
|
|||
---|---|---|---|
#18+
катастрофа, ты как всегда в своем репертуаре. А внизу там ЧТО? приложено? === Так, похоже надо завязывать. Дмитрий773) ловить TTN_SHOW от встроенного Tooltip , ...Правда надо будет понять что ЭТО ИМЕННО ОН... Фиг с маслом. Там свои заморочки. Сначала надо понять, чего надо сабклассить чтобы это словить (WM_NOTIFY -> TTN_SHOW ). Form1.hwnd - не ловит. GetDesktopWindow -не ловит (вообще ничего не ловит) FindWindow("Shell_TrayWnd", vbNullString) - не ловит(вообще ничего не ловит) Тот механизм кот. посылает уведомления через "CallBack" в NotifyIcon тоже к делу не относится. Короче это делать ни фига не легче, и не факт что получится. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2013, 22:56 |
|
Помогите со стилем Tooltip "на Висте" (картинка+Title+Text но не Ballon)
|
|||
---|---|---|---|
#18+
Дмитрий77GetDesktopWindow -не ловит (вообще ничего не ловит) FindWindow("Shell_TrayWnd", vbNullString) - не ловит(вообще ничего не ловит)Для справки. Сабклассить можно только окна своего процесса, а эти окна принадлежат explorer'у. Перехватывать сообщения, посылаемые чужим окнам, тоже можно, но каким-то другим способом. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2013, 12:45 |
|
|
start [/forum/topic.php?fid=60&tid=2156941]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
26ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
68ms |
get tp. blocked users: |
2ms |
others: | 15ms |
total: | 160ms |
0 / 0 |