Тема: AHK: Альтернативный Tooltip
Тема для обсуждения не стандартного Tooltip.
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Тема для обсуждения не стандартного Tooltip.
Уже было такое. Я не против альтернатив, хотя сейчас библиотеки на v1, думаю, уже не особо актуальны.
Да видел. Меня чем-то не устроило, написал свой вариант по проще.
А в чём там преимущество?
Публичные методы объекта:
1. Show(x, y, timeout) — показ ранее скрытого ToolTip'а, указание координат и времени показа.
x и y — координаты, если пустые значения — ToolTip будет показан возле курсора
timeout — время в милисекундах, через которое ToolTip будет скрыт, если число положительное, либо уничтожен, если отрицательное
2. Hide() — скрытие ToolTip
3. SetText(text) — изменение текста
4. SetTitle(icon, title) — изменение иконки и заголовка
5. Destroy() — уничтожение экземпляра объекта
Основное - это мерцание при частом обновлении информации;
второе - не работает с несколькими мониторами;
третье - нет метода изменения параметров шрифта, фона налету;
четвертое - изменение текста, параметров и отображение tooltip не одним методом.
Основное - это мерцание при частом обновлении информации
Я запустил ваш код, ToolTip довольно заметно мерцает.
не работает с несколькими мониторами
Можете пояснить, в чём тут проблема? У меня один, я не совсем в теме.
третье - нет метода изменения параметров шрифта, фона налету;
четвертое - изменение текста, параметров и отображение tooltip не одним методом.
Не совсем понимаю, зачем это надо, ну ладно, у всех свой способ использования.
А, да это не ToolTip вовсе, просто Gui без полосы заголовка. Нет иконки, нет заголовка, нельзя сделать стиль c хвостиком.
Можете пояснить, в чём тут проблема? У меня один, я не совсем в теме.
Проблема в определении координат границ экрана, ваша версия просто не переходит на другой экран (упирается в край).
Проблема в определении координат границ экрана
А, ну это небольшая проблема, там просто ограничение стоит:
xMax := A_ScreenWidth - W - 10
yMax := A_ScreenHeight - H - 10
Достаточно просто заменить A_ScreenWidth и A_ScreenHeight на значения длины и ширины общего экрана.
Я запустил ваш код, ToolTip довольно заметно мерцает.
Сравни:
SetBatchLines,-1
Tooltip1 := new ToolTip({ text: " Look!"})
loop
{
sleep,30
mousegetpos,mx,my,mw,mc
;tooltip % a_tickcount "`n" mx "`n" my "`n" mw "`n" mc
Tooltip1.SetText(a_tickcount "`n" mx "`n" my "`n" mw "`n" mc)
Tooltip1.Show()
}
Ну да, ваш меньше мерцает, но это не ToolTip. Обычное окно можно, насколько я помню, вообще немерцающим сделать, используя WS_EX_COMPOSITED.
Попробовал, все равно "поблескивает".
У меня нет.
Gui, New, % "+E" . (WS_EX_COMPOSITED := 0x2000000) | (WS_EX_LAYERED := 0x80000), Window without flickering
Gui, Font, s26 c0044AA, Consolas
Gui, Add, Text, center hwndhTime, 000:00:00:00
Gui, Show
SetTimer, Time, 1
Return
Time:
GuiControl,, %hTime%, % A_Hour . ":" . A_Min . ":" . A_Sec . ":" . SubStr(A_MSec, 1, 2)
Return
GuiEscape:
GuiClose:
ExitApp
Я WS_EX_LAYERED не поставил. И правда не мерцает.
Upd:
После включения прозрачности снова начинает мерцать.
После включения прозрачности снова начинает мерцать
Скорее всего, прозрачность и WS_EX_COMPOSITED несовместимы.
Если уж нужно много графических фишек, лучше использовать GDI Plus (Gdip.ahk). А ToolTip — это просто небольшое информационное окно, появляющееся на короткое время. Есть ли смысл там делать столько всяких наворотов?
Исправил пару багов.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться